收藏
回答

微信支付资金账单解密报错

框架类型 问题类型 终端类型 AppID 环境ID 基础库版本
小程序 Bug 工具 wxe987f4c6aba1a292 credit-7d0d87 2.12.2

我们云开发的微信支付最近按要求,升级到微信收付通

在使用“二级商户进件”、“交易账单查询”等等API的时候,都能正确运行

唯独在使用“申请二级商户资金账单API”这个接口的时候,解密账单始终不成功

困扰了我2个星期,试过无数的方法依然不能解决,请求官方技术支援!

BUG具体过程如下:

1.请求账单列表 https://api.mch.weixin.qq.com/v3/ecommerce/bill/fundflowbill,得到多个账单分片 - 成功

(1)账单下载地址 download_url

(2)加密密钥 encrypt_key

(3)随机字符串 nonce

2.通过download_url 下载得到账单文件密文ciphertext - 成功

3.用商户证书私钥解密 encrypt_key 得到解密后的 密钥明文key - 成功(32位长度UTF8字符串)

4.利用步骤一、二中得到的账单密文ciphertext,密钥key和接口返回的随机字符串nonce解密账单,得到账单明文 X 解密失败

我使用的是nodejs代码,AES解密过程如附图1

这里cipher64是原始ciphertext经过base64编码后得到的字符串,key、nonce都是使用的utf8编码字符串

会在decipher.final() 那步报错 Unsupported state or unable to authenticate data

为了避免语言带来的干扰,我又试用了下官方封装的java sdk: wechatpay-apache-client,如附图2

其中bill.txt文件就是base64编码后的ciphertext

会报错:Tag Mismatch! 如附图3



最后一次编辑于  2022-03-25
回答关注问题邀请回答
收藏

1 个回答

  • kit
    kit
    2022-03-26

    有微信支付官方大佬来指导下吗?

    2022-03-26
    有用
    回复 1
    • kit
      kit
      2022-03-26
      已解决,通过wechatpay-axios-plugin插件下载的加密账单能解密成功
      2022-03-26
      回复
登录 后发表内容