? ? ? ?微信支付接入比較坑的是其官方文檔很簡潔顺献,文檔結構不清晰罐脊,往往不容易找到自己想要看到的東西定嗓。下面對接入微信支付作一個完整的介紹。
一萍桌、創(chuàng)建應用
? ? ? 注冊申請開放平臺賬號是為了創(chuàng)建應用宵溅,不管是移動、網頁上炎、公眾號還是小程序都需要通過開放平臺創(chuàng)建應用恃逻,下面僅描述創(chuàng)建應用中的細節(jié)。
a. 應用圖標大小藕施,必須按照限定的尺寸寇损;
b. 繼上一步之后,下一步填寫平臺信息裳食,需填寫應用簽名與包名矛市,值得注意的是需要把簽名的MD5值的冒號去掉,
獲得該值的方式:
? ? ????1诲祸、在Android Studio的Treminal窗口中使用命令:keytool -list -v -keystore + keystore-path,若在此處執(zhí)行命令失敗浊吏,可以在JDK安裝目錄的bin目錄下打開cmd運行此命令憨愉,而此處若你的電腦是win10,仍可能提示如下信息卿捎,按照提示輸入命令 .\keytool -list -v -keystore xxx-path.jks即可配紫。
????????2、轉入官方文檔APP端開發(fā)步驟午阵,下載官方獲取應用簽名的APK躺孝,GetSignApk,安裝上輸入報名即可底桂。但是此處需要注意調試和Release時所使用的keySotre路徑植袍,如果為了方便可以在App的build.gradle中加入簽名配置,方便更改keystore路徑進行調試籽懦。
signingConfigs {
????debug {
????????storeFile file('xxxx.jks')
????????storePassword"xxxxxxx"
? ? ? ? keyAlias"xxxxxxx"
? ? ? ? keyPassword"xxxxxx"
? ? }
}
3于个、下一步就是提交申請,等待審核暮顺,然后開通支付功能厅篓,需要填寫商戶信息,提交資料捶码,這里就涉及到微信商戶平臺羽氮,已有商戶平臺賬號就快捷很多了,沒有商戶平臺賬號就需要注冊惫恼。商戶Id档押、商戶簽名的key都是來源于商戶平臺。
二祈纯、集成開發(fā)與調試
1令宿、按照指定步驟接入支付到工程,Android接入指南腕窥;
2粒没、進行調試,通常統一下單生成微信預支付訂單油昂、以及對AppId革娄、partnerid、prepayid冕碟、noncestr、timestamp匆浙、package這些必需參數進行簽名都由服務器端完成安寺,客戶端只需要對服務器返回的這些參數進行封裝,本地發(fā)起支付即可首尼,代碼如下:
????????此時挑庶,當你欣喜的編譯代碼言秸,想要發(fā)起支付的時候,發(fā)現支付回調的code為-1迎捺,哈哈举畸,大多數人都會跳進這個坑,摸不著頭腦凳枝,關鍵是官方對-1作如下解釋:
可能的原因:簽名錯誤抄沮、未注冊APPID、項目設置APPID不正確岖瑰、注冊的APPID與設置的不匹配叛买、其他異常等。
一個“其他異常等”就是最大的坑蹋订,這里是真想吐槽一下官方文檔的簡略率挣,下面就來說說返回-1的坑。
3露戒、客戶端錯誤排查
????????a. 檢查簽名椒功,是否是如步驟一中去掉了冒號;
????????b. 檢查APPID是否和服務器端簽名使用的appId一致智什,同時需到開放平臺對比蛾茉;
????????c. 能夠返回-1,這里不需要像大多數攻略去檢查包目錄結構撩鹿,如果沒有任何回調可采用谦炬,但是不得不提一提微信回調的類必須放在工程包名下的第一級目錄,名字必須為wxapi节沦。如下圖:
4键思、服務器端排錯
? ? ? ? a. 檢查簽名參數組合的順序,如官方描述(見下圖)甫贯,通常順序就是appid吼鳞、partnerid、prepayid叫搁、noncestr赔桌、timestamp、package渴逻;
? ? ? ? b. 檢查參與簽名參數的key和value疾党,官方的API文檔參數說明很多帶有連接符(見下圖),一定得注意惨奕,所有參數的key都是小寫并且不帶連接符雪位,appid、partnerid梨撞、prepayid雹洗、noncestr香罐、timestamp、package时肿;
? ? ? ? c. 檢查參數時間戳庇茫,是否是以秒為單位,是否是東八區(qū)(標準北京時間螃成,時區(qū)為東八區(qū)旦签,自1970年1月1日?0點0分0秒以來的秒數。注意:部分系統取到的值為毫秒級锈颗,需要轉換成秒(10位數字))顷霹;
? ? ? ? d. 檢查package參數,如果appid击吱、partnerid淋淀、package這三個參數只是放在客戶端,也得注意他們參與了簽名覆醇。
? ? ? ? e. 檢查簽名所使用的key朵纷,是否是商戶平臺的API秘鑰,而不是開發(fā)平臺的APPSecret永脓。
上面的坑袍辞,簽名設置踩過,但是服務器端的坑都踩過常摧,哈哈搅吁。排除上面的錯誤,基本上微信支付就可以成功了落午。
記錄一下谎懦,避免下次再次摔倒,到處搜尋攻略溃斋,也為需要的小伙伴分享界拦。