微信支付中退款踩坑记录

简介: 首先附上微信支付的开发者文档https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_16&index=11其实这里所说的踩坑记录,无非就是微信在开发者文档上的写不太明确,也没有比较官方的demo,在此列出一个可行的demo,供大家下载使用。

首先附上微信支付的开发者文档

https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_16&index=11

其实这里所说的踩坑记录,无非就是微信在开发者文档上的写不太明确,也没有比较官方的demo,在此列出一个可行的demo,供大家下载使用。

主要问题就是在这几步解密上

img_68bd6512760942952075e70af57ca2a9.png
微信的解密算法

首先是base64解码的工具类

img_7a8c2425cdbbadaf289a830fe4418328.png
base64Utils

这个工具类都是比较简单的,大部分的框架都会封装这种类似的工具类,这里自己做简单封装

然后是md5工具类,这个就不往外放了,网上多的是,现成的也多的是

主要坑人的地方是第三条。。。

img_245e815f6366d82b0310b279a2947046.png
解密参数设置
img_cd3fa4a9fcce1ab995abec214d5df0d9.png
AES解密方法

上面写明了用AES-256-ECB-PKCS7Padding,但是你把下面的ALGORITHM_MODE_PADDING参数换成AES/ECB/PKCS7Padding,发现报了这么个异常

java.security.NoSuchAlgorithmException: Cannot find any provider supporting DES/ECB/PKCS7Padding,

然后把参数改成AES/ECB/PKCS5Padding,发现 Illegal key size or default parameters

解决方法:

http://stackoverflow.com/questions/6481627/java-security-illegal-key-size-or-default-parameters

JDK8 jar包下载地址:

http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html

JDK7 jar包下载地址:

http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html

JDK6 jar包下载地址:

http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html

把里面的两个jar包:local_policy.jar 和 US_export_policy.jar 替换掉原来jdk安装目录Java\jre\lib\security 下的两个jar包接可以了

然后运行一些试试,,此时代码正常,数据正常。。。

因为某些国家的进口管制限制,Java发布的运行环境包中的加解密有一定的限制。比如默认不允许256位密钥的AES加解密,解决方法就是修改策略文件,  从官方网站下载JCE无限制权限策略文件,注意自己JDK的版本别下错了。将local_policy.jar和US_export_policy.jar这两个文件替换%JRE_HOME%\lib\security和%JDK_HOME%\jre\lib\security下原来的文件,注意先备份原文件。

相关文章
|
3天前
|
消息中间件 设计模式 SQL
谷粒商城笔记+踩坑(21)——提交订单。原子性验令牌+锁定库存
完成提交订单功能,并使用分布式事务方案,保证了订单提交的幂等性
谷粒商城笔记+踩坑(21)——提交订单。原子性验令牌+锁定库存
|
3天前
|
消息中间件 NoSQL Java
谷粒商城笔记+踩坑(23)——定时关闭订单
使用MQ延迟队列,实现项目订单的定时关闭,并阐述消息丢失、重复、积压等问题的解决方案
|
2月前
|
前端开发
支付系统44----支付宝支付-退款查询
支付系统44----支付宝支付-退款查询
支付系统44----支付宝支付-退款查询
|
9月前
|
小程序 PHP
微信公众号开发(六)微信支付(发红包、企业支付到零钱)需要证书请求示例
这里最主要的就是curlpost请求的时候需要带上证书。否则请求会失败。
111 0
|
小程序
优惠券流程
优惠券流程
285 0
|
Web App开发 安全 Java
微信支付退款异常处理过程
微信支付退款异常处理过程
|
弹性计算
阿里云存在未支付订单导致无法下单解决方法
解决阿里云存在未支付订单请支付或作废后再下单,阿里云服务器或其他云资源无法立即购买,提示“您选择的资源存在未支付订单,请支付或作废后再下单!”什么原因?这是由于你的阿里云账号之前已经创建了该订单,只是订单没有支付,所以无法再次创建订单。解决方法是,要么取消之前的订单,要么支付之前的订单。阿里云百科来详细说下阿里云账号下存在未支付订单的解决方法:
915 0
阿里云存在未支付订单导致无法下单解决方法
|
消息中间件 RocketMQ 开发者
下单基本流程小结|学习笔记
快速学习下单基本流程小结
118 0
|
开发工具
微信支付 & 退款 - 快速入门(第三方SDK)(一)
微信支付 & 退款 - 快速入门(第三方SDK)(一)
1312 0
微信支付 & 退款 - 快速入门(第三方SDK)(一)
|
前端开发 开发工具 数据库
微信支付 & 退款 - 快速入门(第三方SDK)(二)
微信支付 & 退款 - 快速入门(第三方SDK)(二)
310 0
微信支付 & 退款 - 快速入门(第三方SDK)(二)