由于最近工作中的項(xiàng)目需要用到微信支付骗随,這才緊張慌忙的去學(xué)習(xí)了一下般码。
這也是我第一次想正正經(jīng)經(jīng)的寫一篇文章舷礼,第一次在簡(jiǎn)書中使用Markdown
語(yǔ)法去寫,本人是菜鳥所以寫的很粗糙 ;
之所以記錄這篇文章,一方面是希望如果有人可以看到少走一點(diǎn)坑递鹉,一方面
是可以記下來幢哨,如果以后還有需要就不用在去上網(wǎng)找了。
去微信開發(fā)者網(wǎng)站上 注冊(cè) - 登錄 - 添加應(yīng)用
- 坑1 包名不能出錯(cuò)
- 坑2 填寫的應(yīng)用簽名 取你打包的key生成的md5 中間的冒號(hào)要去掉,
大寫字母需要轉(zhuǎn)變?yōu)樾憽#梢允褂煤灻ぞ撸?br> 一般需要審核好幾天,需要花300塊大洋申請(qǐng)的微信支付賬號(hào) 獲得應(yīng)用上的APPid;審核通過后 拿到 APPid.
開始集成到項(xiàng)目中 new 一個(gè)常量類 存放你的appid 以及商戶號(hào)
4. 在你的工程下創(chuàng)建一個(gè)包
包名需要一樣 这橙,微信就是這么霸道、导披、
![C%`RQ6]68OS~ORH_)$MX91V.png](http://upload-images.jianshu.io/upload_images/3999297-d98541ad93b9084c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
5. 在開發(fā)者文檔下他的demo屈扎,復(fù)制這個(gè)sdk 到你的工程中。
6. 寫一個(gè)供微信回調(diào)的接口
7.微信的回調(diào)類 activity名字必須一樣
public class WXPayEntryActivity extends AppCompatActivity implements IWXAPIEventHandler { private static final String WEIXIN_TAG = dWXPayEntryActivity.class.getSimpleName(); private IWXAPI api; public static WXPayEntryActivity instance; private IWXPayCallback mCallBack; /*** 微信支付成功的回調(diào)標(biāo)識(shí) */ String tag; public void setPayCallBack(IWXPayCallback callBack){ this.mCallBack = callBack; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); api = WXAPIFactory.createWXAPI(this, Constants.APP_ID); api.handleIntent(getIntent(),this); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); setIntent(intent); api.handleIntent(intent,this); } @Override public void onReq(BaseReq resp) { // 微信發(fā)送的請(qǐng)求回調(diào) Log.d(WEIXIN_TAG,resp.getType()+""); } @Override public void onResp(BaseResp resp) { Intent intent = getIntent(); tag = intent.getStringExtra("_wxapi_payresp_extdata"); String msg = ""; // 發(fā)送到微信的請(qǐng)求回調(diào) // 調(diào)后臺(tái)接口獲得請(qǐng)求參數(shù)調(diào)微信回調(diào)到這里 Log.d(WEIXIN_TAG,"onPayFinish ,errCode = " + resp.errCode); switch (resp.getType()){ case ConstantsAPI.COMMAND_PAY_BY_WX: IWXPayCallback payCallback = App.payCallback.get(tag); // 如有異常 if(resp.errStr!=null) Log.e(WEIXIN_TAG,resp.errStr); switch (resp.errCode){ case 0: msg="支付成功!"; if(payCallback!=null) payCallback.onPaySuccess(); break; case -1: msg="支付失敗!"; if(payCallback!=null) payCallback.onPayFailed(); break; case -2: msg="取消支付"; if(payCallback!=null) payCallback.onPayCanceled(); break; } break; } // ToastUtils.toast(this,msg); WXPayEntryActivity.this.finish(); }
根據(jù)文檔上demo的方法 獲得這幾個(gè)字段數(shù)據(jù)撩匕。(一般可以根據(jù)自己后臺(tái)接口中得到不需要自己去計(jì)算鹰晨。)
9. 微信支付的關(guān)鍵代碼
![1P2PF]3X(H~XLQ(53}2LAP8.png](http://upload-images.jianshu.io/upload_images/3999297-b8f3f061b79a9c7b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
(如果簽名正確 則可以直接調(diào)微信客戶端支付 回掉那個(gè)Activity中的接口
一般錯(cuò)誤嗎 為-1 肯定是簽名的問題相信我)
最后
![ZSBIDV$J9XF0X606GIZ_WT.png
你懂的 不要忘記注冊(cè) 和權(quán)限 demo中有。
電腦沒電了 就到這里了 如果有問題可以聯(lián)系我qq 827746955
第一次使用markdown排版也很丑 見諒啦~ 睡覺了 ~ 明天還加班呢~