百度智能小程序 通知支付狀態(tài)

2020-09-05 15:01 更新

使用場景

智能小程序訂單支付成功后,百度收銀臺會主動調(diào)用小程序開發(fā)者的支付回調(diào)地址(在開發(fā)者平臺開通支付時注冊的支付回調(diào)地址),通知開發(fā)者該訂單支付成功。

接口注意事項

  1. 冪等性:開發(fā)者接口需要具備冪等性平臺技術術語---冪等性
  2. 超時時間:開發(fā)者接口的耗時要求小于 2s(超過 2s 會觸發(fā)平臺的超時重試,每 2 分鐘/次,共計 200 次,回調(diào)失敗訂單會保持“已付款”狀態(tài),無法核銷,導致訂單金額無法順利進入企業(yè)資產(chǎn));
  3. 返回值判斷:errno 為 0 表示開發(fā)者已經(jīng)成功收到支付信息,并妥善處理,errno 不為 0 將認為是同步支付信息失敗,當同步支付信息失敗時,平臺會發(fā)起重試,每 2 分鐘/次,共計 200 次,訂單會鎖定“已付款”狀態(tài),無法核銷,導致訂單金額無法順利進入企業(yè)資產(chǎn);
  4. 回調(diào)地址服務器部署:如果回調(diào)接口部署在阿里云或有網(wǎng)關準入限制,請參考文檔阿里云安全組設置中的 IP 地址設置白名單。
  • 回調(diào)地址配置后要確認服務審核是“審核通過”狀態(tài),審核中會導致無法收到回調(diào)地址,詳見服務審核注意事項。
  • 服務器調(diào)用開發(fā)者回調(diào)接口不成功或開發(fā)者返回參數(shù)有誤,平臺會發(fā)起重試,每 2 分鐘/次,共計 200 次,如重試后仍舊無法回調(diào),訂單會鎖定“已付款”狀態(tài),無法核銷,導致訂單金額無法順利進入企業(yè)資產(chǎn)。還請開發(fā)者仔細根據(jù)文檔操作。如有無法核銷的“已付款訂單,請開發(fā)者提供 appId、orderId、服務名稱、公司名稱、問題描述發(fā)送至問題反饋郵箱:jiaoyi-ask@baidu.com。

通知參數(shù)說明

參數(shù) 參數(shù)名稱 類型 說明 示例
userId 用戶 ID Long 百度收銀臺用戶 ID 149235070
orderId 訂單 ID Long 百度平臺訂單 ID【冪等性標識參數(shù)】(用于重入判斷) 800020199
unitPrice 單價 Integer 單位:分 800
count 數(shù)量 Integer 數(shù)量 2
totalMoney 總金額 Integer 訂單的實際金額,單位:分。 1600
payMoney 實付金額 Integer 扣除各種優(yōu)惠后用戶還需要支付的金額,單位:分 1200
promoMoney 營銷金額 Integer 營銷優(yōu)惠金額 100
hbMoney 紅包支付金額 Integer 紅包支付金額 100
hbBalanceMoney 余額支付金額 Integer 余額支付金額 100
giftCardMoney 抵用券金額 Integer 抵用券金額 100
dealId 百度收銀臺憑證 Long 百度收銀臺的財務結算憑證 7423328
payTime 支付時間 Integer 支付完成時間,時間戳。 1463037529
promoDetail 促銷詳情 Object 訂單參與的促銷優(yōu)惠的詳細信息
payType 支付渠道 Integer 支付渠道值 9101
partnerId 支付平臺 Integer 支付平臺標識值 1000000003
status 訂單支付狀態(tài) Integer 1:未支付;2:已支付;-1:訂單取消。 2
tpOrderId 開發(fā)者訂單ID String 開發(fā)者系統(tǒng)中創(chuàng)建的唯一訂單號 33330020199
returnData 開發(fā)者透傳數(shù)據(jù) Object 開發(fā)者下單時傳入的數(shù)據(jù)
rsaSign rsa 簽名 String rsa 簽名字符串 全部參數(shù)參與簽名,詳見簽名與驗簽
這里對全部參數(shù)簽名是對收到的【通知支付狀態(tài)】平臺回調(diào)的所有 POST 參數(shù)進行簽名(這里所指的參數(shù)不包含 rsasign ,故不需要參與簽名),空值參數(shù)同樣需要參與簽名,建議格式:key=&key2=value2 ,如沒有對回調(diào)中收到的所有參數(shù)簽名,會導致驗簽不通過,如果開發(fā)者 URL 里包含 GET 類型參數(shù),不會參與簽名。注意:驗簽需要使用正確的平臺公鑰,可以在服務詳情中查詢,詳見簽名與驗簽第 8 項內(nèi)容。

返回參數(shù)說明

名稱 類型 是否必須 示例值 描述
errno Integer 0 返回碼
msg String success 返回信息
data Object {"isConsumed":2} 返回數(shù)據(jù)

data 字段為 JSON 格式,參數(shù)如下:

名稱 類型 是否必須 示例值 描述
isConsumed Integer 2 是否標記核銷
isErrorOrder Integer 1 是否異常訂單(如需主動發(fā)起異常退款,需將此字段設置為 1)

isConsumed 字段參數(shù)枚舉值如下:

取值 描述
1 未消費
2 已消費

isConsumed 重要性

為必傳參數(shù)(不傳會觸發(fā)異常退款),用來標記該訂單是否已消費。

小程序接入為支付成功即消費場景,該字段需設置為 2 。(字段不設置為 2 訂單不會變更為“已消費”)如 isConsumed 值不返回 2 ,“已付款”狀態(tài)的訂單金額不能順利進入企業(yè)余額。

通知觸發(fā)條件

用戶支付成功,通過了各項支付后校驗之后,會調(diào)用此接口,將支付信息同步給開發(fā)者。

如未收到回調(diào)請求,請檢查服務器網(wǎng)關是否有準入限制,如有限制參照阿里云安全組設置中的 IP 地址設置白名單;開發(fā)者接口的耗時要求小于 2s 。(超過 2s 會觸發(fā)平臺的超時重試,每 2 分鐘/次,共計 200 次,回調(diào)失敗訂單會保持“已付款”狀態(tài),無法核銷,導致訂單金額無法順利進入企業(yè)資產(chǎn))。

開發(fā)者服務器通知參數(shù)獲取

  1. 百度收銀臺是用 POST 方式發(fā)送通知信息,參數(shù)以 URL param 的方式返回。
    PHP 服務推薦參數(shù)獲取方式:$_POST['xxx']。
    Java 服務推薦參數(shù)獲取方式:@RequestParam(value="xxx")。
  2. 百度收銀臺主動發(fā)起通知,該方式才會被啟用。
  3. 程序執(zhí)行完后須同步返回符合要求的 JSON 字符串。如果開發(fā)者返回給百度收銀臺的字符不是合法 JSON 或者解析出來的 errno 不為 0,會對訂單發(fā)起異常退款(所付款項及資產(chǎn)將全數(shù)退還給用戶)。

開發(fā)者通知參數(shù)合法性驗證

當百度收銀臺通過調(diào)用接口同步支付信息給開發(fā)者開發(fā)者時,開發(fā)者獲得這些數(shù)據(jù)時,必須進行如下處理:

  1. 驗證簽名
    首先必需驗證簽名,然后驗證是否是百度收銀臺發(fā)來的通知,請參見簽名與驗簽。
  2. 業(yè)務數(shù)據(jù)處理注意事項
    開發(fā)者需要驗證該通知數(shù)據(jù)中的 tpOrderId 是否為開發(fā)者系統(tǒng)中創(chuàng)建的訂單號,并判斷 totalMoney 是否確實為該訂單的實際金額(即開發(fā)者訂單創(chuàng)建時的金額),上述有任何一個驗證不通過,則表明本次通知是異常通知,務必忽略。在上述驗證通過后開發(fā)者必須根據(jù)百度收銀臺不同類型的業(yè)務通知,正確的進行不同的業(yè)務處理,并且過濾重復的通知結果數(shù)據(jù)。如果開發(fā)者需要對同步返回的數(shù)據(jù)做驗簽,必須通過服務端的簽名驗簽代碼邏輯來實現(xiàn)。如果開發(fā)者未正確處理業(yè)務通知,存在潛在的風險,開發(fā)者自行承擔因此而產(chǎn)生的所有損失。

DEMO

  • 入?yún)?REQUEST) DEMO:
https://xxx.tpbusiness.xxx/SyncPayInfo?userId=149235070&orderId=800020199&unitPrice=800&count=2&totalMoney=1600&payMoney=1200&promoMoney=100&hbMoney=100&hbBalanceMoney=100&giftCardMoney=100&dealId=7423328&payTime=1463037529&promoDetail=&payType=9101&partnerId=1000000003&status=2&tpOrderId=33330020199&returnData=&rsaSign=Gzu1RT2toJSDthcLPG1ZWROI3jzvxFtO7yCPUqMT3L7cmnARncm5IIIQ6x+7S/02zWxr5FC9945WFSurO9kepVbU7YS6Lh9SEVQhvTO0YKG7TlLFTpH3Ik7JeHQalAKXYe/jNREDpHmTF9Jrq/wABeZGYXJn1M75A37h9zUt+kw=
  • 返回(RESPONSE) DEMO:
{"errno": 0, "msg": "success", "data": {"isConsumed": 2}}

如處理支付回調(diào)的過程中開發(fā)者端參數(shù)異常、其他異常,返回以下參數(shù)進行異常退款:

{"errno": 0, "msg": "success", "data": {"isErrorOrder": 1, "isConsumed": 2}

小程序場景 isConsumed 返回值一定要為 2 ,(字段不設置為 2 訂單不會變更為“已消費”)不按照要求值返回參數(shù),用戶已付款金額不能順利進入企業(yè)余額。

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號