百度智能小程序 調(diào)起百度收銀臺(tái)

2020-09-05 15:02 更新

swan.requestPolymerPayment

基礎(chǔ)庫 1.8.5 版本開始支持。使用工具調(diào)試時(shí)為模擬支付,使用真機(jī)調(diào)試時(shí)可查看真實(shí)支付結(jié)果。

解釋: 百度收銀臺(tái),聚合了多種主流的支付方式,包括:百度錢包、微信、支付寶、網(wǎng)銀等,方便開發(fā)者一站式快速接入多種支付渠道,讓百度用戶能在智能小程序場景下,直接完成支付、交易閉環(huán),提升用戶支付體驗(yàn)的同時(shí),提高智能小程序的訂單轉(zhuǎn)化率。

為了幫助開發(fā)者調(diào)用收銀臺(tái)接口,我們提供了 Go 語言版本封裝了簽名&驗(yàn)簽、HTTP 接口請(qǐng)求等基礎(chǔ)功能,詳見 下載小程序支付 demo。

方法參數(shù):Object object

object 參數(shù)說明:

屬性名類型必填默認(rèn)值說明
orderInfoObject訂單信息
successFunction接口調(diào)用成功的回調(diào)函數(shù)
failFunction接口調(diào)用失敗的回調(diào)函數(shù)
completeFunction接口調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會(huì)執(zhí)行)

orderInfo 參數(shù)說明:

參數(shù)必填說明
dealId跳轉(zhuǎn)百度收銀臺(tái)支付必帶參數(shù)之一,是百度收銀臺(tái)的財(cái)務(wù)結(jié)算憑證,與賬號(hào)綁定的結(jié)算協(xié)議一一對(duì)應(yīng),每筆交易將結(jié)算到 dealId 對(duì)應(yīng)的協(xié)議主體。詳見核心參數(shù)獲取與組裝。
appKey支付能力開通后分配的支付 appKey,用以表示應(yīng)用身份的唯一 ID,在應(yīng)用審核通過后進(jìn)行分配,一經(jīng)分配后不會(huì)發(fā)生更改,來唯一確定一個(gè)應(yīng)用。詳見核心參數(shù)獲取與組裝。
totalAmount訂單金額,單位為人民幣分。
tpOrderId商戶平臺(tái)自己記錄的訂單 ID,當(dāng)支付狀態(tài)發(fā)生變化時(shí),會(huì)通過此訂單 ID 通知商戶。
dealTitle訂單的名稱
signFieldsRange用于區(qū)分驗(yàn)簽字段范圍,signFieldsRange 的值:0:原驗(yàn)簽字段 appKey+dealId+tpOrderId;1:包含 totalAmount 的驗(yàn)簽,驗(yàn)簽字段包括 appKey+dealId+tpOrderId+totalAmount,固定值為 1
rsaSign對(duì)appKey+dealId+totalAmount+tpOrderId進(jìn)行 RSA 加密后的簽名,防止訂單被偽造。簽名過程見 簽名與驗(yàn)簽。
bizInfo訂單詳細(xì)信息,需要是一個(gè)可解析為 JSON Object 的字符串。字段內(nèi)容見: bizInfo 組裝。

代碼示例 1 

在開發(fā)者工具中打開

<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', // 僅為示例,并非真實(shí)的接口地址,開發(fā)者從真實(shí)接口獲取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: '訂單創(chuàng)建失敗',
                    icon: 'none'
                });
                console.log('create order fail', err);
            }
        });
    }
});

說明:

  • 服務(wù)審核未通過會(huì)導(dǎo)致調(diào)起失敗“商品不存在”等錯(cuò)誤,需要移步“開發(fā)者平臺(tái)-支付管理”查看服務(wù)審核狀態(tài);
  • 整個(gè) orderInfo 是個(gè) json 對(duì)象;
  • bizInfo 這個(gè)鍵值是一個(gè)以字符串形式存放的 json 對(duì)象;
  • 在調(diào)起收銀臺(tái)過程中,如開發(fā)者在任何一個(gè)環(huán)節(jié)沒有嚴(yán)格按照文檔要求操作均會(huì)導(dǎo)致此“簽名錯(cuò)誤”,請(qǐng)認(rèn)真閱讀文檔。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)