使用 Python 检索 Stripe 中的优惠券



我正在做一个项目,为我们的产品创建一个订阅功能。我正在创建一个函数来检查用户输入的优惠券代码是否与条纹中的 coupon.id 匹配,如果匹配,那么它应该将其存储在会话中,否则它应该显示"不正确的代码"消息。我的代码似乎不正确并且不起作用。请帮忙!!

views.py
def retrieve_coupon(request):
if request.method == 'POST':
form = CouponApplyForm(request.POST)
if form.is_valid():
code = form.cleaned_data['code']
try:
coupon_id = stripe.Coupon.retrieve(code)
request.session['coupon'] = code

except coupon.DoesNotExist:
messages.info(request, "This coupon does not exist")
request.session['coupon'] = None
context={
'form':form
}
return render(request, "retrieve_coupon.html", context)
forms.py
class CouponApplyForm(forms.Form):
code = forms.CharField()
template
<div class="divo">
<p>
coupon code to apply discount
</p>
<form action="" method="post">
{% csrf_token %}
{{ form }}

<input type="submit" value="apply" class="btn">
<ul class="messages">
{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</ul>
</form>
</div>

两个可能的问题:

import stripe # make sure this is imported and a python package
stripe.api_key = "SECRET_STRIPE_API_KEY" # Set the API key.

已知错误:

coupon.DoesNotExist # is not valid

您需要正确处理异常,如下所示:

try:
coupon_id = stripe.Coupon.retrieve(code)
request.session['coupon'] = code
except (stripe.error.RateLimitError,
stripe.error.InvalidRequestError,
stripe.error.AuthenticationError,
stripe.error.APIConnectionError,
stripe.error.StripeError,
) as e:
request.session['coupon'] = None
messages.info(request, "Error message")

如果您有条带包,请设置 API 密钥,并通过条纹创建优惠券,这将起作用。

关于反对票,您应该收到这样的错误:"NameError:未定义名称'优惠券'"。然后你可以问一个更具体的问题,如何处理条带无效请求,答案是:

try:
stripe.Coupon.retrieve("invalid_id")
except stripe.error.InvalidRequestError:
# handle error 

如果这不是解决方案,请确保您正确使用 Stripe。您是否进行了成功的尝试?

最新更新