Wrapping paypal ipn in an assertionerror check because sometimes paypal sends webhooks to ipn endpoint.

This commit is contained in:
Samuel Clay 2022-07-01 15:04:56 -04:00
parent 3c0cab8d8e
commit add08159dc
2 changed files with 10 additions and 1 deletions

View file

@ -17,7 +17,8 @@ urlpatterns = [
url(r'^switch_paypal_subscription/?', views.switch_paypal_subscription, name='switch-paypal-subscription'),
url(r'^is_premium/?', views.profile_is_premium, name='profile-is-premium'),
url(r'^is_premium_archive/?', views.profile_is_premium_archive, name='profile-is-premium-archive'),
url(r'^paypal_ipn/?', include('paypal.standard.ipn.urls'), name='paypal-ipn'),
# url(r'^paypal_ipn/?', include('paypal.standard.ipn.urls'), name='paypal-ipn'),
url(r'^paypal_ipn/?', views.paypal_ipn, name='paypal-ipn'),
url(r'^paypal_webhooks/?', views.paypal_webhooks, name='paypal-webhooks'),
url(r'^stripe_form/?', views.stripe_form, name='stripe-form'),
url(r'^stripe_checkout/?', views.stripe_checkout, name='stripe-checkout'),

View file

@ -270,6 +270,14 @@ def set_collapsed_folders(request):
response = dict(code=code)
return response
def paypal_ipn(request):
try:
return paypal.standard.ipn.views.ipn(request)
except AssertionError:
# Paypal may have sent webhooks to ipn, so redirect
logging.user(request, f" ---> Paypal IPN to webhooks redirect: {request.body}")
return paypal_webhooks(request)
def paypal_webhooks(request):
try:
data = json.decode(request.body)