Android项目实战(五十):微信支付 坑总结
大部分APP必备需求,使用总结
Android接入文章在此:官方文档
文档很简单,Android分为四步:
1、后台配置
2、Android 内 注册appId
3、Android 内 调起支付
4、Android 内 支付结果回调
详细流程总结:
1、后台配置
这个让服务器同事去做就行,记得把项目APP的包名和签名文件给他
包名在app目录下的build.gradle文件中可以查看,为applicationId 键的值

签名就用微信官方给的签名工具获取

注:有文章说这个工具获取的签名是错误的,经测试是正确的,所以放心用。
2、Android 内 注册appId
这个比较简单,就是两行代码 , 放在发起支付的那个activity的onCreate里面注册即可
final IWXAPI msgApi = WXAPIFactory.createWXAPI(context, null);
// 将该app注册到微信
msgApi.registerApp("wxxxxxxxxxxx8f4f");
注:有文章说createWXAPI(content,null) 写成 createWXAPI(content,false)
实际上第二个参数null或者false都没关系,检测办法就是看一下msgApi.registerApp返回是不是true ,经测试,都为true
3、Android 内 调起支付
IWXAPI api;
PayReq request = new PayReq();
request.appId = "wxdxxxf4f";
request.partnerId = "";
request.prepayId= "11010x1x1x1x1x1fc314aa427",;
request.packageValue = "Sign=WXPay";
request.nonceStr= "110100x1x1x1x11x476f8896f4c9";
request.timeStamp= "";
request.sign= "7FFECB6x1x1x1x1x1x1xx8BC2811827B";
api.sendReq(request);
操作一般为:
客户端发送订单数据给服务器, 服务器进行处理之后,返回微信支付需要的这几个参数,客户端用这几个参数调起支付
这个就是调起支付的操作,执行sendReq之后即可。
注意:最好数据都由服务器返回,尽量不要在客户端写死。
4、Android 内 支付结果回调
涉及一个Activity名为WXPayEntryActivity
这个Activity可以从官方下载的demo中获取:地址
注意:
1、需要将这个Activity放到自己的项目中,放置的位置为包名.wxapi.WXPayEntryActivity.java
加入你的包名为com.aaa.wx ,则在目录com-aaa-wx下有一个wxapi的包 包里为这个WXPayEntryActivity文件
结果目录就为:com.aaa.wx.wxapi.WXPayEntryActivity
这个位置一定要写对,否则调起支付调不出支付窗口
2、将WXPayEntryActivity放到自己的项目中的时候,需要在AndroidManifest.xml中注册一下

有文章说要写<intent-filter></intent-filter> , 经测试 现在的版本不需要也是可以的,跟调起支付失败没有关系
以上四步实现,正常来说就可以实现支付功能了,
支付结果从WXPayEntryActivity中的onResp方法中回调
publicvoidonResp(BaseRespresp){
if(resp.getType()==ConstantsAPI.COMMAND_PAY_BY_WX){
Log.d(TAG,"onPayFinish,errCode="+resp.errCode);
AlertDialog.Builderbuilder=newAlertDialog.Builder(this);
builder.setTitle(R.string.app_tip);
}
}
--------------------------------------------------------------------微信支付排坑总结------------------------------------------------------------------------
1、签名
后台配置的签名要为release包的签名
客户端检查的时候,需要打成release包,注意直接编译的debug包是没有签名的,所以会调取失败。
检查方法:获取已经集成好微信支付的app(测试微信支付的app)的签名(用官方的签名获取app),和后台配置的对比,不一致导致支付调起失败。
2、WXPayEntryActivity
这个Activity从官方demo中获取,放到自己的项目中,放置的位置必须为你的包名.wxapi下 , 具体查看上面集成第四步
AndroidManifest.xml文件需要注册这个WXPayEntryActivity
3、包名
检查项目包名和后台配置的包名是否一致
4、PayReq 对象参数错误
服务器原因,导致返回的PayReq对象需要的参数出现问题,导致调起支付失败
检测办法,对比iOS端,如果iOS也不可以发起支付,极有可能是服务器的问题,如果iOS端可以发起支付,则仍为客户端集成问题
5、微信客户端端缓存
当你反复检查代码就是认为没有问题的时候,极有可能是微信缓存的问题。
去手机设置---应用管理---微信---清除数据/缓存
再发起支付就可以正常发起支付了。
(该问题一般是一开始代码有问题,调起支付失败,这时候微信账号上有订单缓存,然后你修改代码之后,代码正确了,仍然调起支付失败,就时这个订单缓存导致的)
注意:
打印WXPayEntryActivity的onResp方法的resp.errCode
如果没有打印,说明可能是上述第二个和第四个问题
如果打印值为-1 , 异常错误,则考虑为 第1 、 3 、5个问题
Android项目实战(五十):微信支付 坑总结的更多相关文章
- 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_6-2.申请微信支付介绍和不同场景的支付方式
笔记 2.申请微信支付介绍和不同场景的支付方式 简介:介绍微信商户平台,支付方式和使用场景,申请微信支付流程 1.什么是微信商户平台: ...
- Android项目实战(十五):自定义不可滑动的ListView和GridView
不可滑动的ListView (RecyclweView类似) public class NoScrollListView extends ListView { public NoScrollListV ...
- Android项目实战(十九):Android Studio 优秀插件: Parcelable Code Generator
Android Studio 优秀插件系列: Android Studio 优秀插件(一):GsonFormat Android Studio 优秀插件(二): Parcelable Code Gen ...
- Android项目实战(十四):TextView显示html样式的文字
项目需求: TextView显示一段文字,格式为:(消息个数,不确定)条消息 这段文字中名字和数字的长度是不确定的,还要求名字和数字各自有各自的颜色. 一开始我想的是用(转) SpannableStr ...
- Android项目实战(十):自定义倒计时的TextView
项目总结 -------------------------------------------------------------------------------------------- 有这 ...
- Android项目实战(十六):QQ空间实现(一)—— 展示说说中的评论内容并有相应点击事件
大家都玩QQ空间客户端,对于每一个说说,我们都可以评论,那么,对于某一条评论: 白雪公主 回复 小矮人 : 你们好啊~ 我们来分析一下: .QQ空间允许我们 点击 回复人和被回复人的名字就可以进入对于 ...
- Android项目实战(十二):解决OOM的一种偷懒又有效的办法
在程序的manifest文件的application节点加入android:largeHeap=“true” 即可. 对,只需要一句话! 那么这行代码的意思是什么呢? 简单的说就是使该APP获取最大可 ...
- (转载)Android项目实战(三十二):圆角对话框Dialog
Android项目实战(三十二):圆角对话框Dialog 前言: 项目中多处用到对话框,用系统对话框太难看,就自己写一个自定义对话框. 对话框包括:1.圆角 2.app图标 , 提示文本,关闭对话 ...
- (转载)Android项目实战(二十八):Zxing二维码实现及优化
Android项目实战(二十八):Zxing二维码实现及优化 前言: 多年之前接触过zxing实现二维码,没想到今日项目中再此使用竟然使用的还是zxing,百度之,竟是如此牛的玩意. 当然,项目中 ...
- (转载)Android项目实战(二十八):使用Zxing实现二维码及优化实例
Android项目实战(二十八):使用Zxing实现二维码及优化实例 作者:听着music睡 字体:[增加 减小] 类型:转载 时间:2016-11-21我要评论 这篇文章主要介绍了Android项目 ...
随机推荐
- 分布式作业 Elastic Job 如何动态调整?
前面分享了两篇分布式作业调度框架 Elastic Job 的介绍及应用实战. ElasticJob-分布式作业调度神器 分布式作业 Elastic Job 快速上手指南! Elastic Job 提供 ...
- MacOS下命令行安装神器brew
1.安装brew:/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/mast ...
- 【云服务器部署】---Linux下安装MySQL
[云服务器部署]---Linux下安装MySQL 有关如何阿里云ECS建网站,推荐一片文章,我是是通过这篇文章安装tomcat和jdk的 网址:阿里云ECS建网站(建站)超详细全套完整图文教程! 注意 ...
- 【python35小工具】b站弹幕保存
后面有时间学习弹框,加个弹框 效果图: 原理: 原理简单不繁琐 1 根据设置的参数去post请求json参数 2 json提取出用户名和时间以及弹幕内容 (其中值得注意的时,页面默认会保存10个弹幕, ...
- css的direction属性
在项目中有遇到一个问题,select元素中的文字需要右对齐.text-align是无效的,想了很久都没有想到办法.经过一翻搜索之后发现了https://stackoverflow.com/questi ...
- solr(五): centos中, 整合 tomcat&solr
前言 虽然windows下, tomcat和solr整合起来灰常的方便, 但是, 一般像这种东西, 都很少部署在windows中, 更多的是部署到linux中去. 其实, 步骤是一样的, 这里, 我在 ...
- 【杂谈】FilterChain相关知识整理
前言 做后台的,Filter肯定没少配置,但是知晓其原理的可能不多.在这之前我也不懂,但这并不影响业务开发,同时也有其他的知识要学,所以一直就没看.这阵子有点闲,刚好在看<How Tomcat ...
- api网关揭秘--spring cloud gateway源码解析
要想了解spring cloud gateway的源码,要熟悉spring webflux,我的上篇文章介绍了spring webflux. 1.gateway 和zuul对比 I am the au ...
- shell高效处理文本(1):xargs并行处理
xargs具有并行处理的能力,在处理大文件时,如果应用得当,将大幅提升效率. xargs详细内容(全网最详细):https://www.cnblogs.com/f-ck-need-u/p/592592 ...
- 数据可视化 seaborn绘图(1)
seaborn是基于matplotlib的数据可视化库.提供更高层的抽象接口.绘图效果也更好. 用seaborn探索数据分布 绘制单变量分布 绘制二变量分布 成对的数据关系可视化 绘制单变量分布 se ...