SetuClient.Webhook.Callbacks behaviour (Setu Client v1.0.0)

Copy Markdown View Source

Behaviour defining the webhook callback interface.

Implement this in your module and pass it to SetuClient.Webhook.Handler. Default no-op implementations are provided via use SetuClient.Webhook.Callbacks.

Example

defmodule MyApp.SetuCallbacks do
  use SetuClient.Webhook.Callbacks

  @impl SetuClient.Webhook.Callbacks
  def handle_payment(%{"eventType" => "payment.success"} = event) do
    MyApp.Orders.mark_paid(event["merchantReferenceId"])
    :ok
  end

  def handle_payment(_event), do: :ok

  @impl SetuClient.Webhook.Callbacks
  def handle_consent(event) do
    if SetuClient.Webhook.Handler.consent_active?(event) do
      MyApp.AA.create_data_session(SetuClient.Webhook.Handler.consent_id(event))
    end

    :ok
  end
end

Summary

Callbacks

Called for BBPS BILL_SETTLEMENT_STATUS events.

Called for CONSENT_STATUS_UPDATE events.

Called for all dispute_* events.

Called for all mandate status and mandate operation events.

Called for payment events: initiated, pending, success, failed.

Called for refund.pending and refund.successful events.

Called for SESSION_STATUS_UPDATE events.

Called for unrecognised event types.

Callbacks

handle_bbps_settlement(event)

(optional)
@callback handle_bbps_settlement(event :: map()) :: :ok | {:error, term()}

Called for BBPS BILL_SETTLEMENT_STATUS events.

handle_consent(event)

(optional)
@callback handle_consent(event :: map()) :: :ok | {:error, term()}

Called for CONSENT_STATUS_UPDATE events.

handle_dispute(event)

(optional)
@callback handle_dispute(event :: map()) :: :ok | {:error, term()}

Called for all dispute_* events.

handle_mandate(event)

(optional)
@callback handle_mandate(event :: map()) :: :ok | {:error, term()}

Called for all mandate status and mandate operation events.

handle_payment(event)

(optional)
@callback handle_payment(event :: map()) :: :ok | {:error, term()}

Called for payment events: initiated, pending, success, failed.

handle_refund(event)

(optional)
@callback handle_refund(event :: map()) :: :ok | {:error, term()}

Called for refund.pending and refund.successful events.

handle_session(event)

(optional)
@callback handle_session(event :: map()) :: :ok | {:error, term()}

Called for SESSION_STATUS_UPDATE events.

handle_unknown(event)

(optional)
@callback handle_unknown(event :: map()) :: :ok | {:error, term()}

Called for unrecognised event types.