收藏
回答

关于核销事件回调通知API,对回调加密数据进行api v3 解密

关于核销事件回调通知API,对回调加密数据进行api v3 解密,

由于我们有多个商户号,核销的批次数据都来自不同的商户号,

这个时候解密数据是需要api v3密钥,但每个商户号密钥不一致,回调回来不确定应该用那个密钥去解密,

请问这个问题有什么解决方案?


返回来的数据如果携带一个商户号就号解决了,但是返回数据没有这个标识

回答关注问题邀请回答
收藏

2 个回答

  • 北望沣渭
    北望沣渭
    2020-08-27

    回调URL设置成不一样就行,例如 /wechatpay/v3/notify/1230000109 ,应用侧获取到1230000109商户号,然后找密钥,解密对应消息体就行。

    2020-08-27
    有用 1
    回复 4
    • 灰灰
      灰灰
      2020-08-27
      这个可以解决问题,
      但是如果我每次新增一个新的商户号,
      代码层是不是就得跟着新增一个URL接口
      2020-08-27
      回复
    • 北望沣渭
      北望沣渭
      2020-08-27回复灰灰
      上述URL可以做成伪静态,使用动态rewrite,这样不用每次都新增URL
      2020-08-27
      1
      回复
    • 灰灰
      灰灰
      2020-08-27
      可行,大拇指
      2020-08-27
      回复
    • 钜禾
      钜禾
      发表于移动端
      2021-01-07
      你好,请问这样是否可行?是不是更简单一些?不用为每个商户配置不同的回调接口地址。 请求头中有wechatpay_serial 商户证书序列号,根据此参数查出对应的微信商户信息,然后进行相应的验签和解密。
      2021-01-07
      回复
  • 钜禾
    钜禾
    发表于移动端
    2021-01-07
    请求头中有wechatpay_serial 商户证书序列号,根据此参数查出对应的微信商户信息,然后进行相应的验签和解密。
    2021-01-07
    有用
    回复 2
    • 北望沣渭
      北望沣渭
      2021-01-07
      理论上这种方法是可行的,不过要注意的是1.同一个商户,头部的serial可能会有多个serial number(证书快过期的时候会换);2. 另外一个主意点就是,官方没有明确说明,这个序列号是不是多商户公用的,如果是共用的,那么就存在通知凭证消息混淆风险;综上,不如URL自主定义来得实在。
      2021-01-07
      回复
    • 钜禾
      钜禾
      发表于移动端
      2021-01-08回复北望沣渭
      好的,谢谢。这样说的话,相比微信v2, 微信v3通知明文中不包含商户或订单信息,是一个bug还是feature? 徒增了商户接收通知的复杂度,没看出来有什么益处啊?
      2021-01-08
      回复
登录 后发表内容
问题标签