swan.requestPolymerPayment

基础库 1.8.5 版本开始支持。使用工具调试时为模拟支付,使用真机调试时可查看真实支付结果。在工具和真机中的实现有区别,详见API 实现差异百度收银台支付 swan.requestPolymerPayment - 图1

解释: 百度收银台,聚合了主流的百度钱包、微信、支付宝、网银等多种支付方式,方便开发者一站式快速接入多种支付渠道,让百度用户能在智能小程序场景下,直接完成支付、交易闭环,提升用户支付体验的同时,提高智能小程序的订单转化率。

为了帮助开发者调用收银台接口,我们提供了Go语言版本封装了签名&验签、HTTP接口请求等基础功能,详见下载小程序支付demo百度收银台支付 swan.requestPolymerPayment - 图2

了解更多信息,请查看百度收银台支付开通指引百度收银台支付 swan.requestPolymerPayment - 图3支付功能开发百度收银台支付 swan.requestPolymerPayment - 图4

方法参数

Object object

object参数说明

属性名类型必填默认值说明
orderInfoObject订单信息
successFunction接口调用成功的回调函数
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

orderInfo 参数说明

参数必填说明
dealId跳转百度收银台支付必带参数之一,是百度收银台的财务结算凭证,与账号绑定的结算协议一一对应,每笔交易将结算到dealId对应的协议主体。详见核心参数获取与组装
appKey支付能力开通后分配的支付appKey,用以表示应用身份的唯一ID,在应用审核通过后进行分配,一经分配后不会发生更改,来唯一确定一个应用。详见核心参数获取与组装。)。
totalAmount订单金额,单位为人民币分。
tpOrderId商户平台自己记录的订单ID,当支付状态发生变化时,会通过此订单ID通知商户。
dealTitle订单的名称
signFieldsRange固定值1
rsaSignappKey+dealId+totalAmount+tpOrderId进行RSA加密后的签名,防止订单被伪造。签名过程见 签名与验签百度收银台支付 swan.requestPolymerPayment - 图5
bizInfo订单详细信息,需要是一个可解析为JSON Object的字符串。字段内容见: bizInfo组装百度收银台支付 swan.requestPolymerPayment - 图6

示例

扫码体验

百度收银台支付 swan.requestPolymerPayment - 图7请使用百度APP扫码

图片示例

百度收银台支付 swan.requestPolymerPayment - 图8

百度收银台支付 swan.requestPolymerPayment - 图9

百度收银台支付 swan.requestPolymerPayment - 图10

代码示例1 - 简单支付示例

在开发者工具中预览效果

  1. Page({
  2. data: { },
  3. requestPolymerPayment(e) {
  4. swan.request({
  5. url: 'https://mbd.baidu.com/ma/nuomi/createorder',
  6. success: res => {
  7. console.log(res)
  8. res.data.data.dealTitle = '百度小程序Demo支付测试';
  9. let data = res.data;
  10. if (data.errno !== 0) {
  11. console.log('create order err', data);
  12. return;
  13. }
  14. swan.requestPolymerPayment({
  15. orderInfo: data.data,
  16. bannedChannels: this.getData('bannedChannels'),
  17. success: res => {
  18. swan.showToast({
  19. title: '支付成功',
  20. icon: 'success'
  21. });
  22. },
  23. fail: err => {
  24. swan.showToast({
  25. title: err.errMsg,
  26. icon: 'none'
  27. });
  28. console.log('pay fail', err);
  29. }
  30. });
  31. },
  32. fail: err => {
  33. swan.showToast({
  34. title: '订单创建失败',
  35. icon: 'none'
  36. });
  37. console.log('create order fail', err);
  38. }
  39. });
  40. }
  41. });

代码示例2 - 复杂支付示例

在开发者工具中预览效果

  1. // 这里只做字段展示,详细示例请在代码片段中查看
  2. swan.requestPolymerPayment({
  3. orderInfo: {
  4. "dealId": "470193086",
  5. "appKey": "MMMabc",
  6. "totalAmount": "1",
  7. "tpOrderId": "3028903626",
  8. "dealTitle": "智能小程序Demo支付测试",
  9. "signFieldsRange": "1",
  10. "rsaSign": '',
  11. "bizInfo": ''
  12. },
  13. success: res => {
  14. swan.showToast({
  15. title: '支付成功',
  16. icon: 'success'
  17. });
  18. },
  19. fail: err => {
  20. swan.showToast({
  21. title: JSON.stringify(err)
  22. });
  23. console.log('pay fail', err);
  24. }
  25. });

错误码

Android

错误码说明
1001执行失败

iOS

错误码说明
202解析失败,请检查参数是否正确
10002网络请求失败
10005系统拒绝

Bug & Tip

  • 服务审核未通过会导致调起失败“商品不存在”等错误,需要移步“开发者平台-支付管理”查看服务审核状态;
  • 整个orderInfo 是个 json 对象;
  • bizInfo 这个键值是一个以字符串形式存放的json对象;
  • 在调起收银台过程中,如开发者在任何一个环节没有严格按照文档要求操作均会导致此“签名错误”,请认真阅读文档。