客服端與服務端APP支付寶支付接口聯調的那些坑


根據支付寶官方提供的文檔的建議:

TIPS:這一步應在商戶服務端完成,商戶服務端直接將組裝和簽名后的請求串orderString傳給客戶端,客戶端直接傳給SDK發起請求。文檔和Demo是為了示例效果在客戶端實現。

商品的訂單信息和簽名應該放在服務端進行,將最好生成的orderString發送給客戶端,客戶端直接換起支付,處理好回調就ok。思路很簡單,但實現卻要下番功夫。

坑一:

如果以PHP為服務后台為例,官網是沒有提供集成好的PHP運行DEMO,我們的處理方式是參展APPDemo里的思路,和官方文檔的流程介紹,自己寫一套方法。

坑二:

在整合商品信息biz_content的時候要主要幾個字端:

1)method = “alipay.trade.app.pay";   

注意:官方提供的PHP有給APP整合信息方法,但里面使用的是“alipay.trade.wap.pay",這個字端不適用於APP支付,這點要注意。

2)timestamp 的格式 

注意:這里格式是年月日...到秒,並不是時間戳。

3)total_amount 的位數

注意:這里商品單價是精確到小數點后2位的,例如:7.00 和微信不同。

4)charset = utf-8 

注意:這里“utf-8”要小寫,不是大寫。

坑三:

瘋狂的報錯

當接口寫好后,服務端和終端進行聯調,這里就比較蛋疼了。首先,過程很繁瑣,不能本地模擬測試,只能由終端發起,查看返回的錯誤信息去尋找問題,很不好確定錯誤的位置。

下面是我們在開發中遇到錯誤代碼以及解決方法,希望給你些有用的建議。

1)支付寶客戶端返回6001錯誤信息或顯示交易訂單處理失敗,請稍后再試。(ALI64)

原因:沒有在合作伙伴身份中設置公鑰。(注:接入支付寶需要在服務端設置應用私鑰和支付寶公鑰,在支付寶管理后台設置應用公鑰和合作伙伴公鑰,應用公鑰與私鑰即為自己通過openssl生成的公鑰與私鑰;支付寶公鑰可通過支付寶管理后台得到,是固定值;合作伙伴公鑰即為應用公鑰)

2)支付繁忙ALI59

原因:主要情況為  amount等參數中  有特殊字符 導致, 在此處打個斷點 po 一下相應的參數就好了

3)“暫時無法獲取訂單信息,請稍后再試”

原因:簽名錯誤。沒有嚴格按照文檔里的簽名方式,&sign=AD3,前面要用“&”和加密(encode)后的字符相連,並且后面不能帶雙引號“”。

4)支付寶調起出現 ALI40247 解決方案

原因:這里卡的實現最長。也找了很多文檔。總結了一下錯誤的原因有幾下幾點:

A.沒有APP支付權限導致

檢查您使用的這個appid是否簽約過APP支付這個接口的權限。如果沒有簽約看上面的《如何簽約APP支付接口》。這里比較隱蔽。大多數以為申請通過就代表有了支付能力,其實還需再做一步簽約。

B.請求支付編碼問題和沒有做url encode

編碼:就是請求了utf-8 但是用了gbk的編碼

encode:app支付接口(接口名稱:alipay.trade.app.pay)對請求字符串的所有一級value(biz_content作為一個value)進行encode。

C.管理中心》我的應用》狀態》(注意:)已上線才可以使用否則也會報這個錯誤

D.詳細可參見地址https://openclub.alipay.com/read.php?tid=250&fid=2 官方提供的解決方案。

最后,希望你們一切順利~

完。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM