项目集成微信支付,折腾了三天左右,坑太多,做个简单记录

开通和主要原理不再讲了,参考微信支付官网

截个官网的业务流程图,下面好说明

微信支付业务流程.png

1 支付结果回调(图中的17步)

支付结果回调,微信官方的说法是:

在net.sourceforge.simcpux.wxapi包路径中实现WXPayEntryActivity类(包名或类名不一致会造成无法回调),在WXPayEntryActivity类中实现onResp函数,支付完成后,微信APP会返回到商户APP并回调onResp函数,开发者需要在该函数中接收通知,判断返回错误码,如果支付成功则去后台查询支付结果再展示用户实际支付结果。注意一定不能以客户端返回作为用户支付的结果,应以服务器端的接收的支付通知或查询API返回的结果为准。

(1) 其实正确地写法是appPackageName.wxapi. WXPayEntryActivity(如:com.example.app.wxapi. WXPayEntryActivity),而且类名必须是这个名字,要不不能回调(这个问题好网上遇到的人很多)。

(2) 还有一个问题,, AndroidManifest.xml配置文件中配置WXPayEntryActivity类时,要加上android:exported="true"这个标签,不然也回调不到,这个坑了我一个多小时;

2 android端请求签名(图中第9步)

微信官网的说法是:

签名生成的通用步骤如下:

第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。

特别注意以下重要规则:

◆ 参数名ASCII码从小到大排序(字典序);

◆ 如果参数的值为空不参与签名;

◆ 参数名区分大小写;

◆ 验证调用返回或微信主动通知签名时,传送的sign参数不参与签名,将生成的签名与该sign值作校验。

◆ 微信接口可能增加字段,验证签名时必须支持增加的扩展字段

第二步,在stringA最后拼接上key得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,再将得到的字符串所有字符转换为大写,得到sign值signValue。

通俗的说,请求的参数做签名, appid,noncestr ,package,partnerid,prepayid,timestamp 按这个顺序(注意必须是小写),键值对的格式(即key1=value1&key2=value2…)做签名。

3 支付结果返回-1(图中的17步)

微信官网的说明是:

开放平台配置的包名和应用签名是否一致:(android);确认是否使用正式的keystore打包apk并安装调试;(android);提交订单部分需要在服务器端完成。

(1)应用签名问题:

微信开发平台申请开发应用时:

填写Android平台的应用签名时,需要注意,填写的是keystore的MD5值,不是SHA1值。注意开发时的debug.keystore和最终发布的签名keystore的MD5,SHA1都是不一样的。正式发布产品需要使用正式的签名。

另外特别注意:md5值得填写全是小写,并且不能包含冒号。

(2)注册app到微信

除过微信开发Demo里面的注册,在每次向微信服务器请求数据之前再注册一次

wxApi.registerApp(Constants.APP_ID); //发送请求数据之前再注册一次

wxApi.sendReq(req);

android微信迁移数据,【CSDN博客迁移】Android集成微信支付之-天坑相关推荐

  1. Android应用开发-小巫CSDN博客客户端之集成友盟社会化分享组件

    Android应用开发-小巫CSDN博客客户端之集成友盟社会化分享组件 上一篇博客给大家介绍了如何分析网页并且使用jsoup这个库对html代码进行解析,本篇博客继续给大家介绍如何集成友盟社会化组件, ...

  2. Android应用开发-小巫CSDN博客客户端之集成友盟社会化分享组件,2021最新Android框架体系架构面试题

    下面是详细的集成过程: 首先来到官网:http://www.umeng.com/ 选择社会化分享,进入查看这个产品的介绍,下载对应平台的SDK,笔者这里自然是选择Android平台: 笔者集成友盟社会 ...

  3. 有道云笔记内容迁移到csdn博客

    想把有道云笔记上面的文章迁移到csdn,但是发现只能通过复制粘贴,和分享链接 一.bootstrap学习 1.学习网站 中文网: http://v3.bootcss.com/javascript/ 慕 ...

  4. Android应用开发-小巫CSDN博客客户端UI篇

    Android应用开发-小巫CSDN博客客户端UI篇 上一篇是给童鞋们介绍整个项目的概况,从这篇博文开始,后续也会详细介绍整个客户端的开发,但不会贴很多代码,我会贴核心代码然后提供实现思路,想看里面更 ...

  5. Android应用开发-小巫CSDN博客客户端UI篇,kotlin安卓开发教程视频

    ** ** (图5-博文评论列表) 以上给大家展示的是小巫CSDN博客客户端的主要界面效果,下面来讲解如何布局这样的界面: 启动界面布局 /BlogClient/res/layout/splash.x ...

  6. 微信小程序版博客——开发汇总总结(附源码)

    花了点时间陆陆续续,拼拼凑凑将我的小程序版博客搭建完了,这里做个简单的分享和总结. 整体效果 对于博客来说功能页面不是很多,且有些限制于后端服务(基于ghost博客提供的服务),相关样式可以参考截图或 ...

  7. 博客迁移之从CSDN导出markdown格式文章

    [2020/08/02更新]CSDN更新了接口API,之前的方法已经失效 写在前面 最近沉迷于个人网站开发,买了长期服务器和域名,一直在搞事情. 这篇文章的主要任务是将个人CSDN博客导出为Markd ...

  8. 把csdn博客打包成md文件的办法,便于迁移到其他博客平台或者自己的博客上,一分钟搞定

    原文地址 : 一个开源的CSDN博客打包工具/搬家工具 大佬的GitHub 地址 https://github.com/ame-yu/CSDN-export-script 方法步骤 登录 csdn 前 ...

  9. 【爬虫+数据可视化】Python爬取CSDN博客访问量数据并绘制成柱状图

    以下内容为本人原创,欢迎大家观看学习,禁止用于商业及非法用途,谢谢合作! ·作者:@Yhen ·原文网站:CSDN ·原文链接:https://blog.csdn.net/Yhen1/article/ ...

最新文章

  1. C++11中shared_ptr的使用
  2. 机器学习入门系列三(关键词:逻辑回归,正则化)
  3. 从实例入手学会BeautifulSoup的常用方法
  4. birt脚本for循环语句_Python初级教程(11): for循环语句
  5. 多客户端异步通讯框架
  6. [vue] vue中data的属性可以和methods中的方法同名吗?为什么
  7. 对于新生代农民工,你有什么想说的?
  8. heap堆(自己做菜)(空间很大),stack栈(餐馆吃饭)(能从栈获得的空间较小),static(全局变量和静态变量的存储),文字常量区,程序代码区,以及ROM,RAM,Flash
  9. [含论文+ppt+任务书+源码等]S2SH基于java的保险业务管理系统
  10. Qt: 解决Qt语言家 更新翻译(lupdate) 非常慢卡死没反应现象
  11. (大数据应用考察)全国水资源分析可视化
  12. 第二人生的源码分析(10)登录授权的实现过程
  13. 学计算机的当大学老师,待遇那么低,研究那么苦,你为啥还去大学当老师?
  14. dmg文件 linux,Linux_dmg文件是什么Linux如何通过命令行建立dmg文件,  Linux系统操作中,很多人 - phpStudy...
  15. TDIfw在windows 10 1903的测试
  16. android源码下载及编译
  17. 51单片机 AT24C04+蜂鸣器+Proteus仿真
  18. 用python代码查出Excel两列数据的差异并输出
  19. 利用360实现电脑定时关机!
  20. 单表代换密码(凯撒密码)

热门文章

  1. Mysql 时间格式化 DATE_FORMAT使用
  2. 手动搭建 React 项目
  3. 网络tracert详解
  4. Docker安装openjdk-11,并查看对应的版本
  5. Unity加载优化-将基于LZMA的ab压缩方案修改为LZ4压缩的过程
  6. JAVA实现彩色图片转黑白图片 (ImageIO类)
  7. SLAM前端知识汇总
  8. 华中科技大学人工智能与自动化学院课程报告代码
  9. MySQL_Windows 下重启MySQL服务
  10. python代码解释4个作用域_Python中作用域的深入讲解