Saya sedang mengerjakan proyek untuk membuat fungsi berlangganan untuk produk kami. Saya membuat fungsi untuk memeriksa apakah kode kupon yang dimasukkan oleh pengguna cocok dengan kupon.id di strip jika ya maka itu harus menyimpannya di sesi lain itu akan menampilkan pesan "kode salah". Kode saya sepertinya salah dan tidak berfungsi. Tolong bantu !!!

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>

-2
sammy1180 7 Juli 2020, 10:36

1 menjawab

Jawaban Terbaik

Dua kemungkinan masalah:

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

Kesalahan yang Diketahui:

 coupon.DoesNotExist # is not valid

Anda perlu menangani pengecualian dengan benar seperti:

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

Jika Anda memiliki paket stripe, atur Kunci API, dan buat kupon melalui Stripe, ini akan berfungsi.

Sehubungan dengan suara turun, Anda seharusnya mendapatkan kesalahan seperti ini: "NameError: nama 'kupon' tidak ditentukan". Kemudian Anda dapat mengajukan pertanyaan yang lebih spesifik, bagaimana menangani permintaan stripe yang tidak valid, yang jawabannya adalah:

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

Jika ini bukan solusinya, pastikan Anda menggunakan Stripe dengan benar. Apakah Anda melakukan upaya yang berhasil?

2
Arthur Choate 7 Juli 2020, 14:18