diff --git a/OPENAPI_VERSION b/OPENAPI_VERSION index 6275e8074..f780889d1 100644 --- a/OPENAPI_VERSION +++ b/OPENAPI_VERSION @@ -1 +1 @@ -v351 \ No newline at end of file +v358 \ No newline at end of file diff --git a/lib/Account.php b/lib/Account.php index 798040771..10d296c1e 100644 --- a/lib/Account.php +++ b/lib/Account.php @@ -26,7 +26,7 @@ * @property null|int $created Time at which the account was connected. Measured in seconds since the Unix epoch. * @property null|string $default_currency Three-letter ISO currency code representing the default currency for the account. This must be a currency that Stripe supports in the account's country. * @property null|bool $details_submitted Whether account details have been submitted. Standard accounts cannot receive payouts before this is true. - * @property null|string $email An email address associated with the account. You can treat this as metadata: it is not used for authentication or messaging account holders. + * @property null|string $email An email address associated with the account. It's not used for authentication and Stripe doesn't market to this field without explicit approval from the platform. * @property null|\Stripe\Collection<\Stripe\BankAccount|\Stripe\Card> $external_accounts External accounts (bank accounts and debit cards) currently attached to this account * @property null|\Stripe\StripeObject $future_requirements * @property null|\Stripe\Person $individual

This is an object representing a person associated with a Stripe account.

A platform cannot access a Standard or Express account's persons after the account starts onboarding, such as after generating an account link for the account. See the Standard onboarding or Express onboarding documentation for information about platform pre-filling and account onboarding steps.

Related guide: Handling identity verification with the API

diff --git a/lib/Charge.php b/lib/Charge.php index 0b5097af8..f4aee6804 100644 --- a/lib/Charge.php +++ b/lib/Charge.php @@ -5,11 +5,10 @@ namespace Stripe; /** - * To charge a credit or a debit card, you create a Charge object. You can - * retrieve and refund individual charges as well as list all charges. Charges - * are identified by a unique, random ID. - * - * Related guide: Accept a payment with the Charges API + * The Charge object represents a single attempt to move money into your Stripe account. + * PaymentIntent confirmation is the most common way to create Charges, but transferring + * money to a different Stripe account through Connect also creates Charges. + * Some legacy payment flows create Charges directly, which is not recommended for new integrations. * * @property string $id Unique identifier for the object. * @property string $object String representing the object's type. Objects of the same type share the same value. diff --git a/lib/ErrorObject.php b/lib/ErrorObject.php index 3385aac0b..dbd329df5 100644 --- a/lib/ErrorObject.php +++ b/lib/ErrorObject.php @@ -42,6 +42,8 @@ class ErrorObject extends StripeObject * * @see https://stripe.com/docs/error-codes */ + // The beginning of the section generated from our OpenAPI spec + const CODE_ACCOUNT_CLOSED = 'account_closed'; const CODE_ACCOUNT_COUNTRY_INVALID_ADDRESS = 'account_country_invalid_address'; const CODE_ACCOUNT_ERROR_COUNTRY_CHANGE_REQUIRES_ADDITIONAL_STEPS = 'account_error_country_change_requires_additional_steps'; const CODE_ACCOUNT_INFORMATION_MISMATCH = 'account_information_mismatch'; @@ -57,11 +59,14 @@ class ErrorObject extends StripeObject const CODE_BANK_ACCOUNT_BAD_ROUTING_NUMBERS = 'bank_account_bad_routing_numbers'; const CODE_BANK_ACCOUNT_DECLINED = 'bank_account_declined'; const CODE_BANK_ACCOUNT_EXISTS = 'bank_account_exists'; + const CODE_BANK_ACCOUNT_RESTRICTED = 'bank_account_restricted'; const CODE_BANK_ACCOUNT_UNUSABLE = 'bank_account_unusable'; const CODE_BANK_ACCOUNT_UNVERIFIED = 'bank_account_unverified'; const CODE_BANK_ACCOUNT_VERIFICATION_FAILED = 'bank_account_verification_failed'; const CODE_BILLING_INVALID_MANDATE = 'billing_invalid_mandate'; const CODE_BITCOIN_UPGRADE_REQUIRED = 'bitcoin_upgrade_required'; + const CODE_CAPTURE_CHARGE_AUTHORIZATION_EXPIRED = 'capture_charge_authorization_expired'; + const CODE_CAPTURE_UNAUTHORIZED_PAYMENT = 'capture_unauthorized_payment'; const CODE_CARD_DECLINE_RATE_LIMIT_EXCEEDED = 'card_decline_rate_limit_exceeded'; const CODE_CARD_DECLINED = 'card_declined'; const CODE_CARDHOLDER_PHONE_NUMBER_REQUIRED = 'cardholder_phone_number_required'; @@ -71,6 +76,7 @@ class ErrorObject extends StripeObject const CODE_CHARGE_EXCEEDS_SOURCE_LIMIT = 'charge_exceeds_source_limit'; const CODE_CHARGE_EXPIRED_FOR_CAPTURE = 'charge_expired_for_capture'; const CODE_CHARGE_INVALID_PARAMETER = 'charge_invalid_parameter'; + const CODE_CHARGE_NOT_REFUNDABLE = 'charge_not_refundable'; const CODE_CLEARING_CODE_UNSUPPORTED = 'clearing_code_unsupported'; const CODE_COUNTRY_CODE_INVALID = 'country_code_invalid'; const CODE_COUNTRY_UNSUPPORTED = 'country_unsupported'; @@ -80,11 +86,16 @@ class ErrorObject extends StripeObject const CODE_DEBIT_NOT_AUTHORIZED = 'debit_not_authorized'; const CODE_EMAIL_INVALID = 'email_invalid'; const CODE_EXPIRED_CARD = 'expired_card'; + const CODE_GIFT_CARD_BALANCE_INSUFFICIENT = 'gift_card_balance_insufficient'; + const CODE_GIFT_CARD_CODE_EXISTS = 'gift_card_code_exists'; + const CODE_GIFT_CARD_INACTIVE = 'gift_card_inactive'; const CODE_IDEMPOTENCY_KEY_IN_USE = 'idempotency_key_in_use'; const CODE_INCORRECT_ADDRESS = 'incorrect_address'; const CODE_INCORRECT_CVC = 'incorrect_cvc'; const CODE_INCORRECT_NUMBER = 'incorrect_number'; const CODE_INCORRECT_ZIP = 'incorrect_zip'; + const CODE_INSTANT_PAYOUTS_CONFIG_DISABLED = 'instant_payouts_config_disabled'; + const CODE_INSTANT_PAYOUTS_CURRENCY_DISABLED = 'instant_payouts_currency_disabled'; const CODE_INSTANT_PAYOUTS_LIMIT_EXCEEDED = 'instant_payouts_limit_exceeded'; const CODE_INSTANT_PAYOUTS_UNSUPPORTED = 'instant_payouts_unsupported'; const CODE_INSUFFICIENT_FUNDS = 'insufficient_funds'; @@ -98,6 +109,7 @@ class ErrorObject extends StripeObject const CODE_INVALID_EXPIRY_YEAR = 'invalid_expiry_year'; const CODE_INVALID_NUMBER = 'invalid_number'; const CODE_INVALID_SOURCE_USAGE = 'invalid_source_usage'; + const CODE_INVALID_TAX_LOCATION = 'invalid_tax_location'; const CODE_INVOICE_NO_CUSTOMER_LINE_ITEMS = 'invoice_no_customer_line_items'; const CODE_INVOICE_NO_PAYMENT_METHOD_TYPES = 'invoice_no_payment_method_types'; const CODE_INVOICE_NO_SUBSCRIPTION_LINE_ITEMS = 'invoice_no_subscription_line_items'; @@ -111,6 +123,7 @@ class ErrorObject extends StripeObject const CODE_NO_ACCOUNT = 'no_account'; const CODE_NOT_ALLOWED_ON_STANDARD_ACCOUNT = 'not_allowed_on_standard_account'; const CODE_OUT_OF_INVENTORY = 'out_of_inventory'; + const CODE_OWNERSHIP_DECLARATION_NOT_ALLOWED = 'ownership_declaration_not_allowed'; const CODE_PARAMETER_INVALID_EMPTY = 'parameter_invalid_empty'; const CODE_PARAMETER_INVALID_INTEGER = 'parameter_invalid_integer'; const CODE_PARAMETER_INVALID_STRING_BLANK = 'parameter_invalid_string_blank'; @@ -130,7 +143,9 @@ class ErrorObject extends StripeObject const CODE_PAYMENT_METHOD_BANK_ACCOUNT_ALREADY_VERIFIED = 'payment_method_bank_account_already_verified'; const CODE_PAYMENT_METHOD_BANK_ACCOUNT_BLOCKED = 'payment_method_bank_account_blocked'; const CODE_PAYMENT_METHOD_BILLING_DETAILS_ADDRESS_MISSING = 'payment_method_billing_details_address_missing'; + const CODE_PAYMENT_METHOD_CONFIGURATION_FAILURES = 'payment_method_configuration_failures'; const CODE_PAYMENT_METHOD_CURRENCY_MISMATCH = 'payment_method_currency_mismatch'; + const CODE_PAYMENT_METHOD_CUSTOMER_DECLINE = 'payment_method_customer_decline'; const CODE_PAYMENT_METHOD_INVALID_PARAMETER = 'payment_method_invalid_parameter'; const CODE_PAYMENT_METHOD_INVALID_PARAMETER_TESTMODE = 'payment_method_invalid_parameter_testmode'; const CODE_PAYMENT_METHOD_MICRODEPOSIT_FAILED = 'payment_method_microdeposit_failed'; @@ -139,17 +154,21 @@ class ErrorObject extends StripeObject const CODE_PAYMENT_METHOD_MICRODEPOSIT_VERIFICATION_ATTEMPTS_EXCEEDED = 'payment_method_microdeposit_verification_attempts_exceeded'; const CODE_PAYMENT_METHOD_MICRODEPOSIT_VERIFICATION_DESCRIPTOR_CODE_MISMATCH = 'payment_method_microdeposit_verification_descriptor_code_mismatch'; const CODE_PAYMENT_METHOD_MICRODEPOSIT_VERIFICATION_TIMEOUT = 'payment_method_microdeposit_verification_timeout'; + const CODE_PAYMENT_METHOD_NOT_AVAILABLE = 'payment_method_not_available'; const CODE_PAYMENT_METHOD_PROVIDER_DECLINE = 'payment_method_provider_decline'; const CODE_PAYMENT_METHOD_PROVIDER_TIMEOUT = 'payment_method_provider_timeout'; const CODE_PAYMENT_METHOD_UNACTIVATED = 'payment_method_unactivated'; const CODE_PAYMENT_METHOD_UNEXPECTED_STATE = 'payment_method_unexpected_state'; const CODE_PAYMENT_METHOD_UNSUPPORTED_TYPE = 'payment_method_unsupported_type'; + const CODE_PAYOUT_RECONCILIATION_NOT_READY = 'payout_reconciliation_not_ready'; + const CODE_PAYOUTS_LIMIT_EXCEEDED = 'payouts_limit_exceeded'; const CODE_PAYOUTS_NOT_ALLOWED = 'payouts_not_allowed'; const CODE_PLATFORM_ACCOUNT_REQUIRED = 'platform_account_required'; const CODE_PLATFORM_API_KEY_EXPIRED = 'platform_api_key_expired'; const CODE_POSTAL_CODE_INVALID = 'postal_code_invalid'; const CODE_PROCESSING_ERROR = 'processing_error'; const CODE_PRODUCT_INACTIVE = 'product_inactive'; + const CODE_PROGRESSIVE_ONBOARDING_LIMIT_EXCEEDED = 'progressive_onboarding_limit_exceeded'; const CODE_RATE_LIMIT = 'rate_limit'; const CODE_REFER_TO_CUSTOMER = 'refer_to_customer'; const CODE_REFUND_DISPUTED_PAYMENT = 'refund_disputed_payment'; @@ -158,18 +177,24 @@ class ErrorObject extends StripeObject const CODE_RETURN_INTENT_ALREADY_PROCESSED = 'return_intent_already_processed'; const CODE_ROUTING_NUMBER_INVALID = 'routing_number_invalid'; const CODE_SECRET_KEY_REQUIRED = 'secret_key_required'; + const CODE_SENSITIVE_DATA_ACCESS_EXPIRED = 'sensitive_data_access_expired'; const CODE_SEPA_UNSUPPORTED_ACCOUNT = 'sepa_unsupported_account'; const CODE_SETUP_ATTEMPT_FAILED = 'setup_attempt_failed'; const CODE_SETUP_INTENT_AUTHENTICATION_FAILURE = 'setup_intent_authentication_failure'; const CODE_SETUP_INTENT_INVALID_PARAMETER = 'setup_intent_invalid_parameter'; + const CODE_SETUP_INTENT_MANDATE_INVALID = 'setup_intent_mandate_invalid'; const CODE_SETUP_INTENT_SETUP_ATTEMPT_EXPIRED = 'setup_intent_setup_attempt_expired'; const CODE_SETUP_INTENT_UNEXPECTED_STATE = 'setup_intent_unexpected_state'; const CODE_SHIPPING_CALCULATION_FAILED = 'shipping_calculation_failed'; const CODE_SKU_INACTIVE = 'sku_inactive'; const CODE_STATE_UNSUPPORTED = 'state_unsupported'; + const CODE_STATUS_TRANSITION_INVALID = 'status_transition_invalid'; const CODE_TAX_ID_INVALID = 'tax_id_invalid'; const CODE_TAXES_CALCULATION_FAILED = 'taxes_calculation_failed'; const CODE_TERMINAL_LOCATION_COUNTRY_UNSUPPORTED = 'terminal_location_country_unsupported'; + const CODE_TERMINAL_READER_BUSY = 'terminal_reader_busy'; + const CODE_TERMINAL_READER_OFFLINE = 'terminal_reader_offline'; + const CODE_TERMINAL_READER_TIMEOUT = 'terminal_reader_timeout'; const CODE_TESTMODE_CHARGES_ONLY = 'testmode_charges_only'; const CODE_TLS_VERSION_UNSUPPORTED = 'tls_version_unsupported'; const CODE_TOKEN_ALREADY_USED = 'token_already_used'; @@ -177,6 +202,7 @@ class ErrorObject extends StripeObject const CODE_TRANSFER_SOURCE_BALANCE_PARAMETERS_MISMATCH = 'transfer_source_balance_parameters_mismatch'; const CODE_TRANSFERS_NOT_ALLOWED = 'transfers_not_allowed'; const CODE_URL_INVALID = 'url_invalid'; + // The end of the section generated from our OpenAPI spec /** * Refreshes this object using the provided values. diff --git a/lib/Service/ChargeService.php b/lib/Service/ChargeService.php index 0bde02792..4f6490289 100644 --- a/lib/Service/ChargeService.php +++ b/lib/Service/ChargeService.php @@ -23,14 +23,15 @@ public function all($params = null, $opts = null) } /** - * Capture the payment of an existing, uncaptured, charge. This is the second half - * of the two-step payment flow, where first you created a - * charge with the capture option set to false. + * Capture the payment of an existing, uncaptured charge that was created with the + * capture option set to false. * * Uncaptured payments expire a set number of days after they are created (7 by default). If they are not captured - * by that point in time, they will be marked as refunded and will no longer be - * capturable. + * href="/docs/charges/placing-a-hold">7 by default), after which they are + * marked as refunded and capture attempts will fail. + * + * Don’t use this method to capture a PaymentIntent-initiated charge. Use Capture a PaymentIntent. * * @param string $id * @param null|array $params @@ -46,11 +47,10 @@ public function capture($id, $params = null, $opts = null) } /** - * To charge a credit card or other payment source, you create a - * Charge object. If your API key is in test mode, the supplied - * payment source (e.g., card) won’t actually be charged, although everything else - * will occur as if in live mode. (Stripe assumes that the charge would have - * completed successfully). + * Use the Payment Intents API to initiate + * a new payment instead of using this method. Confirmation of the PaymentIntent + * creates the Charge object used to request payment, so this method + * is limited to legacy integrations. * * @param null|array $params * @param null|array|\Stripe\Util\RequestOptions $opts diff --git a/lib/Token.php b/lib/Token.php index afc142369..2a2621d64 100644 --- a/lib/Token.php +++ b/lib/Token.php @@ -26,8 +26,6 @@ * Radar, our integrated solution for automatic fraud protection, * performs best with integrations that use client-side tokenization. * - * Related guide: Accept a payment with Charges and Tokens - * * @property string $id Unique identifier for the object. * @property string $object String representing the object's type. Objects of the same type share the same value. * @property null|\Stripe\BankAccount $bank_account

These bank accounts are payment methods on Customer objects.

On the other hand External Accounts are transfer destinations on Account objects for Custom accounts. They can be bank accounts or debit cards as well, and are documented in the links above.

Related guide: Bank debits and transfers

diff --git a/lib/Util/ApiVersion.php b/lib/Util/ApiVersion.php index 78b814db4..051b31b42 100644 --- a/lib/Util/ApiVersion.php +++ b/lib/Util/ApiVersion.php @@ -7,5 +7,5 @@ class ApiVersion { const CURRENT = '2022-11-15'; - const PREVIEW = '2023-05-16.preview-v2'; + const PREVIEW = '20230519T204128'; } diff --git a/tests/Stripe/GeneratedExamplesTest.php b/tests/Stripe/GeneratedExamplesTest.php index 8b6448bf7..ba472ea44 100644 --- a/tests/Stripe/GeneratedExamplesTest.php +++ b/tests/Stripe/GeneratedExamplesTest.php @@ -4072,4 +4072,29 @@ public function testListLineItemsQuote() static::assertInstanceOf(\Stripe\Collection::class, $result); static::assertInstanceOf(\Stripe\LineItem::class, $result->data[0]); } + + public function testCreateCalculation() + { + $this->expectsRequest('post', '/v1/tax/calculations'); + $result = $this->client->tax->calculations->create([ + 'currency' => 'usd', + 'line_items' => [ + [ + 'amount' => 1000, + 'reference' => 'L1', + ], + ], + 'customer_details' => [ + 'address' => [ + 'line1' => '354 Oyster Point Blvd', + 'city' => 'South San Francisco', + 'state' => 'CA', + 'postal_code' => '94080', + 'country' => 'US', + ], + 'address_source' => 'shipping', + ], + ]); + static::assertInstanceOf(\Stripe\Tax\Calculation::class, $result); + } }