Accrue.Processor.Stripe.ErrorMapper (accrue v1.0.0)

Copy Markdown View Source

Translates raw LatticeStripe error shapes into Accrue.Error subtypes.

This is one of only two modules in the entire Accrue codebase allowed to reference LatticeStripe — the other is Accrue.Processor.Stripe. The facade-lockdown test in test/accrue/processor/stripe_test.exs enforces this at CI time.

Mapping table

LatticeStripe.Error.typeAccrue error
:card_error%Accrue.CardError{}
:rate_limit_error%Accrue.RateLimitError{}
:idempotency_error%Accrue.IdempotencyError{}
:invalid_request_error%Accrue.APIError{}
:authentication_error%Accrue.APIError{}
:api_error%Accrue.APIError{}
:connection_error%Accrue.APIError{}
anything else%Accrue.APIError{code: "unknown"}

SignatureError raises, never returns

Any webhook signature verification failure is raised, never returned as a tuple. Both the typed %LatticeStripe.Webhook.SignatureVerificationError{} struct and an invalid_request_error with code "signature_verification_failed" trigger an Accrue.SignatureError raise.

Metadata preservation

The full raw error term is stashed in the Accrue error's :processor_error field so operators can debug the original response. This field MUST NOT be logged verbatim — downstream logging sanitizer is a separate concern.

Summary

Functions

Maps an arbitrary term (typically a %LatticeStripe.Error{}) to an Accrue.Error subtype. Raises Accrue.SignatureError for signature verification failures (never returns them).

Functions

to_accrue_error(raw)

@spec to_accrue_error(term()) :: Exception.t()

Maps an arbitrary term (typically a %LatticeStripe.Error{}) to an Accrue.Error subtype. Raises Accrue.SignatureError for signature verification failures (never returns them).