Android集成支付——微信支付,能調啓微信爲何調啓不了微信支付問題

集成微信支付的時候會遇到很多問題,此文章只介紹處理【能調啓微信爲何調啓不了微信支付】問題。

1、微信能調啓來,說明你的集成已經成功。但還是注意商戶的微信id是否統一,因爲在調啓支付接口的時候需要註冊微信id。

2、調啓不了微信支付/調啓微信支付閃退並跳轉到回調頁進行提示失敗問題,這個問題的多半是簽名的問題!!!

簽名問題的由來:

這個簽名問題出在哪裏,需要去定位。因爲官方的開發文檔並沒有說的那麼清楚(或許我的理解能力差),導致了簽名錯誤的問題。通過官方文檔的APP端開發步驟調啓支付API這兩處來說明調啓App支付的參數和簽名,我個人讀了很久,沒有明白意思,如圖劃線部分

 當我看了簽名生成算法的時候(一個生成簽名的規則),纔有點明白了。下圖畫紅線部分

但是現在最大的疑惑,我該怎麼用這個簽名

 看到這裏基本上也就大概明白了,但是怎麼去使用,看個人的理解能力和對官方文檔的閱讀能力,本人表示能力差點,還是沒讀懂。不過我在瀏覽的一些前車之鑑的博客中找到了方法。

實現步驟:

  1. 首先調用IWXMsg.registerApp將應用註冊到微信;
  2. 獲取後臺傳送過來的預訂單信息;
  3. 根據信息生成預支付訂單簽名;
  4. 進行調啓微信App支付

注意:統一下訂單後,微信返回數據中的簽名,並不是調啓微信支付的簽名!!!

重點:生成調啓微信支付API所使用的簽名,生成方式如下(我個人使用的硬拼接方式)

    // 簽名生成
    // 當前順序爲微信提供的順序(參數以ASCII碼排序),最後添加商戶的key(密鑰)
    // 生成簽名後,按照調啓微信App支付參數一一對應,sign爲按微信順序+key生成的新簽名
    // 進行調啓支付 api.sendReq(req);
    String signStr = "appid=" + appid 
                + "&noncestr=" + nonceStr
                + "&package=Sign=WXPay"
                + "&partnerid=" + partnerId 
                + "&prepayid=" + prepayId
                + "&timestamp=" + timeStamp
                + "&key=" + "YUAN2018YUAN2018YUAN2018YUAN2018"; 
		
    //進行MD5加密,並轉爲大寫
    String packageSign = MD5.getMessageDigest(signStr.getBytes());
    LogUtil.i(TAG, "signStr = " + signStr);
    LogUtil.i(TAG, "packageSign = " + packageSign.toUpperCase());

調啓微信支付API的簽名,推薦服務生成的簽名(生成簽名這一步,用到了商戶的key(密鑰),所以,將生成新簽名的這一步讓後臺實現)。

PayReq req = new PayReq();
req.appId = appid;
req.partnerId = partnerId;
req.prepayId = prepayId;
req.nonceStr = nonceStr;
req.timeStamp = timeStamp;
req.packageValue = packageValue;
req.sign = sign; // 服務生成的簽名(生成簽名這一步,用到了商戶的私鑰,所以,將生成新簽名的這一步讓後臺實現)

Toast.makeText(PayActivity.this, "正常調起支付", Toast.LENGTH_SHORT).show();
// 在支付之前,如果應用沒有註冊到微信,應該先調用IWXMsg.registerApp將應用註冊到微信
api.sendReq(req);

 

根據官方給的demo來調啓微信支付。我只用了demo裏的回調頁,配置好就可以了。

注意事項:

  1. 首先需要在微信開放平臺申請開發應用,微信開放平臺會生成APP的唯一標識APPID。此處需要填寫應用包名和應用簽名。此處這個應用簽名需要使用微信平臺提供的app獲取。
  2. 在支付之前,如果應用沒有註冊到微信,應該先調用IWXMsg.registerApp將應用註冊到微信
  3. 調啓微信支付API的簽名,是根據微信返回的預訂單的數據,按照ASCII順序從小到大排序拼接,最後加上商戶的key(密鑰)製作而成的。

 

參考文獻:

《微信支付官方開發文檔》····································································微信

《Android微信支付集成流程及其常見錯誤》·····························葫蘆娃CSDN博客

《微信支付集成簡介》··························································陸羽_ CSDN博客

《Android集成支付----微信支付總結與封裝》····································chaohx簡書

 

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