新聞中心
- swan.requestPolymerPayment
- 方法參數(shù)
- object 參數(shù)說(shuō)明
- orderInfo 參數(shù)說(shuō)明
- 示例
- 圖片示例
- 代碼示例
- 錯(cuò)誤碼
- Android
- iOS
- Bug & Tip
- 方法參數(shù)
swan.requestPolymerPayment
基礎(chǔ)庫(kù) 1.8.5 版本開始支持。使用工具調(diào)試時(shí)為模擬支付,使用真機(jī)調(diào)試時(shí)可查看真實(shí)支付結(jié)果。在工具和真機(jī)中的實(shí)現(xiàn)有區(qū)別,詳見 API 實(shí)現(xiàn)差異。
解釋:百度收銀臺(tái),聚合了主流的百度錢包、微信、支付寶、網(wǎng)銀等多種支付方式,方便開發(fā)者一站式快速接入多種支付渠道,讓百度用戶能在智能小程序場(chǎng)景下,直接完成支付、交易閉環(huán),提升用戶支付體驗(yàn)的同時(shí),提高智能小程序的訂單轉(zhuǎn)化率。
為了幫助開發(fā)者調(diào)用收銀臺(tái)接口,我們提供了 Go 語(yǔ)言版本封裝了簽名 & 驗(yàn)簽、 HTTP 接口請(qǐng)求等基礎(chǔ)功能,詳見下載小程序支付 demo 。
想要更具體了解關(guān)于百度收銀臺(tái)開通、API、后臺(tái)操作的詳細(xì)內(nèi)容,請(qǐng)參考對(duì)應(yīng)的參考文檔:
- 百度收銀臺(tái)支付簡(jiǎn)介
- 百度收銀臺(tái)支付開通指引
- 支付功能 API 開發(fā)
- 支付管理后臺(tái)操作指引
Web 態(tài)說(shuō)明:
Web 態(tài)登錄需要跳轉(zhuǎn)至收銀臺(tái)頁(yè)面,支付成功后再跳轉(zhuǎn)回小程序頁(yè)面,具體支付流程如下:
如圖,由于在 Web 態(tài)存在頁(yè)面跳轉(zhuǎn)的過(guò)程,原調(diào)用 API 的頁(yè)面的 JS 上下文狀態(tài)會(huì)丟失,支付完成不會(huì)觸發(fā)該 API 的 success 或者 fail 回調(diào)函數(shù)(僅在參數(shù)校驗(yàn)失敗時(shí)會(huì)觸發(fā) fail 回調(diào)),因此開發(fā)者需要在結(jié)果頁(yè)( orderInfo.payResultUrl 所指定的頁(yè)面)做好支付狀態(tài)檢測(cè)。
方法參數(shù)
Object object
object 參數(shù)說(shuō)明
| 屬性名 | 類型 | 必填 | 默認(rèn)值 | 說(shuō)明 | Web 態(tài)說(shuō)明 |
|---|---|---|---|---|---|
| orderInfo | Object | 是 | 訂單信息 | ||
| success | Function | 否 | 接口調(diào)用成功的回調(diào)函數(shù) | Web 態(tài)內(nèi),接口調(diào)用成功不會(huì)觸發(fā) success | |
| fail | Function | 否 | 接口調(diào)用失敗的回調(diào)函數(shù) | Web 態(tài)內(nèi),僅參數(shù)校驗(yàn)失敗會(huì)觸發(fā) fail | |
| complete | Function | 否 | 接口調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會(huì)執(zhí)行) |
orderInfo 參數(shù)說(shuō)明
| 參數(shù) | 必填 | 默認(rèn)值 | 說(shuō)明 |
|---|---|---|---|
| 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)用審核通過(guò)后進(jìn)行分配,一經(jīng)分配后不會(huì)發(fā)生更改,來(lái)唯一確定一個(gè)應(yīng)用。詳見核心參數(shù)獲取與組裝 | |
| totalAmount | 是 | 訂單金額(單位:人民幣分) | |
| tpOrderId | 是 | 商戶平臺(tái)自己記錄的訂單 ID ,當(dāng)支付狀態(tài)發(fā)生變化時(shí),會(huì)通過(guò)此訂單 ID 通知商戶 | |
| dealTitle | 是 | 訂單的名稱 | |
| signFieldsRange | 是 | 用于區(qū)分驗(yàn)簽字段范圍。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 加密后的簽名,防止訂單被偽造。簽名過(guò)程見 簽名與驗(yàn)簽 | |
| bizInfo | 是 | 訂單詳細(xì)信息,需要是一個(gè)可解析為 JSON Object 的字符串。字段內(nèi)容見:bizInfo 組裝 | |
| payResultUrl | 否 | 當(dāng)前頁(yè)面 path | Web 態(tài)小程序支付成功后跳回的頁(yè)面路徑,例如:’/pages/payResult/payResult’ |
示例
在開發(fā)者工具中打開
在開發(fā)者工具中打開
在 WEB IDE 中打開
掃碼體驗(yàn)
代碼示例
請(qǐng)使用百度APP掃碼
圖片示例
代碼示例
- SWAN
- JS
Page({onLoad(query) {// 首次進(jìn)入頁(yè)面時(shí),檢測(cè)支付狀態(tài)// web化支付后跳轉(zhuǎn)回本頁(yè)面時(shí),也在此檢測(cè)支付狀態(tài)this.updatePayStatus(query.tpOrderId);},requestPolymerPayment(e) {swan.request({// 僅為示例,并非真實(shí)的接口地址,開發(fā)者從真實(shí)接口獲取orderInfo的值url: 'https://mbd.baidu.com/xxx',success: res => {let {orderInfo} = res;// Web 態(tài)中,支付完成后跳轉(zhuǎn)的頁(yè)面路徑(本例中跳轉(zhuǎn)回當(dāng)前頁(yè)面:pages/index/index)// 攜帶 tpOrderId 參數(shù),方便跳轉(zhuǎn)后從服務(wù)端查詢訂單信息orderInfo.payResultUrl = '/pages/index/index?tpOrderId=' + orderInfo.tpOrderId;swan.requestPolymerPayment({orderInfo: orderInfo,bannedChannels: this.getData('bannedChannels'),success: res => {// 更新支付狀態(tài)顯示。// Web 態(tài)中不進(jìn)入 success 回調(diào),而是跳轉(zhuǎn)回本頁(yè)面,因此在onload中也要檢測(cè)支付狀態(tài)this.updatePayStatus(orderInfo.tpOrderId);},fail: err => {swan.showModal({title: err.errCode,content: err.errMsg});console.log('pay fail', err);}});},fail: err => {swan.showToast({title: '支付失敗',icon: 'none'});}});},updatePayStatus(tpOrderId) {if (!tpOrderId) {return;}// 通過(guò)開發(fā)者服務(wù)端接口,檢測(cè)支付狀態(tài)swan.request({// 僅為示例,并非真實(shí)的接口地址url: 'https://mbd.baidu.com/xxx/checkPayStatus',data: {tpOrderId},success: res => {// 僅為示例,具體判斷規(guī)則由開發(fā)者服務(wù)端接口返回值決定。if (res.payStatus === 'success') {swan.showToast({title: '支付成功',icon: 'success'});}}});}});
錯(cuò)誤碼
Android
| 錯(cuò)誤碼 | 說(shuō)明 |
|---|---|
| 1001 | 執(zhí)行失敗 |
iOS
| 錯(cuò)誤碼 | 說(shuō)明 |
|---|---|
| 202 | 解析失敗,請(qǐng)檢查參數(shù)是否正確 |
| 10002 | 網(wǎng)絡(luò)請(qǐng)求失敗 |
| 10005 | 系統(tǒng)拒絕 |
Bug & Tip
- Tip:服務(wù)審核未通過(guò)會(huì)導(dǎo)致調(diào)起失敗“商品不存在”等錯(cuò)誤,需要移步“開發(fā)者平臺(tái)-支付管理”查看服務(wù)審核狀態(tài);
- Tip:整個(gè) orderInfo 是個(gè) JSON 對(duì)象;
- Tip:bizInfo 這個(gè)鍵值是一個(gè)以字符串形式存放的 JSON 對(duì)象;
- Tip:在調(diào)起收銀臺(tái)過(guò)程中,如開發(fā)者在任何一個(gè)環(huán)節(jié)沒(méi)有嚴(yán)格按照文檔要求操作均會(huì)導(dǎo)致此“簽名錯(cuò)誤”,請(qǐng)認(rèn)真閱讀文檔。
當(dāng)前名稱:創(chuàng)新互聯(lián)百度小程序教程:swan.requestPolymerPayment
文章轉(zhuǎn)載:http://m.fisionsoft.com.cn/article/cdjdhoe.html


咨詢
建站咨詢

