微信支付相关
近几天一直与各种支付打交道,关于微信支付方面,包括支付,退款,签约,代扣等方面,遇到了一些问题,在此汇总梳理并Mark一下
微信代扣:
首先是代扣相关的api文档
嗨!这,这那~ 点这里:扣费服务-直连模式.
然后简单说说微信代扣相关,微信代扣需要先与用户进行签约,签约之后可以调用微信的代扣接口进行扣费,相关签约可以在支付中签约,也可以单独进行签约(根据相关业务需求而定)
1、调用支付中签约接口 (需要协议模板id 并且将解约回调地址配置在申请的模板上)
2、调用支付中签约接口并签约成功后 在签约回调中会返回contract_id 需要保存 以便后续查询 代扣时使用
3、代扣 需要contract_id
4、涉及的相关回调
(1)微信签约回调需要验签 暂时只支持MD5
(2)微信解约回调需要验签 暂时只支持MD5
(3)微信代扣回调需要验签 暂时只支持MD5
5、部分代扣相关接口仅支持MD5加密,相关必填字段要与接口文档完全一致
以签约查询接口为例(我开始就没有注意这些细节,以此为戒)
(1)签约查询接口加密方式要使用MD5
(2)签约查询接口中通用参数没有nonce_str
(3)签约查询接口中version 必填 为固定值1.0
微信退款:
然后说说微信退款
1、微信退款需要证书
2、微信退款支持部分退款
3、重点说说,微信退款回调
微信退款回调返回给用户的信息是加密在req_info中需要将req_info进行解密才可以提取相关内容(解密方式如下)
解密方式
解密步骤如下:
1)、对加密串A做base64解码,得到加密串B;
2)、对商户key做md5,得到32位小写key* ( key设置路径:微信商户平台(pay.weixin.qq.com)–>账户设置–>API安全–>密钥设置 )
3)、用key*对加密串B做AES-256-ECB解密(PKCS7Padding)
相关解密可以参考
lAES-256-ECB PKCS7Padding 解密 微信退款接口: https://blog.csdn.net/hjh15827475896/article/details/92805191.
另外
因为解密为PKCS7Padding 需要替换 java 中 local_policy.jar
US_export_policy.jar 解除限制否则会报
java.security.InvalidKeyException: Illegal key size or default parameters
对应解决办法去oracle官网下载 local_policy.jar,US_export_policy.jar
JDK8 jar包下载地址http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html).
下载后替换掉本地的包,提前把本地的包备份
\jre\lib\security\下
local_policy.jar
US_export_policy.jar
未完待续
相关参考
lAES-256-ECB PKCS7Padding 解密 微信退款接口https://blog.csdn.net/hjh15827475896/article/details/92805191.
java 微信退款结果通知解密https://blog.csdn.net/qq_38812189/article/details/81745964.