From ed1ef48435964cb171ffedda632f5b90839cdaa2 Mon Sep 17 00:00:00 2001 From: Spencer Finnell Date: Thu, 23 Feb 2023 13:12:06 -0500 Subject: [PATCH 01/11] Sync from Pro --- composer.lock | 2 +- data/templates/overlay-payment-form.json | 3 + includes/core/abstracts/abstract-form.php | 38 +- includes/core/admin/class-assets.php | 37 +- includes/core/admin/fields/class-checkbox.php | 4 +- includes/core/admin/fields/class-radio.php | 18 +- includes/core/api/charges.php | 121 ++++ includes/core/api/paymentintents.php | 111 +++ includes/core/api/sessions.php | 110 +++ includes/core/api/setupintents.php | 34 + includes/core/assets/css/frontend/public.scss | 37 +- .../core/assets/css/simpay-public.min.css | 2 +- includes/core/assets/js/admin/index.js | 13 +- .../assets/js/admin/notifications/index.js | 4 +- .../assets/js/admin/payment-form/prices.js | 77 +- .../hooks/use-payment-form-initialization.js | 21 +- includes/core/assets/js/frontend/upe/index.js | 141 ++++ .../assets/js/simpay-admin-notices.min.js | 2 +- .../simpay-admin-notifications.min.asset.php | 2 +- .../js/simpay-admin-notifications.min.js | 2 +- .../assets/js/simpay-admin-page-smtp.min.js | 2 +- includes/core/assets/js/simpay-admin.min.js | 2 +- .../simpay-block-payment-form.min.asset.php | 2 +- .../js/simpay-block-payment-form.min.js | 2 +- .../assets/js/simpay-public-shared.min.js | 2 +- .../core/assets/js/simpay-public-upe.min.js | 1 + includes/core/assets/js/simpay-public.min.js | 2 +- includes/core/class-assets.php | 49 +- includes/core/class-installation.php | 6 +- includes/core/class-rest-api.php | 8 +- includes/core/class-simplepay.php | 14 +- includes/core/forms/class-default-form.php | 114 ++- .../forms/fields/class-payment-button.php | 29 +- includes/core/forms/functions.php | 39 +- includes/core/functions/shared.php | 94 ++- includes/core/i18n/stripe.php | 34 + includes/core/payments/class-stripe-api.php | 50 +- .../payment-confirmation-template-tags.php | 52 +- .../core/payments/payment-confirmation.php | 6 +- includes/core/payments/paymentintent.php | 108 +-- .../core/payments/stripe-checkout/session.php | 66 +- .../simple-pay/edit-form-custom-fields.php | 17 +- includes/core/recaptcha/index.php | 156 ++-- includes/core/rest-api/class-controller.php | 11 +- .../v2/class-checkout-session-controller.php | 3 +- .../v2/class-paymentintent-controller.php | 3 +- includes/core/settings/register-general.php | 55 ++ includes/core/utils/class-rate-limiting.php | 27 +- lib/Stripe/CHANGELOG.md | 261 +++++-- lib/Stripe/Makefile | 4 +- lib/Stripe/OPENAPI_VERSION | 2 +- lib/Stripe/README.md | 30 +- lib/Stripe/VERSION | 2 +- lib/Stripe/composer.json | 3 +- lib/Stripe/init.php | 32 +- lib/Stripe/lib/AccountSession.php | 30 + lib/Stripe/lib/AlipayAccount.php | 75 -- .../lib/ApiOperations/SingletonRetrieve.php | 30 + lib/Stripe/lib/ApiOperations/Update.php | 4 + lib/Stripe/lib/Apps/Secret.php | 1 + lib/Stripe/lib/Balance.php | 12 +- .../lib/BillingPortal/Configuration.php | 1 + lib/Stripe/lib/BillingPortal/Session.php | 1 + lib/Stripe/lib/Capital/FinancingOffer.php | 70 ++ lib/Stripe/lib/Capital/FinancingSummary.php | 25 + .../lib/Capital/FinancingTransaction.php | 32 + lib/Stripe/lib/Charge.php | 4 +- lib/Stripe/lib/Checkout/Session.php | 16 +- lib/Stripe/lib/CreditNote.php | 2 + lib/Stripe/lib/Customer.php | 34 +- lib/Stripe/lib/CustomerBalanceTransaction.php | 3 +- .../lib/CustomerCashBalanceTransaction.php | 42 ++ lib/Stripe/lib/ErrorObject.php | 2 + lib/Stripe/lib/Event.php | 14 + lib/Stripe/lib/File.php | 1 + .../lib/FinancialConnections/Account.php | 20 + .../FinancialConnections/InferredBalance.php | 22 + .../lib/FinancialConnections/Session.php | 9 + .../lib/FinancialConnections/Transaction.php | 33 + lib/Stripe/lib/GiftCards/Card.php | 49 ++ lib/Stripe/lib/GiftCards/Transaction.php | 77 ++ .../lib/Identity/VerificationSession.php | 2 +- lib/Stripe/lib/Invoice.php | 12 +- lib/Stripe/lib/InvoiceLineItem.php | 1 + lib/Stripe/lib/Issuing/Authorization.php | 5 +- lib/Stripe/lib/Issuing/Transaction.php | 1 + lib/Stripe/lib/Order.php | 2 + lib/Stripe/lib/PaymentIntent.php | 8 +- lib/Stripe/lib/PaymentLink.php | 7 + lib/Stripe/lib/PaymentMethod.php | 4 + lib/Stripe/lib/Price.php | 1 + lib/Stripe/lib/Product.php | 3 +- lib/Stripe/lib/Quote.php | 135 +++- lib/Stripe/lib/QuotePhase.php | 62 ++ lib/Stripe/lib/SKU.php | 41 -- .../lib/Service/AbstractServiceFactory.php | 10 + .../lib/Service/AccountSessionService.php | 24 + .../Service/Capital/CapitalServiceFactory.php | 29 + .../Service/Capital/FinancingOfferService.php | 58 ++ .../Capital/FinancingSummaryService.php | 24 + .../Capital/FinancingTransactionService.php | 40 ++ lib/Stripe/lib/Service/CoreServiceFactory.php | 12 +- lib/Stripe/lib/Service/CustomerService.php | 35 + .../FinancialConnections/AccountService.php | 17 + .../FinancialConnectionsServiceFactory.php | 2 + .../TransactionService.php | 23 + .../lib/Service/GiftCards/CardService.php | 86 +++ .../GiftCards/GiftCardsServiceFactory.php | 27 + .../Service/GiftCards/TransactionService.php | 102 +++ lib/Stripe/lib/Service/InvoiceService.php | 10 +- .../Service/Issuing/AuthorizationService.php | 8 +- .../lib/Service/PaymentIntentService.php | 28 +- .../lib/Service/PaymentMethodService.php | 6 +- lib/Stripe/lib/Service/QuotePhaseService.php | 58 ++ lib/Stripe/lib/Service/QuoteService.php | 114 +++ lib/Stripe/lib/Service/SkuService.php | 95 --- .../Service/SubscriptionScheduleService.php | 16 + .../lib/Service/SubscriptionService.php | 21 + .../lib/Service/Tax/CalculationService.php | 39 + .../lib/Service/Tax/RegistrationService.php | 57 ++ .../lib/Service/Tax/SettingsService.php | 39 + .../lib/Service/Tax/TaxServiceFactory.php | 31 + .../lib/Service/Tax/TransactionService.php | 85 +++ .../lib/Service/Terminal/ReaderService.php | 16 + lib/Stripe/lib/SetupAttempt.php | 2 +- lib/Stripe/lib/SetupIntent.php | 2 +- lib/Stripe/lib/SingletonApiResource.php | 9 - lib/Stripe/lib/Source.php | 7 + lib/Stripe/lib/Stripe.php | 6 +- lib/Stripe/lib/StripeClient.php | 6 +- lib/Stripe/lib/Subscription.php | 24 +- lib/Stripe/lib/SubscriptionItem.php | 2 + lib/Stripe/lib/SubscriptionSchedule.php | 22 +- lib/Stripe/lib/Tax/Calculation.php | 50 ++ lib/Stripe/lib/Tax/Registration.php | 45 ++ lib/Stripe/lib/Tax/Settings.php | 25 + lib/Stripe/lib/Tax/Transaction.php | 89 +++ lib/Stripe/lib/TaxId.php | 7 +- lib/Stripe/lib/Terminal/Reader.php | 17 + lib/Stripe/lib/Topup.php | 2 +- lib/Stripe/lib/Treasury/CreditReversal.php | 1 + lib/Stripe/lib/Treasury/DebitReversal.php | 1 + lib/Stripe/lib/Treasury/OutboundTransfer.php | 3 +- lib/Stripe/lib/Treasury/ReceivedCredit.php | 1 + lib/Stripe/lib/Treasury/ReceivedDebit.php | 1 + lib/Stripe/lib/Util/ApiVersion.php | 2 +- lib/Stripe/lib/Util/ObjectTypes.php | 15 +- lib/Stripe/lib/Util/Util.php | 4 +- src/AntiSpam/EmailVerification.php | 41 +- src/AntiSpam/RequireAuthentication.php | 20 + src/Block/ButtonBlock.php | 2 +- src/Block/PaymentFormBlock.php | 55 +- src/Integration/Divi/ExtensionSubscriber.php | 2 +- .../Elementor/PaymentFormControl.php | 2 +- src/License/License.php | 4 +- .../Payment/AbstractPaymentCreateRoute.php | 77 ++ .../Internal/Payment/AbstractPaymentRoute.php | 83 +++ .../Payment/Exception/ValidationException.php | 23 + .../Payment/LitePaymentCreateRoute.php | 219 ++++++ .../Payment/Traits/CheckoutSessionTrait.php | 110 +++ .../Internal/Payment/Traits/CustomerTrait.php | 274 ++++++++ .../Payment/Traits/PaymentIntentTrait.php | 190 +++++ .../Payment/Traits/SubscriptionTrait.php | 471 +++++++++++++ .../Internal/Payment/Utils/CouponUtils.php | 214 ++++++ .../Payment/Utils/FeeRecoveryUtils.php | 157 +++++ .../Payment/Utils/PaymentRequestUtils.php | 664 ++++++++++++++++++ .../Payment/Utils/SchemaSanitizationUtils.php | 39 + .../Internal/Payment/Utils/SchemaUtils.php | 621 ++++++++++++++++ .../Payment/Utils/SchemaValidationUtils.php | 475 +++++++++++++ .../Internal/Payment/Utils/TaxUtils.php | 166 +++++ .../Payment/Utils/TokenValidationUtils.php | 159 +++++ .../Internal/Report/DashboardWidgetReport.php | 4 +- .../GrossVolumePeriodOverPeriodReport.php | 4 +- .../Internal/Report/LatestPaymentsReport.php | 4 +- .../Internal/Report/PaymentInfoReport.php | 4 +- ...ccessfulPaymentsPeriodOverPeriodReport.php | 4 +- src/RestApi/Internal/Report/TodayReport.php | 4 +- src/RestApi/RestApiServiceProvider.php | 57 +- src/RestApi/__UnstableNotifications.php | 6 +- src/StripeConnect/ApplicationFee.php | 58 +- src/Transaction/TransactionObserver.php | 108 +-- src/Webhook/NoneReceivedNotice.php | 63 +- vendor/autoload.php | 20 +- vendor/composer/ClassLoader.php | 146 +++- vendor/composer/InstalledVersions.php | 27 +- vendor/composer/autoload_classmap.php | 2 +- vendor/composer/autoload_namespaces.php | 2 +- vendor/composer/autoload_psr4.php | 7 +- vendor/composer/autoload_real.php | 33 +- vendor/composer/autoload_static.php | 45 +- vendor/composer/installed.json | 82 +-- vendor/composer/installed.php | 35 +- 192 files changed, 8132 insertions(+), 1066 deletions(-) create mode 100644 includes/core/api/charges.php create mode 100644 includes/core/api/sessions.php create mode 100644 includes/core/assets/js/frontend/upe/index.js create mode 100644 includes/core/assets/js/simpay-public-upe.min.js create mode 100644 lib/Stripe/lib/AccountSession.php delete mode 100644 lib/Stripe/lib/AlipayAccount.php create mode 100644 lib/Stripe/lib/ApiOperations/SingletonRetrieve.php create mode 100644 lib/Stripe/lib/Capital/FinancingOffer.php create mode 100644 lib/Stripe/lib/Capital/FinancingSummary.php create mode 100644 lib/Stripe/lib/Capital/FinancingTransaction.php create mode 100644 lib/Stripe/lib/CustomerCashBalanceTransaction.php create mode 100644 lib/Stripe/lib/FinancialConnections/InferredBalance.php create mode 100644 lib/Stripe/lib/FinancialConnections/Transaction.php create mode 100644 lib/Stripe/lib/GiftCards/Card.php create mode 100644 lib/Stripe/lib/GiftCards/Transaction.php create mode 100644 lib/Stripe/lib/QuotePhase.php delete mode 100644 lib/Stripe/lib/SKU.php create mode 100644 lib/Stripe/lib/Service/AccountSessionService.php create mode 100644 lib/Stripe/lib/Service/Capital/CapitalServiceFactory.php create mode 100644 lib/Stripe/lib/Service/Capital/FinancingOfferService.php create mode 100644 lib/Stripe/lib/Service/Capital/FinancingSummaryService.php create mode 100644 lib/Stripe/lib/Service/Capital/FinancingTransactionService.php create mode 100644 lib/Stripe/lib/Service/FinancialConnections/TransactionService.php create mode 100644 lib/Stripe/lib/Service/GiftCards/CardService.php create mode 100644 lib/Stripe/lib/Service/GiftCards/GiftCardsServiceFactory.php create mode 100644 lib/Stripe/lib/Service/GiftCards/TransactionService.php create mode 100644 lib/Stripe/lib/Service/QuotePhaseService.php delete mode 100644 lib/Stripe/lib/Service/SkuService.php create mode 100644 lib/Stripe/lib/Service/Tax/CalculationService.php create mode 100644 lib/Stripe/lib/Service/Tax/RegistrationService.php create mode 100644 lib/Stripe/lib/Service/Tax/SettingsService.php create mode 100644 lib/Stripe/lib/Service/Tax/TaxServiceFactory.php create mode 100644 lib/Stripe/lib/Service/Tax/TransactionService.php create mode 100644 lib/Stripe/lib/Tax/Calculation.php create mode 100644 lib/Stripe/lib/Tax/Registration.php create mode 100644 lib/Stripe/lib/Tax/Settings.php create mode 100644 lib/Stripe/lib/Tax/Transaction.php create mode 100644 src/RestApi/Internal/Payment/AbstractPaymentCreateRoute.php create mode 100644 src/RestApi/Internal/Payment/AbstractPaymentRoute.php create mode 100644 src/RestApi/Internal/Payment/Exception/ValidationException.php create mode 100644 src/RestApi/Internal/Payment/LitePaymentCreateRoute.php create mode 100644 src/RestApi/Internal/Payment/Traits/CheckoutSessionTrait.php create mode 100644 src/RestApi/Internal/Payment/Traits/CustomerTrait.php create mode 100644 src/RestApi/Internal/Payment/Traits/PaymentIntentTrait.php create mode 100644 src/RestApi/Internal/Payment/Traits/SubscriptionTrait.php create mode 100644 src/RestApi/Internal/Payment/Utils/CouponUtils.php create mode 100644 src/RestApi/Internal/Payment/Utils/FeeRecoveryUtils.php create mode 100644 src/RestApi/Internal/Payment/Utils/PaymentRequestUtils.php create mode 100644 src/RestApi/Internal/Payment/Utils/SchemaSanitizationUtils.php create mode 100644 src/RestApi/Internal/Payment/Utils/SchemaUtils.php create mode 100644 src/RestApi/Internal/Payment/Utils/SchemaValidationUtils.php create mode 100644 src/RestApi/Internal/Payment/Utils/TaxUtils.php create mode 100644 src/RestApi/Internal/Payment/Utils/TokenValidationUtils.php diff --git a/composer.lock b/composer.lock index eaa93ad8..76cb66de 100644 --- a/composer.lock +++ b/composer.lock @@ -272,5 +272,5 @@ "prefer-lowest": false, "platform": [], "platform-dev": [], - "plugin-api-version": "2.1.0" + "plugin-api-version": "2.3.0" } diff --git a/data/templates/overlay-payment-form.json b/data/templates/overlay-payment-form.json index eaccf025..c2eb142e 100644 --- a/data/templates/overlay-payment-form.json +++ b/data/templates/overlay-payment-form.json @@ -29,6 +29,9 @@ }, { "type": "checkout_button" + }, + { + "type": "payment_button" } ], "prices": [ diff --git a/includes/core/abstracts/abstract-form.php b/includes/core/abstracts/abstract-form.php index fcd59ead..f47f6316 100644 --- a/includes/core/abstracts/abstract-form.php +++ b/includes/core/abstracts/abstract-form.php @@ -94,6 +94,14 @@ abstract class Form { */ public $payment_success_page = ''; + /** + * Payment Confirmation: Cancel. + * + * @since 3.0.0 + * @var string + */ + public $payment_cancelled_page = ''; + /** * Payment Confirmation: Failure. * @@ -110,6 +118,14 @@ abstract class Form { */ public $locale = ''; + /** + * Stripe Checkout submit type. + * + * @since 4.7.0 + * @var string + */ + public $checkout_submit_type = 'pay'; + /** * Country code. * @@ -194,9 +210,17 @@ abstract class Form { * Stripe Checkout: Billing address * * @since 3.0.0 - * @var string + * @var bool */ - public $enable_billing_address = ''; + public $enable_billing_address = false; + + /** + * Stripe Checkout: Shipping address + * + * @since 3.0.0 + * @var bool + */ + public $enable_shipping_address = false; /** * Form ID. @@ -747,6 +771,16 @@ public function get_stripe_script_variables() { return apply_filters( 'simpay_stripe_script_variables', array_merge( $strings, $bools ) ); } + /** + * Determines if the payment form has fee recovery enabled for any of the payment methods. + * + * @since 4.7.0 + * + * @param \SimplePay\Core\Abstracts\Form $form The payment form. + * @return bool + */ + abstract public function has_fee_recovery(); + /** * Determines if the payment form forces fee recovery to be paid. * diff --git a/includes/core/admin/class-assets.php b/includes/core/admin/class-assets.php index 1d156d30..be29f614 100644 --- a/includes/core/admin/class-assets.php +++ b/includes/core/admin/class-assets.php @@ -166,12 +166,30 @@ public function register() { 'simpay-admin', 'simpayAdmin', array( - 'siteTitle' => get_bloginfo( 'name' ), - 'ajaxUrl' => admin_url( 'admin-ajax.php' ), - 'nonce' => wp_create_nonce( 'simpay-admin' ), - 'licenseLevel' => simpay_get_license()->get_level(), - 'i18n' => array( + 'siteTitle' => get_bloginfo( 'name' ), + 'ajaxUrl' => admin_url( 'admin-ajax.php' ), + 'nonce' => wp_create_nonce( 'simpay-admin' ), + 'licenseLevel' => simpay_get_license()->get_level(), + 'currency' => simpay_get_setting( 'currency', 'USD' ), + 'currencySymbol' => html_entity_decode( + simpay_get_saved_currency_symbol() + ), + 'currencyPosition' => simpay_get_currency_position(), + 'decimalSeparator' => simpay_get_decimal_separator(), + 'thousandSeparator' => simpay_get_thousand_separator(), + 'decimalPlaces' => simpay_get_decimal_places(), + 'minAmount' => simpay_global_minimum_amount(), + 'isUpe' => simpay_is_upe(), + 'i18n' => array( 'dateFormat' => simpay_get_date_format(), + 'mediaTitle' => esc_html__( + 'Insert Media', + 'stripe' + ), + 'mediaButtonText' => esc_html__( + 'Use Image', + 'stripe' + ), 'leavePageConfirm' => esc_html__( 'The changes you made will be lost if you navigate away from this page.', 'stripe' @@ -228,6 +246,15 @@ public function register() { 'Warning: Removing a payment form will prevent active subscriptions from sending upcoming invoice and invoice receipt emails. It is recommended to leave payment forms that have accepted Live Mode payments published.', 'stripe' ), + /* translators: Minimum payment amount. */ + 'customAmountLabel' => esc_html__( 'starting at %s', 'stripe' ), + 'recurringIntervals' => simpay_get_recurring_intervals(), + /* translators: %1$s Recurring amount. %2$s Recurring interval count. %3$s Recurring interval. */ + 'recurringIntervalDisplay' => esc_html_x( + '%1$s every %2$s %3$s', + 'recurring interval', + 'stripe' + ), ), ) ); diff --git a/includes/core/admin/fields/class-checkbox.php b/includes/core/admin/fields/class-checkbox.php index 2b183785..9b37f956 100644 --- a/includes/core/admin/fields/class-checkbox.php +++ b/includes/core/admin/fields/class-checkbox.php @@ -51,7 +51,7 @@ public function html() { } ?> -
style ) ? 'style="' . $this->style . '"' : ''; ?>> +
style ) ? 'style="' . $this->style . '"' : ''; ?>> title ) ) { @@ -65,7 +65,7 @@ public function html() {