【问题标题】:stripe: iterate over ALL coupons条纹:遍历所有优惠券
【发布时间】:2018-08-24 21:40:50
【问题描述】:

我在我的网站中使用了条纹。我正在尝试检查用户提供的输入是否与优惠券匹配,但我不知道如何迭代所有优惠券(看来我总是需要输入一个范围从 1 到 100 的限制):https://stripe.com/docs/api/python#list_coupons

这是我目前尝试过的,默认只返回 10 张优惠券:

coupons = stripe.Coupon.list(limit=None)

【问题讨论】:

    标签: python stripe-payments


    【解决方案1】:

    阅读文档,您似乎需要对结果进行分页。

    基本上,您请求N 优惠券的第一页,如果还有更多要获取,则从您之前请求的最后一个开始请求下一个N 优惠券。

    查看文档,我想出了这种方法:

    def get_all_coupons(page_size=100):
        last_coupon = None
        while True:
            response = stripe.Coupon.list(limit=page_size, starting_after=last_coupon)
            coupons = response['data']
            if coupons:
                for coupon in coupons:
                    yield coupon
                last_coupon = coupons[-1]
            if not response['has_more']:
                break
    

    get_all_coupons() 返回一个生成器,生成所有优惠券,一次获取 100 个。


    注意:我没有对此进行测试。

    【讨论】:

    • 这行得通,但您不需要这样做。在 stripe-python 中有一个 auto_paging_iterator 可以为您处理这一切(在 this 页面上向下滚动一点:for coupon in stripe.Coupon.list().auto_paging_iter():
    【解决方案2】:

    我从未使用过条纹,但文档说您可以使用starting_after 属性来定义您在优惠券列表中的位置。我不知道如何从它返回的列表中读取优惠券 ID,但您需要它。

    # Coupons 0 - 100
    coupons_list_1 = stripe.Coupon.list(limit=100)
    # Get last coupon in coupons_list_1 and get its ID
    last_coupon_id = '$1OFF'
    # Coupons 100 - 200
    coupons_list_2  = stripe.Coupon.list(starting_after=last_coupon_id, limit=100)
    
    # Check if user inputted coupon is in either list
    userinput in coupons_list_1 + coupons_list_2 
    

    【讨论】:

      猜你喜欢
      • 2013-08-04
      • 2023-01-17
      • 2023-04-05
      • 2016-05-27
      • 2022-07-22
      • 2018-08-02
      • 2020-12-17
      • 1970-01-01
      • 2019-07-29
      相关资源
      最近更新 更多