python微信支付回调

2019-12-21  本文已影响0人  王哈哈就很棒
# 支付回调
@api.route('/payCallback', methods=['POST'])
def payCallback2():
    # 接收微信通知(xml格式)
    xml_data = request.data.decode('utf-8')
    data = xmltodict.parse(xml_data)

    # 微信支付订单号
    transaction_id = data.get('xml').get('transaction_id')
    # 商户订单号
    out_trade_no = data.get('xml').get('out_trade_no')
    # 现金支付金额
    cash_fee = data.get('xml').get('cash_fee')
    # 订单金额
    total_fee = data.get('xml').get('total_fee')
    # 业务结果
    result_code = data.get('xml').get('result_code')
    # 支付完成时间
    time_end = data.get('xml').get('time_end')
    # 用户标识
    openid = data.get('xml').get('openid')

    # 保存订单信息到数据库
    order_info = OrderInfo()
    order_info.transaction_id = transaction_id
    order_info.out_trade_no = out_trade_no
    order_info.cash_fee = cash_fee
    order_info.total_fee = total_fee
    order_info.result_code = result_code
    order_info.time_end = time_end
    order_info.openid = openid
    order_info.datetime = time.strftime('%Y-%m-%d %H:%M:%S')

    try:
        db.session.add(order_info)
        db.session.commit()
    except Exception as e:
        print('err->', e)

    # 商户处理后同步返回给微信参数,告诉微信已经支付完成
    params = {
        'return_code': 'SUCCESS',
        'return_msg': 'OK'
    }

    # 解析字典数据为xml格式返回为微信
    xml_data = xmltodict.unparse({'xml': params}, encoding='UTF-8')
    resp = make_response(xml_data)
    resp.headers["Content-type"] = "application/xml;charset=UTF-8"
    return resp
上一篇下一篇

猜你喜欢

热点阅读