创新互联百度小程序教程:swan.requestPolymerPayment

  • swan.requestPolymerPayment
    • 方法参数
      • object 参数说明
      • orderInfo 参数说明
    • 示例
      • 图片示例
      • 代码示例
    • 错误码
      • Android
      • iOS
    • Bug & Tip

    swan.requestPolymerPayment

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

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

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

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

    • 百度收银台支付简介
    • 百度收银台支付开通指引
    • 支付功能 API 开发
    • 支付管理后台操作指引

    Web 态说明:
    Web 态登录需要跳转至收银台页面,支付成功后再跳转回小程序页面,具体支付流程如下:

    如图,由于在 Web 态存在页面跳转的过程,原调用 API 的页面的 JS 上下文状态会丢失,支付完成不会触发该 API 的 success 或者 fail 回调函数(仅在参数校验失败时会触发 fail 回调),因此开发者需要在结果页( orderInfo.payResultUrl 所指定的页面)做好支付状态检测。

    方法参数

    Object object

    object 参数说明

    属性名 类型 必填 默认值 说明 Web 态说明
    orderInfo Object 是 订单信息
    success Function 否 接口调用成功的回调函数 Web 态内,接口调用成功不会触发 success
    fail Function 否 接口调用失败的回调函数 Web 态内,仅参数校验失败会触发 fail
    complete Function 否 接口调用结束的回调函数(调用成功、失败都会执行)

    orderInfo 参数说明

    参数 必填 默认值 说明
    dealId 是 跳转百度收银台支付必带参数之一,是百度收银台的财务结算凭证,与账号绑定的结算协议一一对应,每笔交易将结算到 dealId 对应的协议主体。详见核心参数获取与组装
    appKey 是 支付能力开通后分配的支付 appKey ,用以表示应用身份的唯一 ID ,在应用审核通过后进行分配,一经分配后不会发生更改,来唯一确定一个应用。详见核心参数获取与组装
    totalAmount 是 订单金额(单位:人民币分)
    tpOrderId 是 商户平台自己记录的订单 ID ,当支付状态发生变化时,会通过此订单 ID 通知商户
    dealTitle 是 订单的名称
    signFieldsRange 是 用于区分验签字段范围。0:原验签字段 appKey+dealId+tpOrderId ;1:包含 totalAmount 的验签,验签字段包括 appKey+dealId+tpOrderId+totalAmount ,固定值为 1
    rsaSign 是 对appKey+dealId+totalAmount+tpOrderId进行 RSA 加密后的签名,防止订单被伪造。签名过程见 签名与验签
    bizInfo 是 订单详细信息,需要是一个可解析为 JSON Object 的字符串。字段内容见:bizInfo 组装
    payResultUrl 否 当前页面 path Web 态小程序支付成功后跳回的页面路径,例如:’/pages/payResult/payResult’

    示例

    在开发者工具中打开

    在开发者工具中打开

    在 WEB IDE 中打开

    扫码体验

    代码示例

    请使用百度APP扫码

    图片示例

    代码示例

    • SWAN
    • JS
     
     
     
     
     
     
    1. Page({
    2. onLoad(query) {
    3. // 首次进入页面时,检测支付状态
    4. // web化支付后跳转回本页面时,也在此检测支付状态
    5. this.updatePayStatus(query.tpOrderId);
    6. },
    7. requestPolymerPayment(e) {
    8. swan.request({
    9. // 仅为示例,并非真实的接口地址,开发者从真实接口获取orderInfo的值
    10. url: 'https://mbd.baidu.com/xxx',
    11. success: res => {
    12. let {orderInfo} = res;
    13. // Web 态中,支付完成后跳转的页面路径(本例中跳转回当前页面:pages/index/index)
    14. // 携带 tpOrderId 参数,方便跳转后从服务端查询订单信息
    15. orderInfo.payResultUrl = '/pages/index/index?tpOrderId=' + orderInfo.tpOrderId;
    16. swan.requestPolymerPayment({
    17. orderInfo: orderInfo,
    18. bannedChannels: this.getData('bannedChannels'),
    19. success: res => {
    20. // 更新支付状态显示。
    21. // Web 态中不进入 success 回调,而是跳转回本页面,因此在onload中也要检测支付状态
    22. this.updatePayStatus(orderInfo.tpOrderId);
    23. },
    24. fail: err => {
    25. swan.showModal({
    26. title: err.errCode,
    27. content: err.errMsg
    28. });
    29. console.log('pay fail', err);
    30. }
    31. });
    32. },
    33. fail: err => {
    34. swan.showToast({
    35. title: '支付失败',
    36. icon: 'none'
    37. });
    38. }
    39. });
    40. },
    41. updatePayStatus(tpOrderId) {
    42. if (!tpOrderId) {
    43. return;
    44. }
    45. // 通过开发者服务端接口,检测支付状态
    46. swan.request({
    47. // 仅为示例,并非真实的接口地址
    48. url: 'https://mbd.baidu.com/xxx/checkPayStatus',
    49. data: {tpOrderId},
    50. success: res => {
    51. // 仅为示例,具体判断规则由开发者服务端接口返回值决定。
    52. if (res.payStatus === 'success') {
    53. swan.showToast({
    54. title: '支付成功',
    55. icon: 'success'
    56. });
    57. }
    58. }
    59. });
    60. }
    61. });

    错误码

    Android

    错误码 说明
    1001 执行失败

    iOS

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

    Bug & Tip

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

    分享标题:创新互联百度小程序教程:swan.requestPolymerPayment
    分享路径:http://xwwzsj.com/article/cdjdhoe.html

    其他资讯

    售后响应及时

    7×24小时客服热线

    数据备份

    更安全、更高效、更稳定

    价格公道精准

    项目经理精准报价不弄虚作假

    合作无风险

    重合同讲信誉,无效全额退款