吾常三省之python保存支付结果并修改订单的状态为评价

多为参考,作者自己在学习,(作者也是在参考)

class PaymentStatusView(View):

def get(self, request):
    # 获取前端传入的请求参数
    query_dict = request.GET
    data = query_dict.dict()
    # 获取并从请求参数中剔除signature
    signature = data.pop('sign')

    # 创建支付宝支付对象
    alipay = AliPay(
    #在配置文件中设置好 appid支付宝开发环境中生成
        appid=settings.ALIPAY_APPID,
        app_notify_url=None,
        
		 #生成应用密钥
        ($ openssl
        $ OpenSSL> genrsa -out app_private_key.pem 2048  # 制作私钥RSA2
        $ OpenSSL> rsa -in app_private_key.pem -pubout -out app_public_key.pem # 导出公钥)

       
        #私钥公钥路径(作者的密钥所在的路径,适当更改)
        app_private_key_path=os.path.join(os.path.dirname(os.path.abspath(__file__)), "keys/app_private_key.pem"),
        alipay_public_key_path=os.path.join(os.path.dirname(os.path.abspath(__file__)), "keys/alipay_public_key.pem"),
        sign_type="RSA2",
        debug=settings.ALIPAY_DEBUG
    )
    # 校验这个重定向是否是alipay重定向过来的
    success = alipay.verify(data, signature)
    if success:
        # 读取order_id
        order_id = data.get('out_trade_no')
        # 读取支付宝流水号
        trade_id = data.get('trade_no')
        # 保存Payment模型类数据
        Payment.objects.create(
            order_id=order_id,
            trade_id=trade_id
        )

        # 修改订单状态为待评价update具体参数在表数据中查询
        OrderInfo.objects.filter(order_id=order_id, status=OrderInfo.ORDER_STATUS_ENUM['UNPAID']).update(
            status=OrderInfo.ORDER_STATUS_ENUM["UNCOMMENT"])

        # 响应trade_id
        context = {
            'trade_id':trade_id
        }
        return render(request, 'pay_success.html', context)
    else:
        # 订单支付失败,重定向到我的订单
        return http.HttpResponseForbidden('非法请求')
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值