回调报文解密
发布于 3 年前 作者 yong48 870 次浏览 来自 分享

在使用APIV3接口时,由于回调报文是以密文的形式发送的,那么用户在接收到密文后需进行解密才可以得到明文的业务数据。

但进行解密时是需要获取到回调报文对应商户号设置的APIV3Key才可以进行解密,由于收到的回调报文是密文无法直接得知对应关系来获取APIV3Key。

如果用户是一个商户号对应一个回调通知地址的话那还比较好能够直接得知对应关系,但是在拥有多个商户号且回调通知地址均是同一个的情况下,很多用户都不知道如何去区分回调归属于哪个商户号,那么也就无法获取到对应的APIV3key来解密导致无法开展后续的业务流程,往往会耗费很多时间还无法解决问题。

其实这里微信侧是有提供一个标识来区分回调报文归属于哪个商户号的。

如图所示:

在收到的回调报文HTTP头部Wechatpay-Serial中有包含微信支付平台证书序列号,且每个商户号自身的微信支付平台证书序列号都是微信侧唯一的,在这个前提下,那么方法就来了。

首先统一把所有商户号的微信支付平台证书序列号和商户号都进行对应存储起来,在收到回调报文时通过HTTP头部Wechatpay-Serial中的微信支付平台证书序列号与现有已经存储好的微信支付平台证书序列号进行对比就可以得到回调对应的商户号从获取到对应的APIV3Key来进行解密了。

微信官方提供的回调报文解密示例代码(有提供JAVA、PHP、.NET、Python):https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay4_2.shtml

微信支付平台证书获取教程:https://developers.weixin.qq.com/community/develop/article/doc/000a6c973dc9c839e96c949b85fc13

文笔不太好还望大家多多见谅,如果有建议欢迎留言。

回到顶部