微信支付退款回调返回数据是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���4�4R�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格式的编码么?
注:上述方法用过一段时间,可以正常使用,但是现在不能使用了。
python开发者可以使用已经封装好的“微信支付 V3 API Python SDK”
https://github.com/minibear2021/wechatpayv3
我以前也是用过一段时间是正常的,突然回调出问题,回去查也是解密出来乱码的。我是PHP
https://wechatpay-api.gitbook.io/wechatpay-api-v3/qian-ming-zhi-nan-1/zheng-shu-he-hui-tiao-bao-wen-jie-mi 回调解密麻烦参看这篇文档。