吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1238|回复: 0
收起左侧

[求助] python用支付宝notify_url遇到的问题

[复制链接]
thepoy 发表于 2020-3-28 14:02

用的flask-restful,如果只调用notify_url的话,支付宝能正确post到我的服务器notify_url,所以能正确修改订单状态。但看到官方文档时有些不懂:
https://opendocs.alipay.com/open/270/105902

  • 程序执行完后必须打印输出“success”(不包含引号)。如果商户反馈给支付宝的字符不是 success 这7个字符,支付宝服务器会不断重发通知,直到超过24小时22分钟。一般情况下,25小时以内完成8次通知(通知的间隔频率一般是:4m,10m,10m,1h,2h,6h,15h);

  • 程序执行完成后,该页面不能执行页面跳转。如果执行页面跳转,支付宝会收不到 success 字符,会被支付宝服务器判定为该页面程序运行出现异常,而重发处理结果通知;

restful下,执行完代码后没有输出“success”服务器并没有重复发送通知,如何才能将“success”反馈给支付宝呢?到需不需要这个“success”呢?

def post(self):
    # start  验签
    args = request.form.to_dict()
    print(args)
    sign = args.pop('sign', None)
    order_id = args.pop('out_trade_no', None)
    if not order_id:
        return ''
    order_id = order_id[:-20]

    args.pop('sign_type')
    params = sorted(args.items(), key=lambda e: e[0], reverse=False)  # 取出字典元素按key的字母升序排序形成列表
    message = '&'.join(u"{}={}".format(k, v) for k, v in params).encode()  # 将列表转为二进制参数字符串
    try:
        status = verify_with_rsa(ALIPAY_PUBLIC_KEY.encode('utf-8').decode('utf-8'), message, sign)
    except:
        status = False
    # end  验签

    order = OrderModel.query.get(order_id)
    if not order:
        return ''
    if not status:
        order.o_valid = NOT_VALID
        order.save()
        return ''
    if order.o_status:
        return ''

    order.o_status = PAID
    order.o_valid = NOT_VALID
    order.save()

    return ''

我的代码很简单,也能用,但不知道这样用对不对

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-30 06:49

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表