一直不喜欢腾讯 以前是 现在是 微信支付更是!
文档跟天书一样 几百年不更新 要不是网上这么多资料 鬼能接上这东西
项目的流程
本地从服务端获取需要传递给微信的信息->将信息传递给微信&唤起微信支付->微信支付回调页
(跟一般流程不同,我们项目没有让用户选择金额的地方,服务端知道用户需要付款多少,所以比一般步骤少了个流程)
1 : 正常接入
Gradle配置 : compile'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:1.1.6'
配置好之后 就可以正常使用微信API了
2 : 在使用微信支付的页面进行微信的功能初始化
IWXAPI msgApi=WXAPIFactory.createWXAPI(mActivity,APP对应的Key);
msgApi.registerApp(APP对应的Key);
3: 从服务端获取微信支付所需信息之后唤起微信支付
PayReq request =new PayReq();
msgApi.sendReq(request);
request.appId = "wxf9a83c686757f3d4";
request.partnerId = "1900000109";
request.prepayId= "1101000000140415649af9fc314aa427";
request.packageValue = "Sign=WXPay";
request.nonceStr= "1101000000140429eb40476f8896f4c9";
request.timeStamp= "1398746574";
request.sign= "7FFECB600D7157C5AA49810D2D8F28BC2811827B";
Log.d("jim","check args "+request.checkArgs());
Log.d("jim","send return :"+msgApi.sendReq(request));
这里的服务器提供的支付信息,必须和你在微信开发者后台的APP信息一一对应, 不能是用 A应用的Key 服务器给你的是B应用的支付信息 . 否则会无法唤起微信支付 .
4 : 接入上面3步之后,如果签名和包名什么没配置错,基本都可以唤起微信支付了,现在开始处理回调.
你的包名+wxapi+WXPayEntryActivity
并在清单文件中配置
android:exported="true" android:launchMode="singleTop"/> ***一定要特别注意两个设置*** 少了这两个设置的话,回调页出不来! 这个配置可以在微信自己的Demo里看到 (这个Demo有毒,反正我没运行起来,只是查东西的会去里面看看) ** 再附加一个情况 : 测试的时候一切正常 换了正式包就有无法唤起微信支付了 (微信后台的签名也改成正式签名了) 原因 : 微信的缓存问题 , 微信卸载再重装,就一切正常了