X402.Extensions.PaymentIdentifier.Adapter (X402 v0.9.0)

Copy Markdown View Source

X402.Extension adapter advertising the payment-identifier extension.

plug X402.Plug.PaymentGate,
  routes: [...],
  payment_identifier_cache: MyApp.PaymentCache,
  extensions: [{X402.Extensions.PaymentIdentifier.Adapter, required: true}]

Every 402 response advertises X402.Extensions.PaymentIdentifier.extension(required: ...). Validation of the echoed id, the required rule, the request-fingerprint binding, and the :x402_payment_id assign are built into X402.Plug.PaymentGate and apply to the advertisement this adapter produces exactly as they do to a static extensions: %{"payment-identifier" => ...} route entry.

Summary

Functions

Advertises the extension with the configured required flag.

Validates the adapter options.

Returns "payment-identifier".

Functions

advertise(opts, context)

(since 0.9.0)
@spec advertise(
  keyword(),
  X402.Hooks.RequestContext.t()
) :: map()

Advertises the extension with the configured required flag.

Examples

iex> context = X402.Hooks.RequestContext.new([])
iex> X402.Extensions.PaymentIdentifier.Adapter.advertise([required: true], context)["info"]
%{"required" => true}

init(opts)

(since 0.9.0)
@spec init(keyword()) :: {:ok, keyword()} | {:error, String.t()}

Validates the adapter options.

Options

  • :required (boolean/0) - Whether clients must supply an id (info.required). The default value is false.

Examples

iex> X402.Extensions.PaymentIdentifier.Adapter.init([])
{:ok, [required: false]}

iex> {:error, message} = X402.Extensions.PaymentIdentifier.Adapter.init(required: "yes")
iex> message =~ ":required"
true

key()

(since 0.9.0)
@spec key() :: String.t()

Returns "payment-identifier".

Examples

iex> X402.Extensions.PaymentIdentifier.Adapter.key()
"payment-identifier"