Handle Duplicate Events Gracefully:Orum may retry webhook deliveries, so implement idempotent processing:
Copy
Ask AI
def process_webhook_event(event_data): event_id = event_data['event_id'] # Check if event was already processed if is_event_processed(event_id): return {"status": "already_processed"}, 200 # Process the event result = handle_event(event_data) # Mark event as processed mark_event_processed(event_id) return {"status": "success"}, 200
# Good: Subscribe to specific events you needsubscribed_events = [ "transfer_updated", "person_verified", "business_rejected"]# Avoid: Subscribing to all events if you only need a few
Don’t Assume Event Order:Orum doesn’t guarantee webhook delivery order, so design your processing accordingly:
Copy
Ask AI
def handle_transfer_update(event_data): transfer = event_data['event_data']['transfer'] transfer_id = transfer['id'] new_status = transfer['status'] updated_at = transfer['updated_at'] # Check if this is the latest update current_transfer = get_transfer_from_db(transfer_id) if current_transfer and current_transfer['updated_at'] > updated_at: logger.info(f"Ignoring older update for transfer {transfer_id}") return {"status": "outdated"}, 200 # Process the update update_transfer_status(transfer_id, new_status, updated_at) return {"status": "processed"}, 200
# Install ngroknpm install -g ngrok# Expose local webhook endpointngrok http 3000# Use the HTTPS URL for webhook configuration# https://abc123.ngrok.io/webhook