调起百度收银台 swan.requestPolymerPayment

百度收银台接口2.0 说明

需查阅百度收银台 1.0 接口,点击详情。

本文阅读对象:百度智能小程序接入支付能力涉及的技术架构师,研发工程师,测试工程师,系统运维工程师。

支付 API 列表

· 调起百度收银台
· 通知支付状态
· 查询订单(升级)
· 关闭订单(新增)
· 申请退款(升级)
· 查询退款(新增)
· 通知退款状态
· 下载订单对账单
· 下载资金账单

支付 2.0 接口改动范围

  1. 新增关闭订单、查询退款 API ;
  2. 查询订单升级:支持开发者在未收到支付状态通知时,主动查询订单状态;同时可通过该接口获取发生交易的小程序用户 openid 、小程序 appkey 、小程序 appid ;
  3. 申请退款升级:简化退款流程,去掉原接口中「取消核销」、「请求业务方退款审核」步骤,注意取消「请求业务方退款审核」,入参时isSkipAudit需设为 1 ;

调起百度收银台 swan.requestPolymerPayment

基础库 1.8.5 版本开始支持。使用工具调试时为模拟支付,使用真机调试时可查看真实支付结果。

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

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

想要更具体了解关于百度收银台开通、 API 、后台操作的详细内容,请参考对应的参考文档:

方法参数

Object object
object 参数说明

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

orderInfo 参数说明

参数类型必填说明
dealIdString跳转百度收银台支付必带参数之一,是百度收银台的财务结算凭证,与账号绑定的结算协议一一对应,每笔交易将结算到 dealId 对应的协议主体。详见核心参数获取与组装
appKeyString支付能力开通后分配的支付 appKey,用以表示应用身份的唯一 ID ,在应用审核通过后进行分配,一经分配后不会发生更改,来唯一确定一个应用。详见核心参数获取与组装
totalAmountString订单金额(单位:人民币分)。注:小程序测试包测试金额不可超过 1000 分
tpOrderIdString小程序开发者系统创建的唯一订单 ID ,当支付状态发生变化时,会通过此订单 ID 通知开发者。
dealTitleString订单的名称。
signFieldsRangeString用于区分验签字段范围,signFieldsRange 的值:0:原验签字段 appKey+dealId+tpOrderId;1:包含 totalAmount 的验签,验签字段包括appKey+dealId+tpOrderId+totalAmount。固定值为 1 。
rsaSignStringappKey+dealId+totalAmount+tpOrderId进行 RSA 加密后的签名,防止订单被伪造。签名过程见签名与验签
bizInfoString订单详细信息,需要是一个可解析为 JSON Object 的字符串。字段内容见: bizInfo 组装

代码示例

  • SWAN
  • JS
  1. <view class="wrap">
  2. <view class="card-area">
  3. <button bind:tap="requestPolymerPayment" type="primary" hover-stop-propagation="true">支付0.01元</button>
  4. </view>
  5. </view>
  1. Page({
  2. requestPolymerPayment(e) {
  3. swan.request({
  4. // 仅为示例,并非真实的接口地址,开发者从真实接口获取orderInfo的值
  5. url: 'https://mbd.baidu.com/xxx',
  6. success: res => {
  7. res.data.data.dealTitle = '百度小程序Demo支付测试';
  8. let data = res.data;
  9. if (data.errno !== 0) {
  10. console.log('create order err', data);
  11. return;
  12. }
  13. swan.requestPolymerPayment({
  14. orderInfo: data.data,
  15. success: res => {
  16. swan.showToast({
  17. title: '支付成功',
  18. icon: 'success'
  19. });
  20. console.log('pay success', res);
  21. },
  22. fail: err => {
  23. swan.showToast({
  24. title: err.errMsg,
  25. icon: 'none'
  26. });
  27. console.log('pay fail', err);
  28. }
  29. });
  30. },
  31. fail: err => {
  32. swan.showToast({
  33. title: '订单创建失败',
  34. icon: 'none'
  35. });
  36. console.log('create order fail', err);
  37. }
  38. });
  39. }
  40. });

说明

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