我使用StripeAPI支付方法,我的数据库中有一个名为ordered
的布尔字段设置为False
我只希望付款后它是真实的
以下是我的视图.py:
class OrderSummary(LoginRequiredMixin, View):
def post(self, request, *args, **kwargs):
order = Order.objects.get(user=self.request.user) #this is to bring the order
delivered = order.ordered
YOUR_DOMAIN = "http://127.0.0.1:8000"
checkout_session = stripe.checkout.Session.create(
payment_method_types=['card'],
metadata={
"order_id":order.id,
"order":order,
"delivered":delivered
},
mode='payment',
success_url=YOUR_DOMAIN + "/",
cancel_url=YOUR_DOMAIN + "/",
)
return JsonResponse({'id': checkout_session.id})
以下是付费后的webhook视图:
@csrf_exempt
def stripe_webhook(request):
payload = request.body
sig_header = request.META['HTTP_STRIPE_SIGNATURE']
event = None
try:
event = stripe.Webhook.construct_event(
payload, sig_header, endpoint_secret
)
except ValueError as e:
# Invalid payload
return HttpResponse(status=400)
except stripe.error.SignatureVerificationError as e:
# Invalid signature
return HttpResponse(status=400)
if event['type'] == 'checkout.session.completed': #this is to bring the order
session = event['data']['object']
customer_email = session["customer_details"]["email"]
orders =session["metadata"]["delivered"]
orders=True
orders.save()
print(session)
# Passed signature verification
return HttpResponse(status=200)
但我犯了这个错误
AttributeError: 'bool' object has no attribute 'save'
您正在对不是模型对象的变量调用save
尝试:
这是因为您不能.save()变量(此处为orders),必须.save()模型,因此必须检索Order对象并将其Order设置为True,然后.save()将Order对象设置为True
相关问题 更多 >
编程相关推荐