android微信支付详解与坑
来源:互联网 发布:protobuf js 编辑:程序博客网 时间:2024/06/07 00:20
要想在自己的APP中实现APP支付必须申请开通支付功能,这些按着文档来吧,我还是直接说android中的问题吧。
一、签名
一定要在开放平台为自己的APP配置正确的包名和签名(签名:将APP打一个正式环境的包,然后在微信开放平台下载签名工具进行签名)。
二、打包测试
和微信的第三方登录一样,必须要打正式包,不是debug的,来进行测试,这样就没有办法调试了,感觉很不爽。所以提供一个办法来拯救一下嘿嘿:
在build.gradle文件中设置debug环境和relealse环境的签名相同就可以解决这个文通了,已经试过了,可以的。
signingConfigs { release { //.jks文件放在项目目录 storeFile file("xxx.jks") storePassword "xxx" keyAlias "xxx.release" keyPassword "xxx" } debug { //.jks文件放在项目目录 storeFile file("xxx.jks") storePassword "xxx" keyAlias "xxx.release" keyPassword "xxx" } }
接下来按着官网的文档和demo来完成:
1、定义一个全局的变量:
private IWXAPI api;
2、注册APPID
api = WXAPIFactory.createWXAPI(this, "你在微信开放平台创建的app的APPID");
官网是这样注册的,但是,下面要用到msgAPi,所以定义为全局的。
final IWXAPI msgApi = WXAPIFactory.createWXAPI(SelectPaymentMethodActivity.this, null);msgApi.registerApp("你在微信开放平台创建的app的APPID");
3、开始支付
当你点击支付的时候去调用服务端的接口(服务端调用统一下单接口,反geini一些信息),所以这里你不能自己独立完成需要后端的支持。
//我将后端反给我的信息放到了WeiXinPay中,这步是获取数据WeiXinPay weiXinPay = (WeiXinPay) map.get("weixinpay");//这个在官网里就会看到,将你获取的信息赋给payReq,这块就是调起微信的关键PayReq payReq = new PayReq();payReq.appId = weiXinPay.getAppid();payReq.partnerId = weiXinPay.getPartnerid();payReq.prepayId = weiXinPay.getPrepayid();payReq.packageValue = weiXinPay.getPackage_exten();payReq.nonceStr = weiXinPay.getNoncestr();payReq.timeStamp = weiXinPay.getTimestamp();payReq.sign = weiXinPay.getSign();api.sendReq(payReq);
4、接下来就是在微信里的一些东西了,我们不用管,我们只需要关心回调页WXPayEntryActivity,这里需要注意该文件必须在wxapi这个文件夹下,及com.xxx.xxx.wxapi.WXPayEntryActivity
//必须实现接口,重写方法public class WXPayEntryActivity extends AppCompatActivity implements IWXAPIEventHandler { private IWXAPI api; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_wxpayentry); api = WXAPIFactory.createWXAPI(this, "wx72e0123dd9b54a73"); api.handleIntent(getIntent(), this); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); setIntent(intent); api.handleIntent(intent, this); } @Override public void onReq(BaseReq baseReq) { } @Override public void onResp(BaseResp baseResp) { Log.e("---------->","code:"+baseResp.errCode); if (baseResp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) { //这里就是支付完成后需要做的事,如跳到哪个页面啥的 } }}
5、还有一点在功能清单中对Activity中进行注册
<!--微信支付--> <activity android:name=".wxapi.WXPayEntryActivity" android:exported="true" android:launchMode="singleTop"/>
最后推荐两几个我参考过的文档:
微信支付申请流程
微信支付签名的配置
微信支付步骤
2 1
- android微信支付详解与坑
- Android 微信支付详解与Demo
- Android 微信支付详解与Demo
- Android 微信支付详解与Demo
- Android支付实践(二)之微信支付详解与Demo
- Android 微信支付详解及总结
- Android 集成微信支付步骤详解
- 微信支付详解与取消支付回调
- 微信支付详解
- 微信支付详解
- Android与iOS对接微信支付
- 微信支付与支付宝支付
- 支付宝支付与微信支付
- 微信支付与支付宝支付
- android微信支付
- android微信支付
- Android 微信支付
- android微信支付
- spark 的transformations之bykey的区别
- PHP封装好的发送邮件实例
- php中的上传全局变量 把全局变量的数组形式变得更简易
- Understanding Neural Networks Through Deep Visualization论文
- 兼容iOS 10 ,升级xcode8出的一堆问题的解决方案,以及一些适配.
- android微信支付详解与坑
- ECSHOP 函数
- Nginx负载均衡
- eclipse 安装 lombok
- 一个APP存活的基本几点要素
- 欢迎使用CSDN-markdown编辑器
- oracle分页查询出现数据重复问题
- iOS 8 自适应 Cell
- webpack常用命令