大部分APP必备需求,使用总结 

Android接入文章在此:官方文档  

文档很简单,Android分为四步:

1、后台配置

2、Android 内 注册appId

3、Android 内 调起支付

4、Android 内 支付结果回调

详细流程总结:

1、后台配置

   这个让服务器同事去做就行,记得把项目APP的包名和签名文件给他

   包名在app目录下的build.gradle文件中可以查看,为applicationId 键的值

   

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

  

  注:有文章说这个工具获取的签名是错误的,经测试是正确的,所以放心用。

2、Android 内 注册appId

   这个比较简单,就是两行代码 , 放在发起支付的那个activity的onCreate里面注册即可

  1. final IWXAPI msgApi = WXAPIFactory.createWXAPI(context, null);
  2. // 将该app注册到微信
  3. msgApi.registerApp("wxxxxxxxxxxx8f4f");

  注:有文章说createWXAPI(content,null) 写成 createWXAPI(content,false)

  实际上第二个参数null或者false都没关系,检测办法就是看一下msgApi.registerApp返回是不是true ,经测试,都为true

3、Android 内 调起支付

  1. IWXAPI api;
  2. PayReq request = new PayReq();
  3. request.appId = "wxdxxxf4f";
  4. request.partnerId = "";
  5. request.prepayId= "11010x1x1x1x1x1fc314aa427",;
  6. request.packageValue = "Sign=WXPay";
  7. request.nonceStr= "110100x1x1x1x11x476f8896f4c9";
  8. request.timeStamp= "";
  9. request.sign= "7FFECB6x1x1x1x1x1x1xx8BC2811827B";
  10. 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方法中回调

  1. publicvoidonResp(BaseRespresp){
  2. if(resp.getType()==ConstantsAPI.COMMAND_PAY_BY_WX){
  3. Log.d(TAG,"onPayFinish,errCode="+resp.errCode);
  4. AlertDialog.Builderbuilder=newAlertDialog.Builder(this);
  5. builder.setTitle(R.string.app_tip);
  6. }
  7. }

--------------------------------------------------------------------微信支付排坑总结------------------------------------------------------------------------

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项目实战(五十):微信支付 坑总结的更多相关文章

  1. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_6-2.申请微信支付介绍和不同场景的支付方式

    笔记 2.申请微信支付介绍和不同场景的支付方式         简介:介绍微信商户平台,支付方式和使用场景,申请微信支付流程                  1.什么是微信商户平台:        ...

  2. Android项目实战(十五):自定义不可滑动的ListView和GridView

    不可滑动的ListView (RecyclweView类似) public class NoScrollListView extends ListView { public NoScrollListV ...

  3. Android项目实战(十九):Android Studio 优秀插件: Parcelable Code Generator

    Android Studio 优秀插件系列: Android Studio 优秀插件(一):GsonFormat Android Studio 优秀插件(二): Parcelable Code Gen ...

  4. Android项目实战(十四):TextView显示html样式的文字

    项目需求: TextView显示一段文字,格式为:(消息个数,不确定)条消息 这段文字中名字和数字的长度是不确定的,还要求名字和数字各自有各自的颜色. 一开始我想的是用(转) SpannableStr ...

  5. Android项目实战(十):自定义倒计时的TextView

    项目总结 -------------------------------------------------------------------------------------------- 有这 ...

  6. Android项目实战(十六):QQ空间实现(一)—— 展示说说中的评论内容并有相应点击事件

    大家都玩QQ空间客户端,对于每一个说说,我们都可以评论,那么,对于某一条评论: 白雪公主 回复 小矮人 : 你们好啊~ 我们来分析一下: .QQ空间允许我们 点击 回复人和被回复人的名字就可以进入对于 ...

  7. Android项目实战(十二):解决OOM的一种偷懒又有效的办法

    在程序的manifest文件的application节点加入android:largeHeap=“true” 即可. 对,只需要一句话! 那么这行代码的意思是什么呢? 简单的说就是使该APP获取最大可 ...

  8. (转载)Android项目实战(三十二):圆角对话框Dialog

    Android项目实战(三十二):圆角对话框Dialog   前言: 项目中多处用到对话框,用系统对话框太难看,就自己写一个自定义对话框. 对话框包括:1.圆角 2.app图标 , 提示文本,关闭对话 ...

  9. (转载)Android项目实战(二十八):Zxing二维码实现及优化

    Android项目实战(二十八):Zxing二维码实现及优化   前言: 多年之前接触过zxing实现二维码,没想到今日项目中再此使用竟然使用的还是zxing,百度之,竟是如此牛的玩意. 当然,项目中 ...

  10. (转载)Android项目实战(二十八):使用Zxing实现二维码及优化实例

    Android项目实战(二十八):使用Zxing实现二维码及优化实例 作者:听着music睡 字体:[增加 减小] 类型:转载 时间:2016-11-21我要评论 这篇文章主要介绍了Android项目 ...

随机推荐

  1. ubuntu垃圾文件清理方法

    linux和windows系统不同,linux不会产生无用垃圾文件,但是在升级缓存中,linux不会自动删除这些文件,今天就来说说这些垃圾文件清理方法. 1,非常有用的清理命令:sudo apt-ge ...

  2. 机器学习入门13 - 正则化:稀疏性 (Regularization for Sparsity)

    原文链接:https://developers.google.com/machine-learning/crash-course/regularization-for-sparsity/ 1- L₁正 ...

  3. iOS学习——iOS开发小知识点集合

    在iOS学习和开发过程中,经常会遇到一些很小的知识点和问题,一两句话就可以解释清楚了,这样的知识点写一篇随笔又没有必要,但是又想mark一下,以备不时之需,所以就有了本文.后面遇到一些小的知识点会不断 ...

  4. jetty8 text/plain默认字符编码的坑

    今天在测试一个content-type为text/plain的API时发现后端requestBody乱码了,而线上正常. 自己本地使用jetty8版本,插件自带版本,而线上使用jetty9. 最开始没 ...

  5. 心路历程(五)-find work and find house

    今天,对我半年的java自学经历做一个总结吧,因为今天刚找到了房子,而工作在前两天已经找到.面试了两家,第一家是海淀去知春路的中科软,去之前就百度了这家公司,各种黑,然后自己去了之后,说说自己真实的感 ...

  6. 什么是web标准??

    web标准 不是某一个标准,而是一系列标准的集合.网页主要由三部分组成:结构(Structure).表现(Presentation)和行为(Behavior).对应的标准也分三方面:结构化标准语言主要 ...

  7. WebSocket(1)---WebSocket介绍

    WebSocket介绍   一.为什么需要 WebSocket? 初次接触 WebSocket 的人,都会问同样的问题:我们已经有了 HTTP 协议,为什么还需要另一个协议?它能带来什么好处? 答案很 ...

  8. Work Queues

    Round-robin dispatching 默认情况下,RabbitMQ按顺序分发消息给下一个消费者.平均每个消费者会得到相同数量的消息. Message acknowledgment 为了确保消 ...

  9. Jenkins技巧:如何启动、停止、重启、重载Jenkins

    ----------------------------------------------------------------- 原创博文,如需转载请通知作者并注明出处! 博主:疲惫的豆豆 链接:h ...

  10. Mysql加锁过程详解(5)-innodb 多版本并发控制原理详解

    Mysql加锁过程详解(1)-基本知识 Mysql加锁过程详解(2)-关于mysql 幻读理解 Mysql加锁过程详解(3)-关于mysql 幻读理解 Mysql加锁过程详解(4)-select fo ...