Skip to content

Commit d9b5f8b

Browse files
authored
Merge pull request #3942 from woocommerce/dev/PCP-5612-ppcp-save-payment-methods-settings-provider-migration
ppcp-save-payment-methods SettingsProvider migration (5612)
2 parents e7a39de + 8fe6b27 commit d9b5f8b

3 files changed

Lines changed: 36 additions & 23 deletions

File tree

modules/ppcp-save-payment-methods/src/SavePaymentMethodsModule.php

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,10 @@
2929
use WooCommerce\PayPalCommerce\Vendor\Inpsyde\Modularity\Module\ModuleClassNameIdTrait;
3030
use WooCommerce\PayPalCommerce\Vendor\Inpsyde\Modularity\Module\ServiceModule;
3131
use WooCommerce\PayPalCommerce\Vendor\Psr\Container\ContainerInterface;
32+
use WooCommerce\PayPalCommerce\Settings\Data\SettingsModel;
33+
use WooCommerce\PayPalCommerce\Settings\Data\SettingsProvider;
3234
use WooCommerce\PayPalCommerce\WcGateway\Gateway\CreditCardGateway;
3335
use WooCommerce\PayPalCommerce\WcGateway\Gateway\PayPalGateway;
34-
use WooCommerce\PayPalCommerce\WcGateway\Settings\Settings;
3536
use WooCommerce\PayPalCommerce\WcSubscriptions\Endpoint\SubscriptionChangePaymentMethod;
3637
use WooCommerce\PayPalCommerce\WcSubscriptions\Helper\SubscriptionHelper;
3738

@@ -66,27 +67,25 @@ public function run( ContainerInterface $c ): bool {
6667
add_action(
6768
'woocommerce_paypal_payments_gateway_migrate_on_update',
6869
function () use ( $c ) {
69-
$settings = $c->get( 'wcgateway.settings' );
70-
assert( $settings instanceof Settings );
70+
$settings_model = $c->get( 'settings.data.settings' );
71+
assert( $settings_model instanceof SettingsModel );
7172

7273
$reference_transaction_status = $c->get( 'api.reference-transaction-status' );
7374
assert( $reference_transaction_status instanceof ReferenceTransactionStatus );
7475

7576
if ( ! $reference_transaction_status->reference_transaction_enabled() ) {
76-
$settings->set( 'vault_enabled', false );
77-
$settings->persist();
77+
$settings_model->set_save_paypal_and_venmo( false );
78+
$settings_model->save();
7879
}
7980
}
8081
);
8182

8283
add_action(
8384
'after_setup_theme',
8485
function () use ( $c ) {
85-
$settings = $c->get( 'wcgateway.settings' );
86-
if (
87-
( ! $settings->has( 'vault_enabled' ) || ! $settings->get( 'vault_enabled' ) )
88-
&& ( ! $settings->has( 'vault_enabled_dcc' ) || ! $settings->get( 'vault_enabled_dcc' ) )
89-
) {
86+
$settings_provider = $c->get( 'settings.settings-provider' );
87+
assert( $settings_provider instanceof SettingsProvider );
88+
if ( ! $settings_provider->save_paypal_and_venmo() && ! $settings_provider->save_card_details() ) {
9089
return true;
9190
}
9291

@@ -113,8 +112,8 @@ function ( array $localized_script_data ) use ( $c ) {
113112
add_filter(
114113
'ppcp_create_order_request_body_data',
115114
function ( array $data, string $payment_method, array $request_data ) use ( $c ): array {
116-
$settings = $c->get( 'wcgateway.settings' );
117-
assert( $settings instanceof Settings );
115+
$settings_provider = $c->get( 'settings.settings-provider' );
116+
assert( $settings_provider instanceof SettingsProvider );
118117

119118
$new_attributes = array(
120119
'vault' => array(
@@ -135,7 +134,7 @@ function ( array $data, string $payment_method, array $request_data ) use ( $c )
135134
$funding_source = (string) ( $request_data['funding_source'] ?? '' );
136135

137136
if ( $payment_method === CreditCardGateway::ID ) {
138-
if ( ! $settings->has( 'vault_enabled_dcc' ) || ! $settings->get( 'vault_enabled_dcc' ) ) {
137+
if ( ! $settings_provider->save_card_details() ) {
139138
return $data;
140139
}
141140

@@ -144,7 +143,7 @@ function ( array $data, string $payment_method, array $request_data ) use ( $c )
144143
return $data;
145144
}
146145
} elseif ( $payment_method === PayPalGateway::ID ) {
147-
if ( ! $settings->has( 'vault_enabled' ) || ! $settings->get( 'vault_enabled' ) ) {
146+
if ( ! $settings_provider->save_paypal_and_venmo() ) {
148147
return $data;
149148
}
150149

@@ -279,13 +278,13 @@ function () use ( $c ) {
279278

280279
$id_token = $api->id_token( $target_customer_id );
281280

282-
$settings = $c->get( 'wcgateway.settings' );
283-
assert( $settings instanceof Settings );
281+
$settings_provider = $c->get( 'settings.settings-provider' );
282+
assert( $settings_provider instanceof SettingsProvider );
284283

285-
$verification_method =
286-
$settings->has( '3d_secure_contingency' )
287-
? apply_filters( 'woocommerce_paypal_payments_three_d_secure_contingency', $settings->get( '3d_secure_contingency' ) )
288-
: '';
284+
$verification_method = apply_filters(
285+
'woocommerce_paypal_payments_three_d_secure_contingency',
286+
$settings_provider->three_d_secure_enum()
287+
);
289288

290289
// phpcs:ignore WordPress.Security.NonceVerification
291290
$change_payment_method = wc_clean( wp_unslash( $_GET['change_payment_method'] ?? '' ) );
@@ -414,10 +413,10 @@ function ( string $token_id ) use ( $c ) {
414413
add_filter(
415414
'woocommerce_paypal_payments_credit_card_gateway_supports',
416415
function ( array $supports ) use ( $c ): array {
417-
$settings = $c->get( 'wcgateway.settings' );
418-
assert( $settings instanceof ContainerInterface );
416+
$settings_provider = $c->get( 'settings.settings-provider' );
417+
assert( $settings_provider instanceof SettingsProvider );
419418

420-
if ( $settings->has( 'vault_enabled_dcc' ) && $settings->get( 'vault_enabled_dcc' ) ) {
419+
if ( $settings_provider->save_card_details() ) {
421420
$supports[] = 'tokenization';
422421
$supports[] = 'add_payment_method';
423422
}

modules/ppcp-settings/src/Data/SettingsProvider.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,15 @@ public function three_d_secure(): string {
330330
return $this->settings_model->get_three_d_secure();
331331
}
332332

333+
/**
334+
* Gets the 3D Secure setting as API enum value.
335+
*
336+
* @return string The 3D Secure API enum ('NO_3D_SECURE', 'SCA_WHEN_REQUIRED', 'SCA_ALWAYS').
337+
*/
338+
public function three_d_secure_enum(): string {
339+
return $this->settings_model->get_three_d_secure_enum();
340+
}
341+
333342
/**
334343
* Gets the authorize only setting.
335344
*

tests/PHPUnit/Settings/Data/SettingsProviderTest.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,11 @@ private function get_settings_model_data(): array {
302302
'model_method' => 'get_three_d_secure',
303303
'expected_value' => self::EXPECTED_VALUE_STRING,
304304
),
305+
array(
306+
'provider_method' => 'three_d_secure_enum',
307+
'model_method' => 'get_three_d_secure_enum',
308+
'expected_value' => self::EXPECTED_VALUE_STRING,
309+
),
305310
array(
306311
'provider_method' => 'authorize_only',
307312
'model_method' => 'get_authorize_only',

0 commit comments

Comments
 (0)