第三方集成---微信支付集成与使用
先来一波微信支付的流程图
商户系统和微信支付系统主要交互说明:
步骤1:用户在商户APP中选择商品,提交订单,选择微信支付。
步骤2:商户后台收到用户支付单,调用微信支付统一下单接口。
步骤3:统一下单接口返回正常的prepay_id,再按签名规范重新生成签名后,将数据传输给APP。参与签名的字段名为appid,partnerid,prepayid,noncestr,timestamp,package。注意:package的值格式为Sign=WXPay
步骤4:商户APP调起微信支付。
步骤5:商户后台接收支付通知。
步骤6:商户后台查询支付结果。
下面开始罗列步骤实现C端的微信支付功能:
1.先去微信官网上申请微信支付所需要的各种APPID等,申请的时候可能需要你的包名,与签名信息等,获取签名信息时,可能会踩坑。(一定要保证你的包名与正式版发布一致,坑点)。
2.下载微信官方android支付DEMO: https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=11_1
3.导入依赖: import 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+' ;
4.加上权限:
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />
5.如果要是有混淆,要将之前的旧包名的混淆改成如下:
keep class com.tencent.mm.opensdk.** {
*;
}keep class com.tencent.wxop.** {
*;
}
-keep class com.tencent.mm.sdk.** {
*;
}
6.请求支付前需要
商户APP工程中引入微信JAR包,调用API前,需要先向微信注册您的APPID,代码如下:
final IWXAPI msgApi = WXAPIFactory.createWXAPI(context, null);
// 将该app注册到微信
msgApi.registerApp("wxd930ea5d5a258f4f"); //填自己的appid.
7.吊起支付:
IWXAPI api;
PayReq request = new PayReq();
request.appId = "wxd930ea5d5a258f4f";
request.partnerId = "1900000109";
request.prepayId= "1101000000140415649af9fc314aa427",;
request.packageValue = "Sign=WXPay";
request.nonceStr= "1101000000140429eb40476f8896f4c9";
request.timeStamp= "1398746574";
request.sign= "7FFECB600D7157C5AA49810D2D8F28BC2811827B";
api.sendReq(request);
8.回调方法在Demo 的WXPayEntryActivity类中(这个类路径必须为你的包名+wxapi,所以把他带包整个粘过来就好了,就像我盜的图一样)。
9. 在WXPayEntryActivity的onResp()里接收支付结果的返回状态:
10.打包生成正式的akp,运行起来。
请大家愉快的开始愉快的敲代码吧!