微信支付SDK接入APP
生活随笔
收集整理的這篇文章主要介紹了
微信支付SDK接入APP
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
因為文檔比較粗糙,所以寫篇博客記錄一下踩坑過程,用的是eclipse接入的老項目
步驟:
注意:包名與AndroidManifest.xml里那個包名一致,簽名按照文檔里的步驟下載apk安裝到裝有你的app的手機里,打開該軟件輸入包名會生成一個字符串,復制出來設置后臺
| compile ‘com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+’ | 包含統計功能 | 點擊下載 |
| compile ‘com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+’ | 不包含統計 | — |
把demo里相應目錄下的文件復制到你這個目錄下面,然后將報錯修改好,引入庫錯誤就是引入的地方將import com.tencent.mm.sdk這里的改為com.tencent.mm.opensdk
注冊微信支付:
準備工作:向己方服務器請求其發起預支付后收到的數據:
// 類似這樣的請求方式,具體參數與己方服務器進行匹配 // http://xxx.xxx.xxx.xxx/pay/android_weixin_request.php?out_trade_no=[VALUE]&total_fee=[VALUE]&spbill_create_ip=[VALUE]&time_start=[VALUE] // WX_PAY_ORDER:http://xxx.xxx.xxx.xxx/pay/android_weixin_request.php?out_trade_no= String url = String.format(WX_PAY_ORDER); req.timeStamp = String.valueOf(genTimeStamp()); req.nonceStr = genNonceStr(); Log.d("req.timeStamp",req.timeStamp); url += java.net.URLEncoder.encode(genOutTradNo()); url += "&total_fee="; url += java.net.URLEncoder.encode(m_price*100 + ""); // url += "&spbill_create_ip="; // url += java.net.URLEncoder.encode("xxx.xxx.xxx.xxx"); url += "&time_start="; url += java.net.URLEncoder.encode(req.timeStamp + ""); url += "&nonce_str="; url += java.net.URLEncoder.encode(req.nonceStr);Log.d("url==",url); try{Log.d("向游戲后臺發起請求",url);HttpGet httpGet=new HttpGet(url);HttpResponse resp=new DefaultHttpClient().execute(httpGet);HttpEntity entity=resp.getEntity();byte[] response = EntityUtils.toByteArray(entity);showResponseResult(response); } catch(Exception e) {e.printStackTrace(); } //獲取時間戳private static long genTimeStamp() {return System.currentTimeMillis() / 1000;}//獲取商品信息串private static String genOutTradNo() {int ad = Myd2Activity.GetAdCode();String mAppOrderId = m_serverId + "-" + m_userId + "-" + ad + "-" + System.currentTimeMillis();return mAppOrderId;}//獲取隨機字符串private static String genNonceStr() {Random random = new Random();return MD5.getMessageDigest(String.valueOf(random.nextInt(10000)).getBytes());}調起支付:
protected void showResponseResult(byte[] response) throws UnsupportedEncodingException, IOException {Log.d("showResponseResult==",response.toString());if (null == response.toString()){return;}try{String content = new String(response);Log.d("get server pay params:",content);JSONObject json = new JSONObject(content); if(null != json && !json.has("retcode") ){if (json.getString("status")=="fail"){//發起訂單失敗Util.showResultDialog(m_instance, "服務器返回失敗", "發起訂單失敗");return;}req.appId = WX_APP_ID; //你的appIdLog.d("req.appId:",req.appId);req.partnerId = WX_USER_ID;Log.d("req.partnerId:",req.partnerId);req.prepayId = json.getString("prepay_id");Log.d("req.prepayId:",req.prepayId);req.nonceStr = json.getString("noncestr");Log.d("req.nonceStr:",req.nonceStr);//req.timeStamp = json.getString("timestamp");Log.d("req.timeStamp",req.timeStamp);req.packageValue = "Sign=WXPay";Log.d("req.packageValue",req.packageValue);req.sign = json.getString("sign");Log.d("req.sign",req.sign);// 在支付之前,如果應用沒有注冊到微信,應該先調用IWXMsg.registerApp將應用注冊到微信// 定義private static IWXAPI api;api.sendReq(req);}}catch (Exception e){e.printStackTrace();} }發起支付返回-1:
原因大多都是因為參數不對,一定要記得與己方服務器返回的參數一致,后臺配置的簽名與包名與項目和代碼中一致。
微信支付成功付款,己方服務器沒有收到回調原因:
配置位置:微信支付商戶-> 產品中心-> 開發配置-> 支付授權目錄
總結
以上是生活随笔為你收集整理的微信支付SDK接入APP的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 激光3D地图的构建及定位SLAM
- 下一篇: 比较器Compare升序降序