收藏
回答

python解密微信退款回调数据报错?

环境:python3.9.13

import base64,hashlib
from Crypto.Cipher import AES

class AESCipher():
    def __init__(self, key):
        self.key = hashlib.md5(key.encode('utf8')).hexdigest().encode('utf8')
        # 最后面一定要加上.encode('utf8')意思是str转换为byte
        # 否则会出现TypeError: Object type <class 'str'> cannot be passed to C code
        self.BLOCK_SIZE = 32  # Bytes
        self.pad = lambda s: s + (self.BLOCK_SIZE - len(s) % self.BLOCK_SIZE) * \
                             chr(self.BLOCK_SIZE - len(s) % self.BLOCK_SIZE)
        self.unpad = lambda s: s[:-ord(s[len(s) - 1:])]
    # 加密
    def encrypt(self, raw):
        raw = self.pad(raw)
        cipher = AES.new(self.key, AES.MODE_ECB)
        return base64.b64encode(cipher.encrypt(raw))
    # 解密,针对微信用此方法即可
    def decrypt(self, enc):
        enc = base64.b64decode(enc)
        cipher = AES.new(self.key, AES.MODE_ECB)
        return self.unpad(cipher.decrypt(enc)).decode('utf8')

key= '81....................' # API v3密钥
req_info = 'Y+ysoSVQ0N2BI7A9..........yNwPFsjw=='# 微信发来的带解密数据
print('解密后的结果', AESCipher(key).decrypt(req_info))


解析后报错了啊。


到底是哪里出了问题啊?网上只能找到这些资料,官方也没有搞个demo,难受,搞了几天了。。。。要疯了


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

1 个回答

  • 阿白
    阿白
    2022-08-29

    python开发者可以使用已经封装好的“微信支付 V3 API Python SDK”

    https://github.com/minibear2021/wechatpayv3

    2022-08-29
    有用 1
    回复 2
    • 习习睡了
      习习睡了
      发表于移动端
      2022-08-29
      我支付就是用的这个,他里面没有退款的回调。
      2022-08-29
      回复
    • 阿白
      阿白
      2022-08-29回复习习睡了
      仔细看下文档,sdk已经封装了所有通知回调。
      2022-08-29
      回复
登录 后发表内容