Skip to content

Instantly share code, notes, and snippets.

@binarymatt
Created February 12, 2012 16:24
Show Gist options
  • Save binarymatt/1809443 to your computer and use it in GitHub Desktop.
Save binarymatt/1809443 to your computer and use it in GitHub Desktop.
Stripe Webhooks
from django.dispatch import Signal
charge_succeeded = Signal(providing_args=["event"])
charge_failed = Signal(providing_args=["event"])
charge_refunded = Signal(providing_args=["event"])
charge_disputed = Signal(providing_args=["event"])
customer_created = Signal(providing_args=["event"])
customer_updated = Signal(providing_args=["event"])
customer_deleted = Signal(providing_args=["event"])
customer_subscription_created = Signal(providing_args=["event"])
customer_subscription_updated = Signal(providing_args=["event"])
customer_subscription_deleted = Signal(providing_args=["event"])
customer_subscription_trial_will_end = Signal(providing_args=["event"])
customer_discount_created = Signal(providing_args=["event"])
customer_discount_updated = Signal(providing_args=["event"])
customer_discount_deleted = Signal(providing_args=["event"])
invoice_created = Signal(providing_args=["event"])
invoice_updated = Signal(providing_args=["event"])
invoice_payment_succeeded = Signal(providing_args=["event"])
invoice_payment_failed = Signal(providing_args=["event"])
invoiceitem_created = Signal(providing_args=["event"])
invoiceitem_updated = Signal(providing_args=["event"])
invoiceitem_deleted = Signal(providing_args=["event"])
plan_created = Signal(providing_args=["event"])
plan_updated = Signal(providing_args=["event"])
plan_deleted = Signal(providing_args=["event"])
coupon_created = Signal(providing_args=["event"])
coupon_updated = Signal(providing_args=["event"])
coupon_deleted = Signal(providing_args=["event"])
transfer_created = Signal(providing_args=["event"])
transfer_failed = Signal(providing_args=["event"])
ping = Signal(providing_args=["event"])
import stripe
from django.views.generic.base import View
from django.utils import simplejson as json
from django.conf import settings
from django.http import HttpResponse, HttpResponseServerError
from ribbon import signals as ribbon_signals
class StripeWebhook(View):
def post(self, request, *args, **kwargs):
api_key = getattr(settings, 'STRIPE_API_KEY')
if not api_key:
raise HttpResponseServerError('could not find api key')
stripe.api_key = api_key
event_json = json.loads(request.body)
event = stripe.Event.retrieve(event_json['id'])
event_type = event['type'].replace('.','_')
sig = getattr(ribbon_signals, event_type)
if sig:
sig.send(sender=self, event=event)
return HttpResponse('success')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment