我们云开发的微信支付最近按要求,升级到微信收付通
在使用“二级商户进件”、“交易账单查询”等等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
有微信支付官方大佬来指导下吗?