请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

支付成功后没有收到post请求

老师,远程调试的时候,我在网页端支付成功后,等待他自己跳转,是收到get请求的,但是我支付成功后,立即关闭网页,后台收不到post请求

class PayReturnView(View):
    def get(self, request):
        processed_dict = {}
        for key, value in request.GET.items():
            processed_dict[key] = value

        sign = processed_dict.pop("sign", None)

        pay = AliPay(
            appid="2016092100558978",
            app_notify_url="http://178.128.2.120:8001/userpay_return/",
            app_private_key_path="./private_2048.txt",
            alipay_public_key_path="./alipay_key.txt",  # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
            debug=True,  # 默认False,
            return_url="http://178.128.2.120:8001/userpay_return/"
        )

        verify_result = pay.verify(processed_dict, sign)

        if verify_result is True:

            # generated by merchant
            out_trade_no = processed_dict.get("out_trade_no", None)
            # generated by alipay
            trade_no = processed_dict.get("trade_no", None)
            trade_status = processed_dict.get("trade_status", None)

            order = Order.objects.get(out_trade_no=out_trade_no)
            order.pay_status = "success"
            order.trade_no = trade_no
            order.pay_time = datetime.now()
            order.save()

            orders = Order.objects.filter(user=request.user)

            return render(request, 'usercenter_order.html', {
                "current_page": "user_center",
                "orders": orders
            })

    def post(self, request):
        processed_dict = {}
        for key, value in request.GET.items():
            processed_dict[key] = value

        sign = processed_dict.pop("sign", None)

        pay = AliPay(
            appid="2016092100558978",
            app_notify_url="http://178.128.2.120:8001/userpay_return/",
            app_private_key_path="./private_2048.txt",
            alipay_public_key_path="./alipay_key.txt",  # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
            debug=True,  # 默认False,
            return_url="http://178.128.2.120:8001/userpay_return/"
        )

        verify_result = pay.verify(processed_dict, sign)

        if verify_result is True:
            # generated by merchant
            out_trade_no = processed_dict.get("out_trade_no", None)
            # generated by alipay
            trade_no = processed_dict.get("trade_no", None)
            trade_status = processed_dict.get("trade_status", None)

            order = Order.objects.get(out_trade_no=out_trade_no)
            order.pay_status = "success"
            order.pay_time = datetime.now()
            order.trade_no = trade_no
            order.save()
            return HttpResponse("success")

正在回答 回答被采纳积分+3

1回答

bobby 2018-11-18 18:01:34

支付成功后,支付宝会向你当时注册的post接口发送数据的,你这里说到的收不到数据是如何确定的呢? 是远程debug方式启动的吗?是线上的ip地址吗?

0 回复 有任何疑惑可以回复我~
  • 提问者 Ghost #1
    嗯 远程调试的,ip地址也是线上的,上面的代码里有 都是用的这个
    "http://178.128.2.120:8001/userpay_return/"
    回复 有任何疑惑可以回复我~ 2018-11-21 13:23:13
  • bobby 回复 提问者 Ghost #2
    你加我的qq 442421039
    回复 有任何疑惑可以回复我~ 2018-11-24 08:42:08
  • 老师这个问题解决了吗。我这边也遇到这个问题。支付成功之后不执行异步回调
    回复 有任何疑惑可以回复我~ 2019-07-20 20:13:00
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信