最近在做一个有关微信支付的一个项目,所以在此总结一下微信支付sdk接入的问题,为以后再次遇到此问题做个范例。
首先我们需要准备以下资源:
1).微信支付的AppId
2).微信依赖的Jar包
3).Activity类——>WXPayEntryActivity.java(可以从微信Demo中copy过来)
调起微信支付界面:
请求参数:
微信支付最主要的就是我们将参数给传递过去,发起支付的流程,提交订单的时候的参数根据项目需要配置。
下面代码就是调起微信支付:
PayReq req = new PayReq();
// 测试用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)
回调如下:
返回结果:
<1>WXPayEntryActivity这个类是在你调起微信支付完成支付(或取消或失败)后,再回到你的App时会调用的一个页面。还需要注意的是这个类文件的路径。
<2>若不需要回调的那个页面可以将onCreate方法里的setContentView(R.layout.pay_result) 给注掉。
<3>回调结果里Demo给了一个弹窗,咱们如果不需要,也可以修改为如下:
public void onResp(BaseResp resp) {
if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
if(resp.errCode==0){
//支付成功
}
finsh();
}
}
目前,我只做到这么多,等后续发现问题会及时更新的。