一、參數說明
登陸微信開放平台(注意是開放平台,不是公眾平台);https://open.weixin.qq.com
做app首先需要在微信開放平台后台創建應用,第二步勾選ios和Android應用平台,其中Android應用需要填寫應用簽名、應用包名,重點就在與如何獲取應用包名、應用簽名。(審核和開通方式教程)
應用包名:就是Hbuilder中打包時填寫的Android包名;
應用簽名:如果用的是DCloud公用證書,則微信應用簽名為:"59201cf6589202cb2cdab26752472112"(全小寫)
如果是自有證書,獲取應用簽名方法:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5 參考:Android開發要點說明->第一步(后台設置)。
也可以自己配置證書,在網上搜索android.keystore證書配置教程,app打包時候選擇此證書即可
下圖是微信中的配置,注意看紅框中的描述
二、DCloud官網支付配置
官方的支付配置有很多重點都沒說明,但是下面的參考實例代碼還是有用的。其中的appid就是開放平台的appid。
注意:獲取的支付通道每種包含三個字段:id、description、serviceReady。serviceReady是用來判斷支付通道服務是否安裝,對於支付寶可以通過wap頁面支付,因此值固定為true;然而微信支付則依賴微信客戶端,如果設備上未安裝微信客戶端則serviceReady值為false,此時應該提示用戶安裝微信客戶端才能進行支付操作。(官網文檔)
三、流程
流程與支付寶app支付類似。(業務流程、Android開發步驟說明)
1.app發起支付申請,請求服務器向微信發起預付單處理;(微信統一下單)
2.請求成功后,對預付單進行簽名並返回json數據給app;(處理並簽名之后的參數:調起支付參數)
3.app拉起微信支付;
4.支付成功后異步通知服務器支付結果;
5.app中進入訂單支付結果頁面(這里數據重新與服務器確認是否支付成功)
四、問題解決
肯定會碰到的問題:支付失敗:-100[100]:[payment微信:-1]General errors,肯定是配置出現錯誤了,微信不會提醒你錯誤在哪的
1.檢查參數:
a.確認開放平台的 appid、mac_id、key、Appsecret 與服務器中的配置一樣。(公眾號中NOTIFY_URL 是需要匹配才能回調,開放平台好像不需要)
b.app只需要配置微信appid即可。
c.確認app中的"應用包名"與微信中配置一樣;
d.再次檢查微信配置中的"應用簽名"是否按規定獲取的。!!!!(簽名通過一個app獲取,參考上面文檔,確認是否填的正確值)
2.如果是剛修改過微信配置中的應用簽名,則需要等待幾分鍾甚至更久才能測試成功
3.確認服務器向微信發起預付單處理,返回的參數沒有錯誤(說明簽名方式沒錯,所有簽名方式都需要按同一種方式執行)
4.在app端查看服務器傳回來的參數是否缺少或者有錯誤(參考 調起支付參數 嚴格對比字母大小寫)
mui中查看錯誤信息比較麻煩,我的做法是:console.log(JSON.stringify(result)); 數組轉為輸出json字符串