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

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

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

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

坑一:測試

若是以PHP爲服務後臺爲例,官網是沒有提供集成好的PHP運行DEMO,咱們的處理方式是參展APPDemo裏的思路,和官方文檔的流程介紹,本身寫一套方法。編碼

坑二:加密

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

1)method = 「alipay.trade.app.pay";   code

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

2)timestamp 的格式 ip

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

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 官方提供的解決方案。

最後,但願大家一切順利~

完。

相關文章
相關標籤/搜索