Python 处理Django条带支付异常的问题
对于Django stripe支付,我有一个异常处理问题,当我输入stripe时,会发生异常错误,因此无法将其保存到数据库中 设置.pyPython 处理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
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
引发的,还是在保存到Databasepayment.save()时引发的?您看到了什么错误?是由charge=stripe.charge.create
引发的错误,还是在保存到数据数据库payment.save()时引发的错误?