Skip to content

Commit

Permalink
added stripe webhook handler example
Browse files Browse the repository at this point in the history
  • Loading branch information
jar-stripe committed Sep 26, 2024
1 parent 2e5e91f commit 9467274
Showing 1 changed file with 36 additions and 0 deletions.
36 changes: 36 additions & 0 deletions examples/stripe_webhook_handler.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import os
from stripe import StripeClient
from stripe.events import V1BillingMeterErrorReportTriggeredEvent

from flask import Flask, request, jsonify

app = Flask(__name__)
api_key = os.environ.get('STRIPE_API_KEY')
webhook_secret = os.environ.get('WEBHOOK_SECRET')

client = StripeClient(api_key)

@app.route('/webhook', methods=['POST'])
def webhook():
webhook_body = request.data
sig_header = request.headers.get('Stripe-Signature')

try:
thin_event = client.parse_thin_event(webhook_body, sig_header, webhook_secret)

# Fetch the event data to understand the failure
event = client.v2.core.events.retrieve(thin_event.id)
if isinstance(event, V1BillingMeterErrorReportTriggeredEvent):
# CHECK: fetch_object is present and callable, returning a strongly-typed object (without casting)
meter = event.fetch_related_object()
meter_id = meter.id

# Record the failures and alert your team
# Add your logic here

return jsonify(success=True), 200
except Exception as e:
return jsonify(error=str(e)), 400

if __name__ == '__main__':
app.run(port=4242)

0 comments on commit 9467274

Please sign in to comment.