diff --git a/apps/profile/models.py b/apps/profile/models.py index 79bfc7c59..d9a9bcf2b 100644 --- a/apps/profile/models.py +++ b/apps/profile/models.py @@ -34,6 +34,7 @@ from vendor.paypalapi.interface import PayPalInterface from vendor.paypalapi.exceptions import PayPalAPIResponseError from zebra.signals import zebra_webhook_customer_subscription_created from zebra.signals import zebra_webhook_charge_succeeded +from zebra.signals import zebra_webhook_charge_succeeded class Profile(models.Model): user = models.OneToOneField(User, unique=True, related_name="profile", on_delete=models.CASCADE) diff --git a/apps/profile/urls.py b/apps/profile/urls.py index 6ff4dcddd..102c43bee 100644 --- a/apps/profile/urls.py +++ b/apps/profile/urls.py @@ -11,6 +11,7 @@ urlpatterns = [ url(r'^set_collapsed_folders/?', views.set_collapsed_folders), url(r'^paypal_form/?', views.paypal_form), url(r'^paypal_return/?', views.paypal_return, name='paypal-return'), + url(r'^stripe_return/?', views.paypal_return, name='stripe-return'), url(r'^is_premium/?', views.profile_is_premium, name='profile-is-premium'), url(r'^paypal_ipn/?', include('paypal.standard.ipn.urls'), name='paypal-ipn'), url(r'^paypal_webhooks/?', include('paypal.standard.ipn.urls'), name='paypal-webhooks'), diff --git a/apps/profile/views.py b/apps/profile/views.py index 096ee88af..f921ec300 100644 --- a/apps/profile/views.py +++ b/apps/profile/views.py @@ -485,20 +485,25 @@ def stripe_checkout(request): price = "price_0KK5cvwdsmP8XBlaZDq068bA" if settings.DEBUG: price = "price_0KK5twwdsmP8XBlasifbX56Z" - - checkout_session = stripe.checkout.Session.create( - line_items=[ + + session_dict = { + "line_items": [ { 'price': price, 'quantity': 1, }, ], - mode='subscription', - customer_email=request.user.email, - metadata={"newsblur_user_id": request.user.pk}, - success_url="http://%s%s" % (domain, reverse('paypal-return')), - cancel_url="http://%s%s" % (domain, reverse('index')), - ) + "mode": 'subscription', + "metadata": {"newsblur_user_id": request.user.pk}, + "success_url": "http://%s%s" % (domain, reverse('stripe-return')), + "cancel_url": "http://%s%s" % (domain, reverse('index')), + } + if request.user.profile.stripe_id: + session_dict['customer'] = request.user.profile.stripe_id + else: + session_dict["customer_email"] = request.user.email + + checkout_session = stripe.checkout.Session.create(**session_dict) logging.user(request, "~BM~FBLoading Stripe checkout")