支付宝支付

my.BaaS.pay(OBJECT)

OBJECT 参数说明

参数类型必填参数描述
totalCostNumberY支付总额,单位:元
merchandiseDescriptionStringY支付宝支付凭证-商品详情的内容
merchandiseSchemaIDIntegerN商品数据表 ID,可用于定位用户购买的物品
merchandiseRecordIDStringN商品数据行 ID,可用于定位用户购买的物品
merchandiseSnapshotObjectN根据业务需求自定义的数据

举例:开发者有一个 Article 表, 里面有免费 / 付费的文章, 当用户对一篇付费文章进行支付时, 则可以将 Article 表的 ID 作为 merchandiseSchemaID, 文章记录的 ID 作为你 merchandiseRecordID 传入到 my.BaaS.pay(object) 写进支付订单记录。当用户阅读此付费文章时, 则可以通过 merchandiseSchemaID, merchandiseRecordID 来查询用户是否付费。

支付成功返回参数说明

参数类型说明
resultCodeString支付宝支付状态码
transaction_noString支付宝支付流水号
trade_noString支付宝支付交易 ID, 业务方在支付宝后台对账时可看到此字段

resultCode是支付宝返回的状态码,resultCode: '9000' 为支付成功,resultCode: '8000' 为正在处理中,具体以知晓云后台支付订单的状态为准。请参考订单查询接口文档

示例代码

  1. // 支付示例代码
  2. let params = {
  3. totalCost: 0.1,
  4. merchandiseDescription: '深蓝色秋裤'
  5. }
  6. my.BaaS.pay(params).then(res => {
  7. // success. 支付请求成功响应,可以在 res 中拿到 transaction_no 和支付结果信息
  8. }, err => {
  9. // 未完成用户授权或发生网络异常等
  10. console.log(err)
  11. })

支付成功返回示例

  1. {
  2. resultCode: '9000',
  3. transaction_no: 'Q6lgbKPmNlGXKbfcHGuWiT0KeksLSZvC',
  4. trade_no: '4DySOWgNssfu5XsiTH9Ek2f5m9jWTwTw'
  5. }

为了方便开发者清楚区分用户取消支付还是支付失败,我们为其增加了错误类型,你可以通过像以下操作,对支付状态进行判断:

  1. my.BaaS.pay(params).then(res => {
  2. // success. 支付请求成功响应。
  3. }, err => {
  4. // PayError 对象
  5. console.log(err.code, err.message)
  6. })

PayError 对象结构请参考 PayError 错误码详解

接口说明

小程序支付模式图-来自支付宝官方

my.BaaS.pay(object) 实际上做了发起支付统一下单请求,及调用 my.tradePay() 接口等操作。开发者只需要调用 my.BaaS.pay(object) , 传入必填参数即可发起支付宝支付。用户感知到的现象就是, 点击付款按钮,弹出支付弹框, 要求用户输入密码, 用户输入正确的密码后完成支付流程, 停在支付结果页。用户可在支付结果页点击返回商家按钮回到支付前界面。

PayError 错误码详解(仅支付宝)

支付错误状态码与支付宝小程序支付接口的状态码一致。

错误码对应的错误信息如下:

'4000' 订单支付失败

'6001' 用户中途取消

'6002' 网络连接出错

'6004' 支付结果未知(有可能已经支付成功),请查询商户订单列表中订单的支付状态

'99' 用户点击忘记密码导致快捷界面退出(only iOS)