Android-集成微信支付以及遇到的问题浅谈
2017-09-28 18:49
453 查看
本篇文章主要记录:在项目中集成微信支付的流程以及遇到的问题的解决办法
一、配置签名:
微信需要的签名是由开发者使用签名文件下的MD5值(去掉“-”大写转小写),查看MD5 值,百度下吧,微信也给了一个签名工具下载地址https://open.weixin.qq.com/zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android.apk。
开发中可以选择debug下的md5。
二、项目配置:
1、在项目包名下创建,包名和activity名要完全一致,否则无法回调成功;
2、AndroidManifest.xml下添加:
注释部分有说要加上,签名要配置,否则支付时会返回“-1”。我项目中未遇到该情况,所以也就没加。
当然权限也要配置上,支付宝权限和微信权限是相同的,只加一个就好了.
如果微信支付成功后无法回调到app,请查看配置android:exported属性是否设置为true;
3、添加依赖:
项目app下的build.gradle下配置:微信最新API推荐以此方式集成,jar包形式也可用,不过好像微信官方对jar包说明是以后会不再维护更新
第三个参数微信说明是“checkSignature”,(有说设置为true时,会出现支付返回-1的情况)
二、配置支付参数
因为后台给的该参数是“package”,很明显安卓是无法定义该字段的。还好该值是微信固定值,所以本地就给写定了。
项目中的微信appId也是由后台传入的,也是为了安全起见。当然该值一般不会改变,也可配置在项目中。
然后就可以调起微信付钱了。。。在调起微信之前微信给出方法检查微信app的安装及版本状态,也是由于微信不支持自动转H5支付的原因,所以最好检查一下是否安装,版本情况视个人需求了(貌似如果不是最新版微信都会提示当前版本过低),惯例–代码截图:
三、处理支付回调结果:
该代码是在WXPayEntryActivity类中的
方法中。
到此微信支付就算完成了。下面说下在项目中遇到的问题:
相信大家在微信支付中遇到最多的就是调起微信后,直接返回-1的情况。以下是微信给的结果回调状态说明:
参数返回-1 的原因有很多,当返回-1时,看到微信给的说明后,突然有种想暴走的冲动(这tm也说得太笼统了吧!)。
but,出现-1的情况,确实是像微信给出的说明大致类似。大多数出现的原因也就是:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配。其他异常只要正常配置是很难出现的(反正我是没遇到)。
我项目中遇到的情况是appid的问题。iOS是可以用的,但android就是不行。后来才想明白因为用到了公司其他项目的appid,iOS是用的上个项目的证书,所以是可以支付的。但我的项目和公司其他项目用的签名文件是不同的,当然包名也不同。所以appid也是不一样的。
有时问题很简单,但就是很难去发现。总之就是多和相关的人员沟通,问题很快就会解决的,尽量不要一个人钻牛角。
==========================================end
微信支付集成
详情请看微信官方文档:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5一、配置签名:
微信需要的签名是由开发者使用签名文件下的MD5值(去掉“-”大写转小写),查看MD5 值,百度下吧,微信也给了一个签名工具下载地址https://open.weixin.qq.com/zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android.apk。
开发中可以选择debug下的md5。
二、项目配置:
1、在项目包名下创建,包名和activity名要完全一致,否则无法回调成功;
2、AndroidManifest.xml下添加:
<!-- WeChat sdk begin --> <activity android:name=".wxapi.WXPayEntryActivity" android:exported="true" android:launchMode="singleTop"> <!--<intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <data android:scheme="签名"/> </intent-filter>--> </activity> <!-- WeChat sdk end -->
注释部分有说要加上,签名要配置,否则支付时会返回“-1”。我项目中未遇到该情况,所以也就没加。
当然权限也要配置上,支付宝权限和微信权限是相同的,只加一个就好了.
如果微信支付成功后无法回调到app,请查看配置android:exported属性是否设置为true;
3、添加依赖:
项目app下的build.gradle下配置:微信最新API推荐以此方式集成,jar包形式也可用,不过好像微信官方对jar包说明是以后会不再维护更新
dependencies { compile 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+' }
开始支付了
一、首先注册微信API:wxApi = WXAPIFactory.createWXAPI(context, wxAppId, false);
第三个参数微信说明是“checkSignature”,(有说设置为true时,会出现支付返回-1的情况)
二、配置支付参数
wxPayReq.packageValue = "Sign=WXPay"
因为后台给的该参数是“package”,很明显安卓是无法定义该字段的。还好该值是微信固定值,所以本地就给写定了。
项目中的微信appId也是由后台传入的,也是为了安全起见。当然该值一般不会改变,也可配置在项目中。
然后就可以调起微信付钱了。。。在调起微信之前微信给出方法检查微信app的安装及版本状态,也是由于微信不支持自动转H5支付的原因,所以最好检查一下是否安装,版本情况视个人需求了(貌似如果不是最新版微信都会提示当前版本过低),惯例–代码截图:
三、处理支付回调结果:
该代码是在WXPayEntryActivity类中的
@Override public void onResp(BaseResp resp) {...}
方法中。
到此微信支付就算完成了。下面说下在项目中遇到的问题:
相信大家在微信支付中遇到最多的就是调起微信后,直接返回-1的情况。以下是微信给的结果回调状态说明:
参数返回-1 的原因有很多,当返回-1时,看到微信给的说明后,突然有种想暴走的冲动(这tm也说得太笼统了吧!)。
but,出现-1的情况,确实是像微信给出的说明大致类似。大多数出现的原因也就是:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配。其他异常只要正常配置是很难出现的(反正我是没遇到)。
我项目中遇到的情况是appid的问题。iOS是可以用的,但android就是不行。后来才想明白因为用到了公司其他项目的appid,iOS是用的上个项目的证书,所以是可以支付的。但我的项目和公司其他项目用的签名文件是不同的,当然包名也不同。所以appid也是不一样的。
有时问题很简单,但就是很难去发现。总之就是多和相关的人员沟通,问题很快就会解决的,尽量不要一个人钻牛角。
==========================================end
相关文章推荐
- android集成微信支付遇到的问题
- 微信支付 for android 集成笔记( 集成遇到问题记录)
- 微信支付 for android 集成笔记( 集成遇到问题记录)
- android可能遇到问题,以及找到的解决方法小总结!
- 在编译Android 工程时常遇到的问题,以及解决办法。
- android自定义Actionbar遇到的一点问题【titlebar以及thme的选择】
- android配环境遇到的问题以及其解决方案
- Android程序的反编译和防止反编译,以及操作过程中遇到的一些问题
- ProGuard总结和混淆Android代码中遇到的问题的解决方法以及寻找getSomething游戏
- 微信支付开发的流程以及开发过程中遇到的问题和解决办法,持续整理中
- repo教程以及repo下载android源码以及遇到的问题
- android proguard使用心得和遇到的若干问题以及解决思路。
- 自己在使用Android Maps API 开发地图应用程序时遇到的问题,以及解决的办法
- Android 第三方分享中遇到的问题以及解决方案
- Android自定义XML属性以及遇到的命名空间的问题
- cocos2d-x plugin集成到Android里时遇到的问题
- 第一个android程序以及遇到问题解决办法
- Android 集成支付宝快捷支付遇到的问题2014年5月14日
- Android 简单动画的制作以及遇到的问题
- 安装calabash-android遇到的问题以及解决