Accrue.Processor.Stripe.ErrorMapper (accrue v0.3.0)

Copy Markdown View Source

Translates raw LatticeStripe error shapes into Accrue.Error subtypes (D-07, PROC-07, OBS-06).

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 (T-PROC-02 mitigation).

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

Per D-08, 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. Per T-PROC-01, this field MUST NOT be logged verbatim — downstream logging sanitizer is a Plan 06 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).