lib/stripe/error_object.rb



# frozen_string_literal: true

module Stripe
  # Represents an error object as returned by the API.
  #
  # @see https://stripe.com/docs/api/errors
  class ErrorObject < StripeObject
    # Unlike other objects, we explicitly declare getter methods here. This
    # is because the API doesn't return `null` values for fields on this
    # object, rather the fields are omitted entirely. Not declaring the getter
    # methods would cause users to run into `NoMethodError` exceptions and
    # get in the way of generic error handling.

    # For card errors, the ID of the failed charge.
    def charge
      @values[:charge]
    end

    # For some errors that could be handled programmatically, a short string
    # indicating the error code reported.
    def code
      @values[:code]
    end

    # For card errors resulting from a card issuer decline, a short string
    # indicating the card issuer's reason for the decline if they provide one.
    def decline_code
      @values[:decline_code]
    end

    # A URL to more information about the error code reported.
    def doc_url
      @values[:doc_url]
    end

    # A human-readable message providing more details about the error. For card
    # errors, these messages can be shown to your users.
    def message
      @values[:message]
    end

    # If the error is parameter-specific, the parameter related to the error.
    # For example, you can use this to display a message near the correct form
    # field.
    def param
      @values[:param]
    end

    # The PaymentIntent object for errors returned on a request involving a
    # PaymentIntent.
    def payment_intent
      @values[:payment_intent]
    end

    # The PaymentMethod object for errors returned on a request involving a
    # PaymentMethod.
    def payment_method
      @values[:payment_method]
    end

    # The SetupIntent object for errors returned on a request involving a
    # SetupIntent.
    def setup_intent
      @values[:setup_intent]
    end

    # The source object for errors returned on a request involving a source.
    def source
      @values[:source]
    end

    # The type of error returned. One of `api_error`, `card_error`,
    # `idempotency_error`, or `invalid_request_error`.
    def type
      @values[:type]
    end
  end

  # Represents on OAuth error returned by the OAuth API.
  #
  # @see https://stripe.com/docs/connect/oauth-reference#post-token-errors
  class OAuthErrorObject < StripeObject
    # A unique error code per error type.
    def error
      @values[:error]
    end

    # A human readable description of the error.
    def error_description
      @values[:error_description]
    end
  end
end