Android客户端接入微信支付步骤
1 接入微信的SDK
去微信开发者平台下载sdk或者自动集成
2 调用微信SDK发起支付
以下需要注意的几点
1、首先调用后台的统一下单接口,下完订单后客户端再调用微信支付(NoticePayOrderBean 是服务器端下单后返回订单数据)。
2、微信支付sdk发起支付必须有以下7个参数appId,partnerId ,prepayId ,packageValue ,nonceStr ,timeStamp,sign 。
3、其中appId,partnerId ,prepayId ,packageValue ,nonceStr ,timeStamp都是后台返回,sign可以是后台返回,也可以时候本地生成,为了二次校验。如果使用本地生成,此时必须要注意的生成,签名算法如下:
https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=4_3
调用微信sdk示例
/**
* 微信支付
*/
private void payMoney( NoticePayOrderBean orderBean){
IWXAPI api = WXAPIFactory.createWXAPI(this, Constants.APP_ID, false);
PayReq req = new PayReq();
req.appId = orderBean.getRedPacka().getAppid(); // 测试用appId(去微信开发者平台注册的)
req.partnerId = orderBean.getRedPacka().getMch_id();//微信支付分配的商户号
req.prepayId = orderBean.getRedPacka().getPrepay_id();
req.packageValue = "Sign=WXPay";
req.nonceStr = orderBean.getRedPacka().getNonce_str();
req.timeStamp = orderBean.getRedPacka().getTimestamp();
req.sign = getSign(orderBean);
api.sendReq(req);
}
接收微信支付的回调
首先新建一个WXPayEntryActivity的Activity类,参考微信SDK里面的。需要注意的有几点:
1、WXPayEntryActivity这个Activity的路径要符合要求
假如这个应用的包名为golf.com.guochen.guochengolf,那么当前这个类的路径应该为golf.com.guochen.guochengolf.wxapi.WXPayEntryActivity.
2、这个WXPayEntryActivity当然需要在AndroidManifest文件中注册
其中特别需要注意的是上面的exported属性和launchMode属性一定要加上,否则是接收不到回调的
3、支付完成后的处理
及时的finish是避免出现黑屏。