美文网首页
安卓开发-微信支付的那些坑~

安卓开发-微信支付的那些坑~

作者: kangGuiYang | 来源:发表于2016-12-09 23:20 被阅读0次

    由于最近工作中的项目需要用到微信支付,这才紧张慌忙的去学习了一下。
    这也是我第一次想正正经经的写一篇文章,第一次在简书中使用Markdown
    语法去写,本人是菜鸟所以写的很粗糙 ;


    之所以记录这篇文章,一方面是希望如果有人可以看到少走一点坑,一方面
    是可以记下来,如果以后还有需要就不用在去上网找了。

    1. 去微信开发者网站上 注册 - 登录 - 添加应用
      - 坑1 包名不能出错
      - 坑2 填写的应用签名 取你打包的key生成的md5 中间的冒号要去掉,
      大写字母需要转变为小写。(可以使用签名工具)
      一般需要审核好几天,需要花300块大洋申请的微信支付账号 获得应用上的APPid;

    2. 审核通过后 拿到 APPid.

    3. 开始集成到项目中 new 一个常量类 存放你的appid 以及商户号

    _67Y859Y(P1FV_BLSJOSQ0H.png

    4. 在你的工程下创建一个包

    包名需要一样 ,微信就是这么霸道、、

    ![C%`RQ6]68OS~ORH_)$MX91V.png](https://img.haomeiwen.com/i3999297/d98541ad93b9084c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

    5. 在开发者文档下他的demo,复制这个sdk 到你的工程中。

    0~XX`W17CWFPAX$JEH`05AV.png

    6. 写一个供微信回调的接口

    J)X6U(UX0_}}M{BZGZV@(OS.png

    7.微信的回调类 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; /*** 微信支付成功的回调标识 */ 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) { // 微信发送的请求回调 Log.d(WEIXIN_TAG,resp.getType()+""); } @Override public void onResp(BaseResp resp) { Intent intent = getIntent(); tag = intent.getStringExtra("_wxapi_payresp_extdata"); String msg = ""; // 发送到微信的请求回调 // 调后台接口获得请求参数调微信回调到这里 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(); }

    SWRTUHC2DA7O7D07(2)BJJ6.png

    根据文档上demo的方法 获得这几个字段数据。(一般可以根据自己后台接口中得到不需要自己去计算。)

    9. 微信支付的关键代码

    ![1P2PF]3X(H~XLQ(53}2LAP8.png](https://img.haomeiwen.com/i3999297/b8f3f061b79a9c7b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

    (如果签名正确 则可以直接调微信客户端支付 回掉那个Activity中的接口
    一般错误吗 为-1 肯定是签名的问题相信我)


    最后

    ![ZSBIDV$J9XF0X606GIZ_WT.png

    你懂的 不要忘记注册 和权限 demo中有。

    电脑没电了 就到这里了 如果有问题可以联系我qq 827746955
    第一次使用markdown排版也很丑 见谅啦~ 睡觉了 ~ 明天还加班呢~

    相关文章

      网友评论

          本文标题:安卓开发-微信支付的那些坑~

          本文链接:https://www.haomeiwen.com/subject/nusymttx.html