Python 处理Django条带支付异常的问题

Python 处理Django条带支付异常的问题,python,django,stripe-payments,Python,Django,Stripe Payments,对于Django stripe支付,我有一个异常处理问题,当我输入stripe时,会发生异常错误,因此无法将其保存到数据库中 设置.py INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'djang

对于Django stripe支付,我有一个异常处理问题,当我输入stripe时,会发生异常错误,因此无法将其保存到数据库中

设置.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # django crispy
    'crispy_forms',
    # django countries
    'django_countries',
    # init core
    'core',
    # stripe
    'stripe',
]
views.py

from django.conf import settings
import stripe
stripe.api_key = settings.STRIPE_SECRET_KEYS

class PaymentView(View):
    def get(self, *args, **kwargs):
        return render(self.request, "payment.html")

    def post(self, *args, **kwargs):
        order   = Order.objects.get(user=self.request.user, ordered=False)
        token   = self.request.POST.get('stripeToken')
        amount  = int(order.get_total() * 100)

        try:
            # Use Stripe's library to make requests...
            charge  = stripe.Charge.create(
                amount=amount, # sen
                currency="usd",
                source=token
            )

            payment = Payment()
            payment.stripe_charge_id = charge['id']
            payment.user = self.request.user
            payment.amount = order.get_total()
            payment.save()


            order.ordered   = True
            order.payment   = payment
            order.save()

            message.success("Your order successfully")
            return redirect("/")

        except stripe.error.CardError as e:
            # Since it's a decline, stripe.error.CardError will be caught
            body    = json_body
            err     = body.get('error', {})
            messages.error(self.request, f"{err.get('message')}")
            return redirect("/")

        except stripe.error.RateLimitError as e:
            # Too many requests made to the API too quickly
            messages.error(self.request, "Rate limit error")
            return redirect("/")

        except stripe.error.InvalidRequestError as e:
            # Invalid parameters were supplied to Stripe's API
            messages.error(self.request, "Invalid parameter")
            return redirect("/")

        except stripe.error.AuthenticationError as e:
            # Authentication with Stripe's API failed
            # (maybe you changed API keys recently)
            messages.error(self.request, "Not authenticated")
            return redirect("/")

        except stripe.error.APIConnectionError as e:
            # Network communication with Stripe failed
            messages.error(self.request, "Network error")
            return redirect("/")

        except stripe.error.StripeError as e:
            # Display a very generic error to the user, and maybe send
            # yourself an email
            messages.error(self.request, "Something wrong, please try again")
            return redirect("/")

        except Exception as e:
            # Something else happened, completely unrelated to Stripe
            messages.error(self.request, "a serious error, we have been notified")
            return redirect("/")
因为输入stripe字段的结果是发生了其他事情,与stripe完全无关。谢谢你的帮助


检查付款页面中的测试令牌并将其与您的条带公钥匹配

检查付款页面中的测试令牌并将其与您的条带公钥匹配

您看到了什么错误?该错误是由
charge=stripe.charge.create
引发的,还是在保存到Database
payment.save()时引发的?您看到了什么错误?是由
charge=stripe.charge.create
引发的错误,还是在保存到数据数据库
payment.save()时引发的错误?