一般而言,對(duì)接第三方平臺(tái)有很多坑;主要的原因是文檔缺失,描述不詳細(xì),導(dǎo)致在很多的細(xì)節(jié)上出現(xiàn)理解誤差,從而對(duì)接不成功,白白浪費(fèi)諸多的時(shí)間;
微信APP支付的對(duì)接算整體而言流程比較簡(jiǎn)單,一般的邏輯是服務(wù)器生成預(yù)支付信息,將相關(guān)的信息傳給客戶端,客戶端直接用該信息調(diào)用sdk接口,喚起微信APP,完成支付后,服務(wù)器和客戶端分別通知客戶支付結(jié)果;
但是有幾個(gè)需要注意的地方:
1 簽名和包名,所以支付是沒(méi)法調(diào)試的(或者將正式的簽名證書(shū)直接給IDE使用),只能用正式簽名證書(shū)進(jìn)行打包才能看到正確地喚起微信APP;
2 sign, 由于微信需要驗(yàn)證相關(guān)的參數(shù),因此需要將業(yè)務(wù)參數(shù)拼接后簽名,以防止偽造支付請(qǐng)求;這塊請(qǐng)仔細(xì)閱讀微信官方的文檔:
調(diào)起支付接口
;用于簽名的所有字段都必須是小寫(xiě);
這個(gè)地方很容易出錯(cuò),主要是因?yàn)榘沧抗俜降腟DK里面PayReq的字段是下面的命名:
appId
partnerId
prepayId
packageValue
nonceStr
timeStamp
但是sign生成的時(shí)候必須用下面的字段:
appid
partnerid
prepayid
package
noncestr
timestamp
生成正確的簽名后返回給客戶端(就這問(wèn)題,耽誤了兩個(gè)小時(shí)排查,什么原因都找不到,客戶端就是返回-1);仔細(xì)看文檔啊