后台异步通知
微信服务器发来的notify异步通知,才是支付成功的最终标志,这一步处于安全起见,我们必须进行延签:
延签代码如下:
def isTenpaySign(self, params):
helper = WeixinRequestHandler()
sign = helper.createMD5Signature(params)
return params[‘sign‘] == sign
整体流程如下:
‘‘‘微信服务器向后台发送的异步通知‘‘‘
class WeixinAppNotifyHandler(BasicTemplateHandler):
def initialize(self):
self.weixinResponseHandler = WeixinResponseHandler()
def post(self):
‘‘‘解析参数‘‘‘
params = self.parseQueryString()
‘‘‘验证是否是weixin服务器发回的消息‘‘‘
verifyWeixinSign = self.weixinResponseHandler.isTenpaySign(params)
‘‘‘处理订单‘‘‘
if verifyWeixinSign:
‘‘‘订单逻辑‘‘‘
order_no = str(params[‘out_trade_no‘])
order_no = order_no[0:-2]
print ‘%s paied successfully‘ % order_no
self.saveWeixinReceipt(params)
updateOrdersPaidByWeixin(order_no) #更新订单使用状态
consumeCouponByOrderNo(order_no) #优惠券已经使用
self.write("success")
else:
self.write("fail")
def parseQueryString(self):
‘‘‘获取url中所有的参数‘‘‘
uri = self.request.uri
‘‘‘解析出URI中的query字符串‘‘‘
parseResult = urlparse.urlparse(uri)
query = parseResult.query
‘‘‘解析query字符串‘‘‘
params = urlparse.parse_qs(query)
for item in params:
params[item] = params[item][0].strip()
return params
最后说明一点,用户在手机上付完款,并不算支付成功,只有weixin服务器收到notify通知返回的success时,才算交易最终成功,此时我们的手机可以收到微信官方发来的一条消息。
以上就是对微信支付开发流程的资料整理,后续继续补充相关资料,谢谢大家对本站的支持!







