diff --git a/rowers/braintreestuff.py b/rowers/braintreestuff.py index 4d54595c..3a1aec64 100644 --- a/rowers/braintreestuff.py +++ b/rowers/braintreestuff.py @@ -52,6 +52,17 @@ else: from rowers.models import Rower,PaidPlan, CoachingGroup from rowers.utils import ProcessorCustomerError +def webhook(request): + webhook_notification = gateway.webhook_notification.parse( + str(request.POST['bt_signature']), + request.POST['bt_payload']) + + # Example values for webhook notification properties + print(webhook_notification.kind) # "subscription_went_past_due" + print(webhook_notification.timestamp) # "Sun Jan 1 00:00:00 UTC 2012" + + return Response(status=200) + def create_customer(rower,force=False): if not rower.customer_id or force: result = gateway.customer.create( diff --git a/rowers/urls.py b/rowers/urls.py index 87a5cfb8..de7a0fb2 100644 --- a/rowers/urls.py +++ b/rowers/urls.py @@ -921,6 +921,7 @@ urlpatterns = [ re_path(r'^history/$',views.history_view,name="history_view"), re_path(r'^history/user/(?P\d+)/data/$',views.history_view_data,name="history_view_data"), re_path(r'^history/data/$',views.history_view_data,name="history_view_data"), + re_path(r'^braintree/$',views.braintree_webhook_view,name="braintree_webhook_view"), ] if settings.DEBUG: diff --git a/rowers/views/paymentviews.py b/rowers/views/paymentviews.py index 344f84ac..61daa11c 100644 --- a/rowers/views/paymentviews.py +++ b/rowers/views/paymentviews.py @@ -5,6 +5,10 @@ from __future__ import unicode_literals from rowers.views.statements import * +def braintree_webhook_view(request): + braintreestuff.webhook(request) + return JsonResponse(status=200) + def paidplans_view(request): if not request.user.is_anonymous: r = request.user.rower