您的位置:首页 > 移动开发

android 微信app支付遇到的坑

2016-11-21 10:12 477 查看
首先申请各种号,微信开发者资质等就不说了。然后就是申请一个开放平台的账号,申请app。通过之后别忘了申请app的支付能力

如图


然后拿到appid然后安卓端就可以开始开发啦

首先前两天是后台一直问我要授权code (这绝壁是个坑)我在源码上看了无数次也没找到怎么在支付之前拿到code和openId 然后查的各种资料都指向微信公众号。然后事实证明app支付确实不需要授权。。。如果以后再在这种时候有后台问你要code的话你就直接用刀砍他,不用客气的。

然后其实微信支付就很简单了

首先将官方的依赖包加上

如图,就是这个家伙

然后新建一个叫做 wxapi 的文件夹,一定要有个叫wxapi的文件夹,别的名字不行

然后这个文件夹里面应该有两个文件WXEntryActivity 和 WXPayEntryActivity

WXEntryActivity的作用就在于你要生成订单神马的



然后就是去后台接口生成你的订单。具体怎么生成订单就和后台商量去吧,无非就是要什么参数之类的

拿到该有的各种参数之后就是向微信提交订单调起微信支付啦

PayReq req = new PayReq();
//req.appId = "YOUR APPID";  
req.appId
= json.getString("appid");
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
Toast.makeText(PayActivity.this, "正常调起支付", Toast.LENGTH_SHORT).show();
// 在支付之前,如果应用没有注册到微信,应该先调用IWXMsg.registerApp将应用注册到微信
api.sendReq(req);

就这样的话就可以正常调起支付啦,然后就是接收app的返回值,检测并反馈给咱们自己的服务器

这里也有坑,这是后台的坑 宝宝就在这里卡了两三天,就是后台的签名有问题。签名有问题的话是不能调起支付的。然后本宝宝就把微信官方给的demo源码看了3.4.5.6.7.8.我也不知道多少遍,反正就是看得恶心能背下来那种程度。。。好啦,吐槽完毕

如果签名也没问题的话呢,接下来咱们就应该在WXPayEntryActivity这个类里面进行处理啦

微信支付成功或者失败都会跳到这个 activity 中 

  @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.pay_result);

        

    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 req) {
}

这三个地方还是不变

具体处理应该在onResp()方法里面处理 如图



就这样,该回调服务器的回调服务器,该跳转的跳转,就完啦

还有需要注意的是必须签名打包之后才能调起支付哟,debug模式是弄不出来哒~

还有就是manifest里面需要注意的是这个



具体有什么用我也不知道,反正是之前各种查资料看到的,就加上去了。

嗯,就酱~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息