调起百度收银台

# swan.requestPolymerPayment

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

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

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

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

方法参数:Object object

object 参数说明

属性名 类型 必填 默认值 说明
orderInfo Object 订单信息
success Function 接口调用成功的回调函数
fail Function 接口调用失败的回调函数
complete Function 接口调用结束的回调函数(调用成功、失败都会执行)

orderInfo 参数说明

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

# 代码示例 1

    <view class="wrap">
        <view class="card-area">
            <button bind:tap="requestPolymerPayment" type="primary" hover-stop-propagation="true">支付0.01元</button>
        </view>
    </view>
    
    Page({
        requestPolymerPayment(e) {
            swan.request({
                url: 'https://mbd.baidu.com/xxx', // 仅为示例,并非真实的接口地址,开发者从真实接口获取orderInfo的值
                success: res => {
                    let data = res.data;
                    if (data.errno !== 0) {
                        console.log('create order err', data);
                        return;
                    }
    
                    let orderInfo = data.data;
    
                    swan.requestPolymerPayment({
                        orderInfo: orderInfo,
                        bannedChannels: this.getData('bannedChannels'),
                        success: res =>  {
                            swan.showToast({
                                title: '支付成功',
                                icon: 'success'
                            });
                            console.log('pay success', res);
                        },
                        fail: err => {
                            swan.showModal({
                                title: err.errCode,
                                content: err.errMsg
                            });
                            console.log('pay fail', err);
                        }
                    });
                },
                fail: err => {
                    swan.showToast({
                        title: '订单创建失败',
                        icon: 'none'
                    });
                    console.log('create order fail', err);
                }
            });
        }
    });
    

    说明

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