微信支付 (APP端开发)
詳見?https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5
下面是我個人的筆記(紅色部分為自己的補充內容)
Android開發要點說明
1、后臺設置
商戶在微信開放平臺申請開發應用后,微信開放平臺會生成APP的唯一標識APPID。由于需要保證支付安全,需要在開放平臺綁定商戶應用包名和應用簽名,設置好后才能正常發起支付。設置界面在【開放平臺】中的欄目【管理中心 / 修改應用 / 修改開發信息】里面,如圖8.8紅框內所示。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖8.8
應用包名:是在APP項目配置文件AndroidManifest.xml中聲明的package值,例如DEMO中的package="net.sourceforge.simcpux"。
應用簽名:根據項目的應用包名和編譯使用的keystore,可由簽名工具生成一個32位的md5串,在調試的手機上安裝簽名工具后,運行可生成應用簽名串,如圖8.9所示,綠色串即應用簽名。簽名工具下載地址https://open.weixin.qq.com/zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android.apk
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖8.9
2、注冊APPID
商戶APP工程中引入微信JAR包,調用API前,需要先向微信注冊您的APPID,代碼如下:
final IWXAPI msgApi = WXAPIFactory.createWXAPI(context, null);
// 將該app注冊到微信
msgApi.registerApp("wxd930ea5d5a258f4f");
3、調起支付
商戶服務器生成支付訂單,先調用統一下單API(詳見第7節)生成預付單(app端調接口,服務端實現生成訂單的功能,服務端再將以下發起支付所需的數據返回給app端),獲取到prepay_id后將參數再次簽名傳輸給APP發起支付。以下是調起微信支付的關鍵代碼:
IWXAPI api; PayReq request = new PayReq(); request.appId = "wxd930ea5d5a258f4f"; request.partnerId = "1900000109"; request.prepayId= "1101000000140415649af9fc314aa427",; request.packageValue = "Sign=WXPay"; request.nonceStr= "1101000000140429eb40476f8896f4c9"; request.timeStamp= "1398746574"; request.sign= "7FFECB600D7157C5AA49810D2D8F28BC2811827B"; api.sendReq(request);注意:該sign生成字段名列表見調起支付API
4、支付結果回調
參照微信SDK Sample,在net.sourceforge.simcpux.wxapi包路徑中實現WXPayEntryActivity類(包名或類名不一致會造成無法回調),在WXPayEntryActivity類中實現onResp函數,支付完成后,微信APP會返回到商戶APP并回調onResp函數,開發者需要在該函數中接收通知,判斷返回錯誤碼,如果支付成功則去后臺查詢支付結果再展示用戶實際支付結果。注意一定不能以客戶端返回作為用戶支付的結果,應以服務器端的接收的支付通知或查詢API返回的結果為準。代碼示例如下:
publicvoidonResp(BaseRespresp){if(resp.getType()==ConstantsAPI.COMMAND_PAY_BY_WX){Log.d(TAG,"onPayFinish,errCode="+resp.errCode);AlertDialog.Builderbuilder=newAlertDialog.Builder(this);builder.setTitle(R.string.app_tip);} }回調中errCode值列表:
| 0 | 成功 | 展示成功頁面 |
| -1 | 錯誤 | 可能的原因:簽名錯誤、未注冊APPID、項目設置APPID不正確、注冊的APPID與設置的不匹配、其他異常等。 |
| -2 | 用戶取消 | 無需處理。發生場景:用戶不支付了,點擊取消,返回APP。 |
應用微信支付的項目:懶漢一點三
相關類:
SelectPayWayActivity.java
WXPayEntryActivity
?
注意支付回調,寫在application的目錄下。寫在packname目錄下不會回調。
?
總結
以上是生活随笔為你收集整理的微信支付 (APP端开发)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java嵌套循环
- 下一篇: Visio2016卸载干净,以及同时安装