# -*- coding: utf-8 -*-
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
import pymysql
import json
import xmltodict
from hashlib import md5
from tornado.options import define, options####################微信支付异步回调消息########################
WEIXIN_KEY = '8mdRLb1yeesYssfasdfsadfassdaV'
def generate_sign(params):
"""
生成md5签名的参数
"""
if 'sign' in params:
params.pop('sign')
src = '&'.join(['%s=%s' % (k, v) for k, v in sorted(params.items())]) + '&key=%s' % WEIXIN_KEY
return md5(src.encode('utf-8')).hexdigest().upper()
def validate_sign(resp_dict):
"""
验证微信返回的签名
"""
if 'sign' not in resp_dict:
return False
wx_sign = resp_dict['sign']
sign = generate_sign(resp_dict)
if sign == wx_sign:
return True
return False
def handle_wx_response_xml(params):
"""
处理微信支付返回的xml格式数据
"""
try:
resp_dict = xmltodict.parse(params)['xml']
if not resp_dict or len(resp_dict) < 1:
print('resp_dict is zero++