条带订阅优惠券未在第一个结算周期中应用

时间:2016-04-11 22:29:46

标签: python django stripe-payments

我正在使用优惠券代码' FIRSTTIME自动为我的服务的首次订阅者提供50%的折扣。'但是,我注意到50%的折扣始终适用于第二个结算周期,而不是第一个。结算周期是每周一次,我希望第一个结算周期能够获得50%的折扣。

在Stripe中,我的优惠券配置如下:

  • ID:FIRSTTIME
  • 百分比折扣:50%折扣
  • 持续时间:一次
  • 兑换日期:2016/12/31
  • 有效:正确

此外,您可以在下方看到 views.py

if request.method == "POST":
        form = SubscriptionPaymentForm(request.POST)
        if form.is_valid():
            token = stripe.Token.create(
                card = {
                  "number": form.cleaned_data['number'],
                  "exp_month": form.cleaned_data['expiration'].month,
                  "exp_year": form.cleaned_data['expiration'].year,
                  "cvc": form.cleaned_data['cvc'],
                  "name": form.cleaned_data['name']
                },
            )
            c = stripe.Customer.retrieve(customer.stripe_id)
            c.sources.create(source=token.id)
            try:
                sub = c.subscriptions.retrieve(subscription.stripe_id)
                sub.plan = subscription.weekly_plan
                sub.save()
            except:
                sub = c.subscriptions.create(plan=subscription.weekly_plan)
                sub.coupon = "FIRSTTIME"
                sub.save()
                subscription.stripe_id = sub.id
                subscription.save()
                subscription.send_subscription_email(email)
            subscription.name = form.cleaned_data['name']           
            subscription.checked_out = True
            subscription.status = "Paid"
            subscription.save()
            return HttpResponseRedirect('/profile/')

我在Ubuntu上使用Django和Apache2服务器。

1 个答案:

答案 0 :(得分:0)

这是我犯的一个非常简单,合乎逻辑的错误,我已经纠正了。我正在创建一个客户对象,然后创建一个订阅对象,最后将折扣代码应用于已经创建的订阅对象。创建订阅对象会立即向客户收取费用,因为我在创建初始订阅后应用了优惠券,因此未在第一个结算周期中应用优惠券。

为了在第一个周期向客户收费,最好在首次创建客户时将优惠券与客户对象相关联。