收藏
回答

微信支付退款会回调req_info解密

微信支付退款回调返回数据是xml格式。

我的req_info解密方法

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import base64
from Crypto.Cipher import AES
import hashlib


def aes_ecb_pkcs7(body, key):
    """AES-ECB模式解密PKCS7Padding"""
    unpad = lambda s: s[:-ord(s[len(s) - 1:])]
    cipher = AES.new(key, AES.MODE_ECB)
    return unpad(cipher.decrypt(body))


def decode_refund_response(body, key):
    """微信服务器通知退款通知结果的时候使用,解密加密字符串"""
    # 一: 进行base64解码
    body = base64.b64decode(body.encode('utf-8'))
    # 二: key做md5,得到32位小写key*
    key = hashlib.md5(key.encode("utf-8")).hexdigest()
    # 三: key*对加密串B做AES-256-ECB解密(PKCS7Padding)
    info = aes_ecb_pkcs7(body, key)
    return info

现在解密出来的是一堆乱码,有大神知道是哪里不对么?

��KurCK6p��B��0A����F�M������W��b�G�p����::.R�}Jnc�.�u2f�9"T0�V=����Q��7�GF۲<&}���^H�6F������7M�������1_Kc/���Yt�)#@e���e�𑶁��y8��7C���[D��~�Q��]���e�aM^�պ��vs]���梈��j�|j�6g�C�Qw�����N-T!���6�l�I7:���Ho:��?g]�Q�êܐ�lϷ�:k��^DC�� �8����*�Ȥ@�U�.���4�7����?{�����Jl�Ŀ�4�:��e�c"���뵞f��J�,�%Y���Q��]��@��!� A���i�T�����/��Pw���44R�Q��#��д���_ ��$�pg<���t��I��[Q�ǿD�\�c�Z�Zj�[�j�ͣ��8Ǵ�
#�5�~��D���o�!�])+A��3�SS���:�.LK��#����6lC������D�rO����4��*NՙO��7 KK{\	��5/뱓e�'�
gLi���?�3���@1)Bw|�pu��UZ�6S��;��� ٥�"�x.�/0���!��8�

进行base64解码后已经是乱码了,然后进行aes解密,就是上面的乱码了?微信官方使用的不是utf-8格式的编码么?

注:上述方法用过一段时间,可以正常使用,但是现在不能使用了。

最后一次编辑于  2020-09-02
回答关注问题邀请回答
收藏

3 个回答

登录 后发表内容
问题标签