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

2020-09-05 15:02 更新

使用場(chǎng)景

業(yè)務(wù)方智能小程序跳轉(zhuǎn)至百度收銀臺(tái),輸入正確的交易密碼之后,即訂單支付成功后,百度收銀臺(tái)會(huì)主動(dòng)調(diào)用業(yè)務(wù)方的的支付回調(diào)地址(開(kāi)發(fā)者平臺(tái)注冊(cè)的支付回調(diào)地址)通知業(yè)務(wù)方該訂單支付成功。

接口注意事項(xiàng)

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

通知參數(shù)說(shuō)明

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

返回參數(shù)說(shuō)明

名稱(chēng) 類(lèi)型 是否必須 示例值 描述
errno Integer 0 返回碼
msg String success 返回信息
data Object {"isConsumed":0} 返回?cái)?shù)據(jù)

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

名稱(chēng) 類(lèi)型 是否必須 示例值 描述
isConsumed Integer 2 是否標(biāo)記核銷(xiāo)
isErrorOrder Integer 1 是否異常訂單(如需主動(dòng)發(fā)起異常退款,需將此字段設(shè)置為 1)

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

取值 描述
1 未消費(fèi)
2 已消費(fèi)

isConsumed 重要性: 為必傳參數(shù)(不傳會(huì)觸發(fā)異常退款),用來(lái)標(biāo)記該訂單是否已消費(fèi)

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

通知觸發(fā)條件

用戶(hù)支付成功,通過(guò)了各項(xiàng)支付后校驗(yàn)之后,會(huì)調(diào)用此接口,將支付信息同步給業(yè)務(wù)方。

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

業(yè)務(wù)方服務(wù)器通知參數(shù)獲取

  1. 百度收銀臺(tái)是用 POST 方式發(fā)送通知信息,參數(shù)以 URL param 的方式返回

    PHP 服務(wù)推薦參數(shù)獲取方式:$_POST['xxx']

    Java 服務(wù)推薦參數(shù)獲取方式:@RequestParam(value="xxx")

  2. 百度收銀臺(tái)主動(dòng)發(fā)起通知,該方式才會(huì)被啟用
  3. 程序執(zhí)行完后須同步返回符合要求的 JSON 字符串。如果商戶(hù)返回給百度收銀臺(tái)的字符不是合法 JSON 或者解析出來(lái)的 errno 不為 0,會(huì)對(duì)訂單發(fā)起異常退款(所付款項(xiàng)及資產(chǎn)將全數(shù)退還給用戶(hù))

業(yè)務(wù)方通知參數(shù)合法性驗(yàn)證

當(dāng)百度收銀臺(tái)通過(guò)調(diào)用接口同步支付信息給給業(yè)務(wù)方時(shí),業(yè)務(wù)方獲得這些數(shù)據(jù)時(shí),必須進(jìn)行如下處理:

  1. 驗(yàn)證簽名首先必需驗(yàn)證簽名,然后驗(yàn)證是否是百度收銀臺(tái)發(fā)來(lái)的通知,請(qǐng)參見(jiàn)簽名與驗(yàn)簽
  2. 業(yè)務(wù)數(shù)據(jù)處理注意事項(xiàng)業(yè)務(wù)方需要驗(yàn)證該通知數(shù)據(jù)中的 tpOrderId 是否為業(yè)務(wù)方系統(tǒng)中創(chuàng)建的訂單號(hào),并判斷 totalMoney 是否確實(shí)為該訂單的實(shí)際金額(即商戶(hù)訂單創(chuàng)建時(shí)的金額),上述有任何一個(gè)驗(yàn)證不通過(guò),則表明本次通知是異常通知,務(wù)必忽略。在上述驗(yàn)證通過(guò)后業(yè)務(wù)方必須根據(jù)百度收銀臺(tái)不同類(lèi)型的業(yè)務(wù)通知,正確的進(jìn)行不同的業(yè)務(wù)處理,并且過(guò)濾重復(fù)的通知結(jié)果數(shù)據(jù)。如果商戶(hù)需要對(duì)同步返回的數(shù)據(jù)做驗(yàn)簽,必須通過(guò)服務(wù)端的簽名驗(yàn)簽代碼邏輯來(lái)實(shí)現(xiàn)。如果商戶(hù)未正確處理業(yè)務(wù)通知,存在潛在的風(fēng)險(xiǎn),商戶(hù)自行承擔(dān)因此而產(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)的過(guò)程中開(kāi)發(fā)者端參數(shù)異常、其他異常,返回以下參數(shù)進(jìn)行異常退款:

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

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


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

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)