之前對接支付寶商家扣款的時候,在簽約協議的部分卡了很久,今天把之前遇到的簽約問題彙總記錄一下~ 協議簽約流程 首先幫大家捋一下簽約的順序,便於直觀理解: 其次還需要知道的是,支付寶的商家扣款的簽約介面有兩個: 一個是單獨簽約介面: 另一個是支付並簽約介面: 這兩個介面都可以簽約,主要區別在於簽約的時 ...
之前對接支付寶商家扣款的時候,在簽約協議的部分卡了很久,今天把之前遇到的簽約問題彙總記錄一下~
協議簽約流程
首先幫大家捋一下簽約的順序,便於直觀理解:
其次還需要知道的是,支付寶的商家扣款的簽約介面有兩個:
- 一個是單獨簽約介面:
- 另一個是支付並簽約介面:
這兩個介面都可以簽約,主要區別在於簽約的時候是否涉及支付,可以根據業務場景去確認使用哪個介面簽約。
具體問題一覽
簽約流程看起來比較簡單,但在簽約的各個階段都容易遇到問題,比如:
- 生成的簽約串,為什麼喚不起簽約頁面?? ̄へ ̄
- 為什麼簽約跳轉到支付寶的時候會中轉一下支付寶頁面??(▼皿▼#)
- 簽約完成了之後為啥沒有通知!!(╬ ̄皿 ̄)
- 為什麼我收到通知了但是還是簽約失敗了?!(╥╯^╰╥)
雖然問題很多,不過好在最終都順利解決了,下麵將詳細記錄每個問題的解法,供大家參考~
排查思路
問題一:生成的簽約串,無法喚起簽約界面,報錯“開通失敗”
遇到這個問題後,搜索參考了官方文檔,發現這個報錯的意思就是參數有問題,下次遇到直接檢查參數即可。
以下這些參數都有可能導致這個報錯,在此做一彙總,幫大家避坑、自查:
- external_agreement_no 傳了,但是沒有傳 sign_scene
- external_agreement_no 傳了,但是 sign_scene 是預設值
- channel 錯誤或者為空
- execute_time 下次扣款時間為空,或者 格式不是 yyyy-MM-dd
- period_type = DAY 的時候,period 周期小於 7 天,最小周期不能小於 7 天
- period_type = MONTH 的時候,execute_time > 28 日
- total_amount < single_amount 總扣款金額小於單次扣款金額
- total_payment 總扣款次數為 0
其它喚起簽約常見報錯可參閱官方文檔:
問題二:為什麼簽約跳轉到支付寶的時候會中轉一下支付寶頁面
喚起簽約沒有問題之後,遇到了一個體感不好的地方,就是在喚起簽約跳轉到支付寶的過程中會遇到先跳轉到支付寶頁面的問題,雖然沒有什麼大的影響,但是整體體感上不是很好 =^ =。
這個找了支付寶客服問了下,結果主要是因為我生成的簽約串的拼接方式有問題,使用
alipays://platformapi/startapp?appId=60000157&appClearTop=false&startMultApp=YES&sign_params=
去拼接就可以了,客服給力o( ̄▽ ̄)d
拼接鏈接參考官方文檔:[周期扣款無線端如何喚起簽約] 即可~
其它簽約跳轉常見問題可參閱官方文檔:
問題三:簽約完成了之後為啥沒有通知
原因一:簽約失敗了
這個問題的最重要的是要確認是不是簽約成功了!!只有簽約成功的情況下,支付寶才會發送非同步通知。
一直沒有收到通知的情況下,一定要通過查詢介面去確認是不是簽約成功的。
原因二:非同步地址有問題
另外筆者還遇到過因為設置的地址有問題導致沒有收到的,此類問題可以參考官方文檔:[收不到非同步通知]。
商家扣款簽約介面比較特別的是,他的簽約地址可以在三個地方設置,分別是:
介面的 sign_notify_url 參數、介面的 notify_url 參數、平臺上的 應用網關 地址。
優先順序是 sign_notify_url > notify_url > 應用網關
其他常見問題可參閱官方文檔:
問題四:為什麼我收到通知了但是還是簽約失敗了
讓我覺得最「坑」的還是這個支付並簽約介面了。
剛開始收到通知之後覺得已經簽約成功了,但是消息內容怎麼看都跟之前接收到的不一樣,研究了下發現是支付的通知,不是簽約的通知。
查了文檔才知道,這個介面他發兩條通知,一條支付的,一條簽約的。
而且支付成功不一定簽約成功。
不管怎麼說,一定要根據是否收到了簽約的非同步通知來判斷簽約狀態,實在不行就用查詢介面查。
另外要註意,如果我們選擇不開啟自動續費的話,也不會有簽約成功的通知。
其他常見問題可參閱官方文檔:
以上就是關於支付寶介面簽約遇到的所有問題啦,希望對你有所幫助,有問題一起溝通~✿✿ヽ(°▽°)ノ✿