Stripe dashbaord показывает 400, хотя stripe listen cli возвращает 200
<<<Как вы можете видеть на скриншотах ниже, мой клиент говорит, что все в порядке и возвращает 200 обратно на stripe, но в моем дашборде я получаю статус 400. Это для приложения django. Имеет ли вообще значение ответ на приборной панели, если его принимает cli? Мы создали четный
@method_decorator(csrf_exempt, name='dispatch')
class StripeWebhook(APIView):
def post(self, request, *args, **kwargs):
return HttpResponse({status: "success"},status=200)
#all the code below is our normal logic. we are just trying to do a sanity test
#to see if the dashboard picks up the 200
print('received payment. in webhook')
stripe.api_key = settings.STRIPE_TEST_SECRET
event = None
payload = request.body
sig_header = request.META["HTTP_STRIPE_SIGNATURE"]
try:
event = stripe.Webhook.construct_event(
payload, sig_header, 'settings.WEBHOOK_SECRET'
)
except ValueError as e:
print("aaa")
print(e)
return HttpResponse(status=400)
except stripe.error.SignatureVerificationError as e:
print('bbb')
print(e)
return HttpResponse(status=400)
if event['type'] == 'checkout.session.completed':
print('payment success')
elif event['type'] == 'payment_intent.payment_failed':
# Handle failed payment intent event
print('payment failed')
return HttpResponse('something went wrong', status=400)
return HttpResponse({'status': 'success'})
(https://i.sstatic.net/BUgJsnzu.png) #stipe cli logs
(https://i.sstatic.net/itoTZ4bj.png) #stipe dashboard
мы попробовали сразу вернуть статус 200 на stripe.
Вы всегда должны возвращать Stripe значение 200 при успешном получении веб-хука. Это означает, что HTTP-запрос был получен, а не то, что произошла ошибка при разборе самого вебхука. Любые ошибки, которые вам нужно обработать, должны быть обработаны в обработчике вебхука после того, как вы вернете 200.