編輯:關於Android編程
基本概念
包名值得是你APP的包,在創建工程時候設置的,需要在微信支付平台上面設置。
簽名指的是你生成APK時候所用的簽名文件的md5,去掉:全部小寫,需要在微信支付平台上面設置。
調試階段,簽名文件可以使用調試用的debug.keystore
,簽名可以直接在eclipse上面查看,或者用工具查看 ,安裝打開輸入包名即可查看。
發布的時候一定需要在微信支付平台上面設置成發布用的簽名值。
官方的Demo裡面的內容並不是全是必須的,甚至只需要有libammsdk.jar就夠了,AndroidManifest.xml也不用配置。
AndroidManifest.xml的配置和WXPayEntryActivity.java只是為了能夠得到支付回調,可以先不用去管,先調試能不能發起支付。
把libammsdk.jar拷貝到你項目的libs下,並添加jar引用。
代碼裡發起支付請求:
IWXAPI api = WXAPIFactory.createWXAPI(this, Values.WXPAYAPPID); api.registerApp(Values.WXPAYAPPID); // 注冊APPID,這句很重要,不然不會發起調用 PayReq req = new PayReq(); req.appId = wxPay.appid;// 也就是Values.WXPAYAPPID,如果二者不一致的話是沒法發起支付的。 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不需要布局文件的,或者可以根據你的需要進行布局。
為了調試方便,把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
的代碼能夠被自動執行,那麼說明你的AndroidManifest.xml裡的配置是對了。
如果你對你的各項參數都很有把穩了(比如你們iOS組的都能支付了,就你Android的還在坑了),那麼看一下api.registerApp(Values.WXPAYAPPID);
有沒有,沒錯我就坑死在這裡了,這種情況下第一次(很偶爾)的能夠打開支付界面一下,後面都不行了。
總結
微信為啥不能給點詳細的錯誤代碼或者說明之類,就給一個-1,天知道是什麼意思,真讓人不爽。以上就是Android開發微信APP支付功能要點的全部內容,希望本文的內容對大家開發Android能有所幫助。
前沿:在全新的Camera API2架構下,常常會有人疑問再也看不到熟悉的SetParameter/Paramters等相關的身影,取而代之的是一
先上圖: <frameLayout android:id=@android:id/tabcontent
看到標題你可能會想是一個多麼高大上的技巧呢?其實很一般就是自定義回調函數. 首先我們知道activity之間的數據傳遞有幾種方式: 一是startActivityForR
緒論:好久沒寫博客了,最近比較懶,不想寫博客,但是在看書,看一些Android進階的書,這裡小編也給大家推薦幾本適合進階的書,相信會對你有所幫助的。1.《Android群