最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android開發(fā)微信APP支付功能的要點小結

 更新時間:2016年08月18日 11:57:05   投稿:daisy  
微信支付現(xiàn)在在日常生活中隨處可見,而關于Android開發(fā)微信支付的文章網(wǎng)上也很多,所以這篇文章主要介紹的是在Android開發(fā)微信APP支付功能的要注意的要點,有需要的可以參考借鑒。

基本概念

包名值得是你APP的包,在創(chuàng)建工程時候設置的,需要在微信支付平臺上面設置。

簽名指的是你生成APK時候所用的簽名文件的md5,去掉:全部小寫,需要在微信支付平臺上面設置。

調試階段,簽名文件可以使用調試用的debug.keystore,簽名可以直接在eclipse上面查看,或者用工具查看 ,安裝打開輸入包名即可查看。

發(fā)布的時候一定需要在微信支付平臺上面設置成發(fā)布用的簽名值。

官方的Demo里面的內容并不是全是必須的,甚至只需要有l(wèi)ibammsdk.jar就夠了,AndroidManifest.xml也不用配置。

AndroidManifest.xml的配置和WXPayEntryActivity.java只是為了能夠得到支付回調,可以先不用去管,先調試能不能發(fā)起支付。

把libammsdk.jar拷貝到你項目的libs下,并添加jar引用。

代碼里發(fā)起支付請求:

IWXAPI api = WXAPIFactory.createWXAPI(this, Values.WXPAYAPPID);
api.registerApp(Values.WXPAYAPPID); // 注冊APPID,這句很重要,不然不會發(fā)起調用

PayReq req = new PayReq();
req.appId = wxPay.appid;// 也就是Values.WXPAYAPPID,如果二者不一致的話是沒法發(fā)起支付的。
req.partnerId = json.getString("partnerid");
req.prepayId = json.getString("prepayid");
req.nonceStr = json.getString("noncestr");
req.timeStamp = json.getString("timestamp");
req.packageValue = json.getString("package");
req.sign = json.getString("sign");
//req.extData = "";// "app data"; // optional

boolean r = api.sendReq(req);
if(!r) {
 Toast.makeText(this,"打開微信支付失敗!",Toast.LENGTH_SHORT).show();
}

上面的代碼中相關的預下單ID、簽名、時間戳等都是由服務端返回了,服務端在生成這些值的時候需要注意二次簽名的問題。

正常的話微信客戶端就會打開支付頁面了,那么就可以再著手回調的事情了。
把WXPayEntryActivity.java拷貝到你項目包下的wxapi文件夾中,比如你的包名是com.xx.shop,那么就放到com.xx.shop.wxapi下面。
設置AndroidManifest.xml,讓其支持回調:

<activity
 android:name=".wxapi.WXPayEntryActivity"
 android:screenOrientation="portrait" android:exported="true"
 android:launchMode="singleTop">
 <intent-filter>
  <action android:name="android.intent.action.VIEW"/><category android:name="android.intent.category.DEFAULT"/><data android:scheme="你的APPID"/>
 </intent-filter>/>
</activity>

WXPayEntryActivity.java不需要布局文件的,或者可以根據(jù)你的需要進行布局。

為了調試方便,把WXPayEntryActivity.java中onResp的代碼改為:

@Override
public void onResp(BaseResp resp) {
 Log.d("onPayFinish", "onPayFinish, errCode = " + resp.errCode);
 if(resp.errCode==0){
  Toast.makeText(this,"支付成功!",Toast.LENGTH_SHORT).show();
 }else if(resp.errCode==-1){
  Toast.makeText(this,"支付失敗!",Toast.LENGTH_SHORT).show();
 }else if(resp.errCode==-2){
  Toast.makeText(this,"取消支付!",Toast.LENGTH_SHORT).show();
 }
}

不管能不能支付成功,如果onResp的代碼能夠被自動執(zhí)行,那么說明你的AndroidManifest.xml里的配置是對了。

如果你對你的各項參數(shù)都很有把穩(wěn)了(比如你們iOS組的都能支付了,就你Android的還在坑了),那么看一下api.registerApp(Values.WXPAYAPPID);有沒有,沒錯我就坑死在這里了,這種情況下第一次(很偶爾)的能夠打開支付界面一下,后面都不行了。

總結

微信為啥不能給點詳細的錯誤代碼或者說明之類,就給一個-1,天知道是什么意思,真讓人不爽。以上就是Android開發(fā)微信APP支付功能要點的全部內容,希望本文的內容對大家開發(fā)Android能有所幫助。

相關文章

最新評論

武邑县| 德惠市| 长春市| 丹寨县| 宁津县| 临武县| 克拉玛依市| 清流县| 武义县| 天等县| 平南县| 淮滨县| 奉节县| 泾源县| 营山县| 徐闻县| 永安市| 灵宝市| 五河县| 隆化县| 嘉定区| 盐池县| 武冈市| 嘉荫县| 曲松县| 普宁市| 尉氏县| 溧水县| 宜君县| 汶上县| 吴桥县| 那坡县| 遵化市| 田林县| 诏安县| 运城市| 阿克苏市| 松江区| 桐柏县| 九龙城区| 通化市|