ErrorObject.php 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. <?php
  2. namespace Stripe;
  3. /**
  4. * Class ErrorObject.
  5. *
  6. * @property string $charge For card errors, the ID of the failed charge.
  7. * @property string $code For some errors that could be handled
  8. * programmatically, a short string indicating the error code reported.
  9. * @property string $decline_code For card errors resulting from a card issuer
  10. * decline, a short string indicating the card issuer's reason for the
  11. * decline if they provide one.
  12. * @property string $doc_url A URL to more information about the error code
  13. * reported.
  14. * @property string $message A human-readable message providing more details
  15. * about the error. For card errors, these messages can be shown to your
  16. * users.
  17. * @property string $param If the error is parameter-specific, the parameter
  18. * related to the error. For example, you can use this to display a message
  19. * near the correct form field.
  20. * @property PaymentIntent $payment_intent The PaymentIntent object for errors
  21. * returned on a request involving a PaymentIntent.
  22. * @property PaymentMethod $payment_method The PaymentMethod object for errors
  23. * returned on a request involving a PaymentMethod.
  24. * @property string $payment_method_type If the error is specific to the type
  25. * of payment method, the payment method type that had a problem. This
  26. * field is only populated for invoice-related errors.
  27. * @property SetupIntent $setup_intent The SetupIntent object for errors
  28. * returned on a request involving a SetupIntent.
  29. * @property StripeObject $source The source object for errors returned on a
  30. * request involving a source.
  31. * @property string $type The type of error returned. One of
  32. * `api_connection_error`, `api_error`, `authentication_error`,
  33. * `card_error`, `idempotency_error`, `invalid_request_error`, or
  34. * `rate_limit_error`.
  35. */
  36. class ErrorObject extends StripeObject
  37. {
  38. /**
  39. * Possible string representations of an error's code.
  40. *
  41. * @see https://stripe.com/docs/error-codes
  42. */
  43. const CODE_ACCOUNT_ALREADY_EXISTS = 'account_already_exists';
  44. const CODE_ACCOUNT_COUNTRY_INVALID_ADDRESS = 'account_country_invalid_address';
  45. const CODE_ACCOUNT_INVALID = 'account_invalid';
  46. const CODE_ACCOUNT_NUMBER_INVALID = 'account_number_invalid';
  47. const CODE_ALIPAY_UPGRADE_REQUIRED = 'alipay_upgrade_required';
  48. const CODE_AMOUNT_TOO_LARGE = 'amount_too_large';
  49. const CODE_AMOUNT_TOO_SMALL = 'amount_too_small';
  50. const CODE_API_KEY_EXPIRED = 'api_key_expired';
  51. const CODE_BALANCE_INSUFFICIENT = 'balance_insufficient';
  52. const CODE_BANK_ACCOUNT_EXISTS = 'bank_account_exists';
  53. const CODE_BANK_ACCOUNT_UNUSABLE = 'bank_account_unusable';
  54. const CODE_BANK_ACCOUNT_UNVERIFIED = 'bank_account_unverified';
  55. const CODE_BITCOIN_UPGRADE_REQUIRED = 'bitcoin_upgrade_required';
  56. const CODE_CARD_DECLINED = 'card_declined';
  57. const CODE_CHARGE_ALREADY_CAPTURED = 'charge_already_captured';
  58. const CODE_CHARGE_ALREADY_REFUNDED = 'charge_already_refunded';
  59. const CODE_CHARGE_DISPUTED = 'charge_disputed';
  60. const CODE_CHARGE_EXCEEDS_SOURCE_LIMIT = 'charge_exceeds_source_limit';
  61. const CODE_CHARGE_EXPIRED_FOR_CAPTURE = 'charge_expired_for_capture';
  62. const CODE_COUNTRY_UNSUPPORTED = 'country_unsupported';
  63. const CODE_COUPON_EXPIRED = 'coupon_expired';
  64. const CODE_CUSTOMER_MAX_SUBSCRIPTIONS = 'customer_max_subscriptions';
  65. const CODE_EMAIL_INVALID = 'email_invalid';
  66. const CODE_EXPIRED_CARD = 'expired_card';
  67. const CODE_IDEMPOTENCY_KEY_IN_USE = 'idempotency_key_in_use';
  68. const CODE_INCORRECT_ADDRESS = 'incorrect_address';
  69. const CODE_INCORRECT_CVC = 'incorrect_cvc';
  70. const CODE_INCORRECT_NUMBER = 'incorrect_number';
  71. const CODE_INCORRECT_ZIP = 'incorrect_zip';
  72. const CODE_INSTANT_PAYOUTS_UNSUPPORTED = 'instant_payouts_unsupported';
  73. const CODE_INVALID_CARD_TYPE = 'invalid_card_type';
  74. const CODE_INVALID_CHARGE_AMOUNT = 'invalid_charge_amount';
  75. const CODE_INVALID_CVC = 'invalid_cvc';
  76. const CODE_INVALID_EXPIRY_MONTH = 'invalid_expiry_month';
  77. const CODE_INVALID_EXPIRY_YEAR = 'invalid_expiry_year';
  78. const CODE_INVALID_NUMBER = 'invalid_number';
  79. const CODE_INVALID_SOURCE_USAGE = 'invalid_source_usage';
  80. const CODE_INVOICE_NO_CUSTOMER_LINE_ITEMS = 'invoice_no_customer_line_items';
  81. const CODE_INVOICE_NO_SUBSCRIPTION_LINE_ITEMS = 'invoice_no_subscription_line_items';
  82. const CODE_INVOICE_NOT_EDITABLE = 'invoice_not_editable';
  83. const CODE_INVOICE_PAYMENT_INTENT_REQUIRES_ACTION = 'invoice_payment_intent_requires_action';
  84. const CODE_INVOICE_UPCOMING_NONE = 'invoice_upcoming_none';
  85. const CODE_LIVEMODE_MISMATCH = 'livemode_mismatch';
  86. const CODE_LOCK_TIMEOUT = 'lock_timeout';
  87. const CODE_MISSING = 'missing';
  88. const CODE_NOT_ALLOWED_ON_STANDARD_ACCOUNT = 'not_allowed_on_standard_account';
  89. const CODE_ORDER_CREATION_FAILED = 'order_creation_failed';
  90. const CODE_ORDER_REQUIRED_SETTINGS = 'order_required_settings';
  91. const CODE_ORDER_STATUS_INVALID = 'order_status_invalid';
  92. const CODE_ORDER_UPSTREAM_TIMEOUT = 'order_upstream_timeout';
  93. const CODE_OUT_OF_INVENTORY = 'out_of_inventory';
  94. const CODE_PARAMETER_INVALID_EMPTY = 'parameter_invalid_empty';
  95. const CODE_PARAMETER_INVALID_INTEGER = 'parameter_invalid_integer';
  96. const CODE_PARAMETER_INVALID_STRING_BLANK = 'parameter_invalid_string_blank';
  97. const CODE_PARAMETER_INVALID_STRING_EMPTY = 'parameter_invalid_string_empty';
  98. const CODE_PARAMETER_MISSING = 'parameter_missing';
  99. const CODE_PARAMETER_UNKNOWN = 'parameter_unknown';
  100. const CODE_PARAMETERS_EXCLUSIVE = 'parameters_exclusive';
  101. const CODE_PAYMENT_INTENT_AUTHENTICATION_FAILURE = 'payment_intent_authentication_failure';
  102. const CODE_PAYMENT_INTENT_INCOMPATIBLE_PAYMENT_METHOD = 'payment_intent_incompatible_payment_method';
  103. const CODE_PAYMENT_INTENT_INVALID_PARAMETER = 'payment_intent_invalid_parameter';
  104. const CODE_PAYMENT_INTENT_PAYMENT_ATTEMPT_FAILED = 'payment_intent_payment_attempt_failed';
  105. const CODE_PAYMENT_INTENT_UNEXPECTED_STATE = 'payment_intent_unexpected_state';
  106. const CODE_PAYMENT_METHOD_UNACTIVATED = 'payment_method_unactivated';
  107. const CODE_PAYMENT_METHOD_UNEXPECTED_STATE = 'payment_method_unexpected_state';
  108. const CODE_PAYOUTS_NOT_ALLOWED = 'payouts_not_allowed';
  109. const CODE_PLATFORM_API_KEY_EXPIRED = 'platform_api_key_expired';
  110. const CODE_POSTAL_CODE_INVALID = 'postal_code_invalid';
  111. const CODE_PROCESSING_ERROR = 'processing_error';
  112. const CODE_PRODUCT_INACTIVE = 'product_inactive';
  113. const CODE_RATE_LIMIT = 'rate_limit';
  114. const CODE_RESOURCE_ALREADY_EXISTS = 'resource_already_exists';
  115. const CODE_RESOURCE_MISSING = 'resource_missing';
  116. const CODE_ROUTING_NUMBER_INVALID = 'routing_number_invalid';
  117. const CODE_SECRET_KEY_REQUIRED = 'secret_key_required';
  118. const CODE_SEPA_UNSUPPORTED_ACCOUNT = 'sepa_unsupported_account';
  119. const CODE_SETUP_ATTEMPT_FAILED = 'setup_attempt_failed';
  120. const CODE_SETUP_INTENT_AUTHENTICATION_FAILURE = 'setup_intent_authentication_failure';
  121. const CODE_SETUP_INTENT_UNEXPECTED_STATE = 'setup_intent_unexpected_state';
  122. const CODE_SHIPPING_CALCULATION_FAILED = 'shipping_calculation_failed';
  123. const CODE_SKU_INACTIVE = 'sku_inactive';
  124. const CODE_STATE_UNSUPPORTED = 'state_unsupported';
  125. const CODE_TAX_ID_INVALID = 'tax_id_invalid';
  126. const CODE_TAXES_CALCULATION_FAILED = 'taxes_calculation_failed';
  127. const CODE_TESTMODE_CHARGES_ONLY = 'testmode_charges_only';
  128. const CODE_TLS_VERSION_UNSUPPORTED = 'tls_version_unsupported';
  129. const CODE_TOKEN_ALREADY_USED = 'token_already_used';
  130. const CODE_TOKEN_IN_USE = 'token_in_use';
  131. const CODE_TRANSFERS_NOT_ALLOWED = 'transfers_not_allowed';
  132. const CODE_UPSTREAM_ORDER_CREATION_FAILED = 'upstream_order_creation_failed';
  133. const CODE_URL_INVALID = 'url_invalid';
  134. /**
  135. * Refreshes this object using the provided values.
  136. *
  137. * @param array $values
  138. * @param null|array|string|Util\RequestOptions $opts
  139. * @param bool $partial defaults to false
  140. */
  141. public function refreshFrom($values, $opts, $partial = false)
  142. {
  143. // Unlike most other API resources, the API will omit attributes in
  144. // error objects when they have a null value. We manually set default
  145. // values here to facilitate generic error handling.
  146. $values = \array_merge([
  147. 'charge' => null,
  148. 'code' => null,
  149. 'decline_code' => null,
  150. 'doc_url' => null,
  151. 'message' => null,
  152. 'param' => null,
  153. 'payment_intent' => null,
  154. 'payment_method' => null,
  155. 'setup_intent' => null,
  156. 'source' => null,
  157. 'type' => null,
  158. ], $values);
  159. parent::refreshFrom($values, $opts, $partial);
  160. }
  161. }