微信JSAPI支付集成(微信小程序)
此文档适用于在微信小程序发起支付。特别注意,小程序要接入海外支付,必须主体是海外公司,例如公司收加币,就需要主体是加拿大公司。 中国境内公司申请的小程序无法接入海外支付。
API 请求
端点
https://api.iotpaycloud.com/v1/create_order
方法
POST
头部
Content-Type: application/x-www-form-urlencoded
参数说明
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 | 
|---|---|---|---|---|---|
| 商户ID | mchId | 是 | String(30) | 20001222 | 支付中心分配的商户号 | 
| 商户订单号 | mchOrderNo | 是 | String(30) | 20160427210604000490 | 商户生成的订单号,请保证唯一性 | 
| 渠道ID | channelId | 是 | String(24) | WX_JSAPI | 小程序接口 | 
| 币种 | currency | 是 | String(3) | CAD | 三位货币代码,加币:CAD | 
| 支付金额 | amount | 是 | int | 100 | 支付金额,单位分 | 
| 客户端IP | clientIp | 是 | String(32) | 210.73.10.148 | 客户端IP地址 | 
| 设备 | device | 否 | String(64) | WEB | 终端设备号(门店号或收银设备ID),注意:PC网页或公众号内支付请传"WEB | 
| 支付结果回调URL | notifyUrl | 是 | String(200) | http://xxx.com/notify.php | 支付结果回调URL | 
| 商品主题 | subject | 是 | String(64) | 测试商品 | 商品主题 | 
| 商品描述信息 | body | 是 | String(255) | xxpay测试商品描述 | 商品描述信息 | 
| 扩展参数1 | param1 | 否 | String(64) | 支付中心回调时会原样返回 | |
| 扩展参数2 | param2 | 否 | String(64) | 支付中心回调时会原样返回 | |
| 附加参数 | extra | 是 | String(512) | {"openId":"o2RvowBf7sOVJf8kJksUEMceaDqo", "type":"minipay","appId":"xxxxxxxxx"} | |
| 子账号 | jobNo | 是 | String(50) | 商户登录名 | |
| 附言 | remarks | 否 | String(200) | 商户的附言 | |
| 签名 | sign | 是 | String(32) | C380BEC2BFD727A4B6845133519F3AD6 | 签名值,详见签名算法 | 
当小程序后端接收到返回值后,将返回值传回小程序前端并调用wx.requestPayment,将以下参数填入进行发起支付:
wx.requestPayment({
  appId: res.data.payParams.appId,
  timeStamp: res.data.payParams.timeStamp,
  nonceStr: res.data.payParams.nonceStr,
  package: res.data.payParams.package,
  signType: res.data.payParams.signType,
  paySign: res.data.payParams.paySign,
  success(res) {
    console.log(res)
    wx.navigateTo({
      url: '',
    })
  },
  fail(res) {
    console.log(res)
    wx.navigateTo({
      url: '',
    })
  },
})支付完成后,商家后台系统仍需根据notify判断是否支付成功或失败
返回结果
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 | 
|---|---|---|---|---|---|
| 返回状态码 | retCode | 是 | String(16) | SUCCESS | SUCCESS/FAIL此字段是通信标识,非交易标识,交易是否成功需要查看resCode来判断 | 
| 返回信息 | retMsg | 否 | String(128) | 签名失败 | 返回信息,如非空,为错误原因 签名失败 参数格式校验错误 | 
以下字段在retCode和resCode都为SUCCESS的时候有返回
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 | 
|---|---|---|---|---|---|
| 支付订单号 | payOrderId | 是 | String | 支付订单号 | |
| 支付参数 | payParams | 是 | Array | 小程序调用支付需要的参数 | |
| 签名 | sign | 是 | String | 签名值 | 
返回错误
更多返回错误代码请看这里
JSAPI 小程序集成部分源码示例
源码下载 点击这里
