Django微信小程序支付回调处理

import xmltodict
from django.http import HttpResponse

def notify(request):
    """
    <xml><appid><![CDATA[wx62f4cad175ad0f90]]></appid>
    <attach><![CDATA[test]]></attach>
    <bank_type><![CDATA[ICBC_DEBIT]]></bank_type>
    <cash_fee><![CDATA[1]]></cash_fee>
    <fee_type><![CDATA[CNY]]></fee_type>
    <is_subscribe><![CDATA[N]]></is_subscribe>
    <mch_id><![CDATA[1499579162]]></mch_id>
    <nonce_str><![CDATA[963b42d0a71f2d160b3831321808ab79]]></nonce_str>
    <openid><![CDATA[o9coS0eYE8pigBkvSrLfdv49b8k4]]></openid>
    <out_trade_no><![CDATA[77c4f4aaf484c74b597bdf7856ec8cbf]]></out_trade_no>
    <result_code><![CDATA[SUCCESS]]></result_code>
    <return_code><![CDATA[SUCCESS]]></return_code>
    <sign><![CDATA[E252025255D59FE900DAFA4562C4EF5C]]></sign>
    <time_end><![CDATA[20180624122501]]></time_end>
    <total_fee>1</total_fee>
    <trade_type><![CDATA[JSAPI]]></trade_type>
    <transaction_id><![CDATA[4200000146201806242438472701]]></transaction_id>
    </xml>
    """
    err_resp = "<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[Error]]></return_msg></xml>"
    success_resp = "<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>"
    try:
        msg = request.body.decode('utf-8')
        logger.info('微信回调{}'.format(msg))
        request_dict = dict(xmltodict.parse(msg))
        logger.info(request_dict)
        """
        request_dict = {
            "xml": {
                "openid": "ooNwr5FjEEA1xBr5xL5UeEtJfpAc",
                "trade_type": "JSAPI",
                "cash_fee_type": "CNY",
                "nonce_str": "cf9anQ80ZszBMEuyG6KIAvN1xdVkwm",
                "time_end": "20200520162946",
                "err_code_des": "SUCCESS",
                "return_code": "SUCCESS",
                "mch_id": "1525350361",
                "settlement_total_fee": "101",
                "sign": "F441D89022640568215EE87F2FB62A30",
                "cash_fee": "101",
                "is_subscribe": "Y",
                "return_msg": "OK",
                "fee_type": "CNY",
                "bank_type": "CMC",
                "attach": "sandbox_attach",
                "device_info": "sandbox",
                "out_trade_no": "77c4f4aaf484c74b597bdf7856ec8cbf",
                "result_code": "SUCCESS",
                "total_fee": "101",
                "appid": "wxcc4dfd0d59dad392",
                "transaction_id": "4807228149220200520162946337048",
                "err_code": "SUCCESS"
            }
        }
        """
    except Exception as e:
        logger.error("支付回调数据解析错误{}".format(e))
        return HttpResponse(err_resp, content_type='text/xml', status=200)
    return_code = request_dict['xml']['return_code']
    if return_code == 'FAIL':
        #支付结算失败
        return HttpResponse(err_resp, content_type='text/xml', status=200)
    elif return_code == 'SUCCESS':
        try:
            #处理支付成功逻辑
            return HttpResponse(success_resp, content_type='text/xml', status=200)
        except Exception as e:
            return HttpResponse(err_resp, content_type='text/xml', status=200)

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不会代码的小林

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值