Android開發之----微信支付

Android開發之----微信支付

就個人總結以下步驟:

 

1) 提交訂單

2) 獲取訂單返回的數據,裏邊包含的有訂單的數據、以及後臺返回的與微信支付相關的數據例如:

"wxpay": {
        "out_trade_no": "TNO2017021718004873800000001",
        "appid": "wxaac3a8ac56f6----",
        "sign": "D9315EF565DA92394D86984DC57F6914",
        "timestamp": "1487325648",
        "partnerid": "1402471902",
        "prepayid": "wx201702171755326bc49d280f0543668849",
        "pkg": "Sign=WXPay",
        "noncestr": "u2e2ZM2zWhmW7FRmrQSnTA9wFRFS6tJZ"
      }

3) 通過返回過來的數據來調取微信支付

/**
 * 處理微信支付
 *
 * @param data
 */
private void weChatResult(WxPay data) {
    IWXAPI msgApi = WXAPIFactory.createWXAPI(this, NetConfig.WX_APP_ID);
    msgApi.registerApp(NetConfig.WX_APP_ID);
    PayReq req = new PayReq();
    req.appId = data.getAppid();
    req.partnerId = data.getPartnerid();
    req.prepayId = data.getPrepayid();
    req.nonceStr = data.getNoncestr();
    req.timeStamp = data.getTimestamp();
    req.packageValue = data.getPkg();
    req.sign = data.getSign();
    req.extData = "app data"; // optional
    dialog.setMessage("正常調起支付");
    // 在支付之前,如果應用沒有註冊到微信,應該先調用IWXMsg.registerApp將應用註冊到微信
    msgApi.sendReq(req);
    // dialog的銷燬
     /*new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            dialog.dismiss();
        }
    }, 3000);*/
}

4) 調取微信支付然後跳轉到微信進行支付

5) 接收微信支付的返回碼(String)

1、”0” 支付成功

2、”-1” 可能的原因:簽名錯誤、未註冊APPID、項目設置APPID不正確、註冊的APPID與設置的不匹配、其他異常等。

3、”-2” 支付取消

6)當接收到返回碼爲”0”時,這個就是支付成功,這裏需要做的操作是調取自己服務器的驗證接口,然後進行驗證支付成功。(微信和支付寶支付相似,當客戶支付成功後只是在微信服務器上邊支付成功,但是沒有在app本地服務器上邊支付成功,只有當客戶端調取服務端支付成功,服務端再調取微信的接口,兩者之間進行驗證纔可支付成功

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

 

 

基本步驟如上,然後來說下微信支付的配置

 

1)WXPayEntryActivity 這個activity 是接收微信支付結果的界面,這個界面必須在包名下的 wxapi 包裏邊,如:
也只有這樣放的位置纔可,另在AndroidManifest.xml配置文件中配置:

<activity
   
android:name=".wxapi.WXPayEntryActivity"
   
android:exported="true"
   
android:launchMode="singleTop"
/>

2)在WXPayEntryActivityonResp方法中將接收到的返回碼 errCode傳遞到支付界面


3)在支付界面PayActivity 接收返回碼:

 
4)如支付成功調服務器的驗證支付接口即可(不調驗證的話服務器端的支付狀態還是未支付,這樣建議就不會成功)
 
 
總結難點:
1) 在微信上邊配置簽名,用微信的簽名工具進行簽名
2) WXPayEntryActivity所放的位置
3) WXPayEntryActivity接收的errCode返回到支付界面(這裏用的是EventBus傳遞,也可用通知)
4) 支付界面獲取到errCode後進行驗證
5) 微信支付還與後臺有關,主要是得後臺返回的數據是正確的,如果返回的數據不正確,就根本調不起微信的。

送給開發安卓的小夥伴們
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章