# 支付 pay
# 版本要求
无,所有机型按规范接入均支持
# 接入流程
- 用户在手表应用中点击购买商品之后,第三方根据自身的链接(需携带openId)生成二维码。
 - 用户使用微信/浏览器等扫码之后跳转到第三方的H5界面,浏览商品之后点击支付。
 - 此时第三方调用小天才的预下单接口,拿到跳转链接和小天才订单号,跳转到链接拉起支付。
 - 用户支付完成之后,跳转到第三方指定的跳转界面中(如果在传参中没有指定则采用默认方式跳转),之后通过回调接口通知第三方回调结果。
 
完整流程见: 网页支付接入 (opens new window)
# 原支付SDK接入流程
WARNING
原支付SDK已弃用,请使用上方方式接入支付功能
# 版本要求
Z6A/Z6S机型 / 1.9.5及以上系统版本
# 调用流程
# 1. 引入支付库 及 app 库
import paysdk from '@system.pay';
import app from '@system.app';
# 2. 获取手表openId
 app.getOpenId({
    appId: xxxxxx, // 服务器为第三方分配的appid,应用唯一标识 注意是Number数字类型
    success: (res) => {
        // 获取手表openId成功
        console.log('getOpenId success: ', res);
        this.openId = res.openId;
    },
    fail() {
        console.log('getOpenId fail: ');
    },
});
# 3. 拼接支付信息,调用支付库
- 传参说明
 
| 字段名 | 字段含义 | 字段类型 | 
|---|---|---|
| appId | 第三方应用 id | String | 
| applicationId | 第三方应用包名 | String | 
| openId | 获取的手表 openId | String | 
| refundOrderId | 第三方订单 id(orderId) | String | 
| title | 订单标题 | String | 
| totalFee | 订单总金额(金额为两位精度的小数) | String | 
| productInfos | 商品信息 | Array | 
其中 productInfos 包含的字段:
| 字段名 | 字段含义 | 字段类型 | 
|---|---|---|
| productId | 商品 Id | String | 
| productName | 商品名称 | String | 
| price | 商品价格(总价) | String | 
| number | 商品数量 | Number | 
- 支付示例
 
let params = {
    appId: 'xxxxxx', // 第三方appId
    applicationId: 'xxx.xxx', // 第三方应用包名
    openId: this.openId, // 手表openId
    refundOrderId: 'order' + Date.now(), // 订单号
    productInfos: [{ number: 1, price: 0.3, productId: '1', productName: 'vip3' }], // 商品信息
    title: '小天才测试', // 订单标题 如 xxx年卡会员  xxx付费专辑等
    totalFee: 0.3, // 支付总金额 是productInfos数组所有子项price的和
};
paysdk.pay({
    orderInfo: JSON.stringify(params), // 注意这里要转成字符串
    success: (data) => {
        this.payresult = '支付成功:' + JSON.stringify(data);
        console.log(this.payresult);
    },
    fail: (info, code) => {
        this.payresult = '支付失败:' + info + ' code:' + code;
        console.log(this.payresult);
    },
});
支付成功返回
{
    "code": 0,
    "message": "payment success",
    "result": '{"refundOrderId":"xxx","orderId":"xxx","status":2}'
}
支付失败返回
| code 值 | 描述 | 可能原因 | 
|---|---|---|
| 1 | 支付失败 | 家长未设置消费额度、超出额度(会显示限额提示页面) | 
| 2 | 支付参数异常 | 参数少写多写,格式不对等 | 
# 4. 支付结果回调
当支付完成后,小天才服务器调用第三方提供的接口将支付结果通知到第三方服务器
详见:支付结果回调说明文档 (opens new window)