View Source Stripe.Error (stripity_stripe v3.2.0)
A struct which represents an error which occurred during a Stripe API call.
This struct is designed to provide all the information needed to effectively log and maybe respond to an error.
It contains the following fields:
:source
– this is one of:internal
– the error occurred within the library. This is usually caused by an unexpected or missing parameter.:network
– the error occurred while making the network request (i.e.:hackney.request/5
returned an error.) In this case,:code
will always be:network_error
. The:hackney_reason
field in the:extra
map contains the actual error reason received from hackney.:stripe
– an error response was received from Stripe.
:code
– an atom indicating the particular error. See "Error Codes" for more detail.:request_id
– if:source
is:stripe
, this will contain the request ID for logging and troubleshooting. Otherwise, this field isnil
.:message
– a loggable message describing the error. This should not be shown to your users but is intended for logging and troubleshooting.:user_message
– if Stripe has provided a user-facing message (e.g. when a card is declined), this field will contain it. Otherwise it isnil
.:extra
- a map which may contain some additional information about the error. See "Extra Fields" for details.
Extra Fields
The :extra
field contains a map of miscellaneous information about the error which may be
useful. The fields are not present if not relevant. The possible fields are:
:card_code
– when:code
is:card_error
, contains one of Stripe's decline reasons.:decline_code
– an optional short string provided by the bank when a card is declined.:param
– for errors where a particular parameter was the cause, indicates which parameter was invalid.:charge_id
– when a Charge was declined, indicates the ID of the failed Charge which was created.:http_status
– for:stripe
errors, the HTTP status returned with the error.:raw_error
– the raw error map received from Stripe.:hackney_reason
– for:network
errors, contains the error reason received from hackney.
Error Codes
The :code
fields may be one of the following:
:api_connection_error
,:api_error
,:authentication_error
,:card_error
,:invalid_request_error
,:rate_limit_error
,:validation_error
– as per the Stripe docs:bad_request
,:unauthorized
,:request_failed
,:not_found
,:conflict
,:too_many_requests
,:server_error
,:unknown_error
– these only occur if Stripe did not send an explicittype
for the error. They have the meaning as defined in Stripe's HTTP status code summary:network_code
– used only when:source
is:network
. Indicates an error occurred while making the request.:valid_keys_failed
,:required_keys_failed
,:endpoint_fun_invalid_result
,:invalid_endpoint
– used when:source
is:internal
. SeeStripe.Request
for details.
Summary
Types
@type card_error_code() ::
:invalid_number
| :invalid_expiry_month
| :invalid_expiry_year
| :invalid_cvc
| :invalid_swipe_data
| :incorrect_number
| :expired_card
| :incorrect_cvc
| :incorrect_zip
| :card_declined
| :missing
| :processing_error
| :bank_account_verification_failed
| :idempotency_key_in_use
@type error_source() :: :internal | :network | :stripe
@type error_status() ::
:bad_request
| :unauthorized
| :request_failed
| :not_found
| :conflict
| :too_many_requests
| :server_error
| :unknown_error
@type stripe_error_type() ::
:api_connection_error
| :api_error
| :authentication_error
| :card_error
| :invalid_request_error
| :rate_limit_error
| :validation_error
@type t() :: %Stripe.Error{ code: error_status() | stripe_error_type() | Stripe.Request.error_code() | :network_error, extra: %{ optional(:card_code) => card_error_code(), optional(:decline_code) => String.t(), optional(:param) => String.t(), optional(:charge_id) => Stripe.id(), optional(:http_status) => 400..599, optional(:raw_error) => map(), optional(:hackney_reason) => any() }, message: String.t(), request_id: String.t() | nil, source: error_source(), user_message: String.t() | nil }