根據支付寶官方提供的文檔的建議: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 官方提供的解決方案。
最後,但願大家一切順利~
完。