Module: StraddlePay::Webhook

Defined in:
lib/straddle_pay/webhook.rb

Overview

Verifies webhook signatures and parses events from Straddle (Svix) webhooks.

Examples:

Verifying a webhook in a Rails controller

event = StraddlePay::Webhook.construct_event(
  request.body.read,
  request.headers,
  ENV["STRADDLE_WEBHOOK_SECRET"]
)

case event["event_type"]
when StraddlePay::Webhook::Events::CHARGE_CREATED_V1
  handle_charge(event["data"])
end

Defined Under Namespace

Modules: Events, Signature

Class Method Summary collapse

Class Method Details

.construct_event(payload, headers, secret, tolerance: 300) ⇒ Hash

Verifies the webhook signature and returns the parsed event payload.

Parameters:

  • payload (String)

    raw request body

  • headers (Hash, #[])

    request headers (must include svix-id, svix-timestamp, svix-signature)

  • secret (String)

    webhook signing secret (e.g. "whsec_...")

  • tolerance (Integer, nil) (defaults to: 300)

    max age in seconds (default 300, nil to skip)

Returns:

  • (Hash)

    parsed event with string keys

Raises:



31
32
33
34
# File 'lib/straddle_pay/webhook.rb', line 31

def construct_event(payload, headers, secret, tolerance: 300)
  Signature.verify_header(payload, headers, secret, tolerance: tolerance)
  JSON.parse(payload)
end