簡體   English   中英

使用 python 檢索條帶中的優惠券

[英]retrieve a coupon in stripe using python

我正在為我們的產品創建訂閱 function 的項目。 我正在創建一個 function 來檢查用戶輸入的優惠券代碼是否與條帶中的 coupon.id 匹配,如果匹配,則應將其存儲在 session 中,否則應顯示“錯誤代碼”消息。 我的代碼似乎不正確並且無法正常工作。 請幫忙 !!!

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")

如果您有條帶 package,請設置 API 密鑰,然后通過條帶創建優惠券,這將起作用。

關於否決票,您應該收到如下錯誤:“NameError: name 'coupon' is not defined”。 然后你可以問更具體的問題,如何處理條帶無效請求,答案是:

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

如果這不是解決方案,請確保您正確使用 Stripe。 您是否在進行成功的嘗試?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM