Webhooks

Parse

When webhooks are triggered in the gateway, a notification is sent as a POST request to the specified destination URL. The post body contains two x-www-form-urlencoded parameters:

  • bt_signature
  • bt_payload

This payload is signed to ensure that the message originated from Braintree and was not modified in transit. The message is identical to standard API responses and contains a snapshot of the related entity at the time the webhook was triggered.

These parameters should be passed to the viewModel.parse_method. The result will be a WebhookNotification object consisting of:

  • A timestamp (in UTC)
    • Tip: Notifications may not be delivered sequentially, so be sure to look at the timestamp of the event.
  • A kind (directly mapped to triggers)
  • A standard Braintree object, depending on the type of notification (e.g. a subscription object for recurring billing webhooks)
    • Tip: Save webhook data to your database for reporting purposes or use it to trigger other actions in your app
  1. Ruby
ruby
post "/webhooks" do
    webhook_notification = gateway.webhook_notification.parse(
        request.params["bt_signature"],
        request.params["bt_payload"]
    )
    # Example values for webhook notification properties
    puts webhook_notification.kind # "subscription_went_past_due"
    puts webhook_notification.timestamp # "Sun Jan 1 00:00:00 UTC 2012"
    return 200
end

ExceptionsAnchorIcon

An invalid signature exception is raised if the webhook notification you attempt to parse has an invalid signature.

RetriesAnchorIcon

If a webhook takes longer than 30 seconds to respond, it is considered a timeout and will be retried. We will resend webhook notifications every hour for up to 3 hours in sandbox, or up to 24 hours in production, until the webhook responds with a successful HTTPS response code (i.e. ‘2xx’) within 30 seconds.

If you accept cookies, we’ll use them to improve and customize your experience and enable our partners to show you personalized PayPal ads when you visit other sites. Manage cookies and learn more