Merge pull request #343 from woocommerce/PCP-305-enable-save-card-for-guest-users

Disable PayPal gateways if subscription product in cart and customer not logged in
This commit is contained in:
Emili Castells 2021-11-04 15:58:52 +01:00 committed by GitHub
commit 984019cb2b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 40 additions and 24 deletions

33
composer.lock generated
View file

@ -556,16 +556,16 @@
}, },
{ {
"name": "antecedent/patchwork", "name": "antecedent/patchwork",
"version": "2.1.15", "version": "2.1.17",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/antecedent/patchwork.git", "url": "https://github.com/antecedent/patchwork.git",
"reference": "0430ceaac7f447f1778c199ec19d7e4362a6f961" "reference": "df5aba175a44c2996ced4edf8ec9f9081b5348c0"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/antecedent/patchwork/zipball/0430ceaac7f447f1778c199ec19d7e4362a6f961", "url": "https://api.github.com/repos/antecedent/patchwork/zipball/df5aba175a44c2996ced4edf8ec9f9081b5348c0",
"reference": "0430ceaac7f447f1778c199ec19d7e4362a6f961", "reference": "df5aba175a44c2996ced4edf8ec9f9081b5348c0",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -596,7 +596,7 @@
"runkit", "runkit",
"testing" "testing"
], ],
"time": "2021-08-22T08:00:13+00:00" "time": "2021-10-21T14:22:43+00:00"
}, },
{ {
"name": "brain/monkey", "name": "brain/monkey",
@ -735,16 +735,16 @@
}, },
{ {
"name": "composer/semver", "name": "composer/semver",
"version": "3.2.5", "version": "3.2.6",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/composer/semver.git", "url": "https://github.com/composer/semver.git",
"reference": "31f3ea725711245195f62e54ffa402d8ef2fdba9" "reference": "83e511e247de329283478496f7a1e114c9517506"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/composer/semver/zipball/31f3ea725711245195f62e54ffa402d8ef2fdba9", "url": "https://api.github.com/repos/composer/semver/zipball/83e511e247de329283478496f7a1e114c9517506",
"reference": "31f3ea725711245195f62e54ffa402d8ef2fdba9", "reference": "83e511e247de329283478496f7a1e114c9517506",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -807,7 +807,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2021-05-24T12:41:47+00:00" "time": "2021-10-25T11:34:17+00:00"
}, },
{ {
"name": "composer/xdebug-handler", "name": "composer/xdebug-handler",
@ -2921,7 +2921,6 @@
"type": "github" "type": "github"
} }
], ],
"abandoned": true,
"time": "2020-11-30T07:30:19+00:00" "time": "2020-11-30T07:30:19+00:00"
}, },
{ {
@ -3532,16 +3531,16 @@
}, },
{ {
"name": "vimeo/psalm", "name": "vimeo/psalm",
"version": "4.10.0", "version": "4.11.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/vimeo/psalm.git", "url": "https://github.com/vimeo/psalm.git",
"reference": "916b098b008f6de4543892b1e0651c1c3b92cbfa" "reference": "6fba5eb554f9507b72932f9c75533d8af593688d"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/vimeo/psalm/zipball/916b098b008f6de4543892b1e0651c1c3b92cbfa", "url": "https://api.github.com/repos/vimeo/psalm/zipball/6fba5eb554f9507b72932f9c75533d8af593688d",
"reference": "916b098b008f6de4543892b1e0651c1c3b92cbfa", "reference": "6fba5eb554f9507b72932f9c75533d8af593688d",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -3561,7 +3560,7 @@
"felixfbecker/advanced-json-rpc": "^3.0.3", "felixfbecker/advanced-json-rpc": "^3.0.3",
"felixfbecker/language-server-protocol": "^1.5", "felixfbecker/language-server-protocol": "^1.5",
"netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0",
"nikic/php-parser": "^4.12", "nikic/php-parser": "^4.13",
"openlss/lib-array2xml": "^1.0", "openlss/lib-array2xml": "^1.0",
"php": "^7.1|^8", "php": "^7.1|^8",
"sebastian/diff": "^3.0 || ^4.0", "sebastian/diff": "^3.0 || ^4.0",
@ -3629,7 +3628,7 @@
"inspection", "inspection",
"php" "php"
], ],
"time": "2021-09-04T21:00:09+00:00" "time": "2021-10-26T17:28:17+00:00"
}, },
{ {
"name": "webmozart/assert", "name": "webmozart/assert",

View file

@ -182,8 +182,11 @@ class CreditCardRenderer {
if (this.formValid && this.cardValid) { if (this.formValid && this.cardValid) {
const save_card = this.defaultConfig.save_card ? true : false; const save_card = this.defaultConfig.save_card ? true : false;
const vault = document.getElementById('ppcp-credit-card-vault') ? let vault = document.getElementById('ppcp-credit-card-vault') ?
document.getElementById('ppcp-credit-card-vault').checked : save_card; document.getElementById('ppcp-credit-card-vault').checked : save_card;
if (this.defaultConfig.enforce_vault) {
vault = true;
}
const contingency = this.defaultConfig.hosted_fields.contingency; const contingency = this.defaultConfig.hosted_fields.contingency;
const hostedFieldsData = { const hostedFieldsData = {
vault: vault vault: vault

View file

@ -31,7 +31,6 @@ use WooCommerce\PayPalCommerce\WcGateway\Settings\Settings;
*/ */
class CreateOrderEndpoint implements EndpointInterface { class CreateOrderEndpoint implements EndpointInterface {
const ENDPOINT = 'ppc-create-order'; const ENDPOINT = 'ppc-create-order';
/** /**

View file

@ -117,7 +117,8 @@ return array(
'wcgateway.disabler' => static function ( ContainerInterface $container ): DisableGateways { 'wcgateway.disabler' => static function ( ContainerInterface $container ): DisableGateways {
$session_handler = $container->get( 'session.handler' ); $session_handler = $container->get( 'session.handler' );
$settings = $container->get( 'wcgateway.settings' ); $settings = $container->get( 'wcgateway.settings' );
return new DisableGateways( $session_handler, $settings ); $subscription_helper = $container->get( 'subscription.helper' );
return new DisableGateways( $session_handler, $settings, $subscription_helper );
}, },
'wcgateway.is-wc-payments-page' => static function ( ContainerInterface $container ): bool { 'wcgateway.is-wc-payments-page' => static function ( ContainerInterface $container ): bool {
$page = isset( $_GET['page'] ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : ''; $page = isset( $_GET['page'] ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : '';

View file

@ -10,6 +10,7 @@ declare(strict_types=1);
namespace WooCommerce\PayPalCommerce\WcGateway\Checkout; namespace WooCommerce\PayPalCommerce\WcGateway\Checkout;
use WooCommerce\PayPalCommerce\Session\SessionHandler; use WooCommerce\PayPalCommerce\Session\SessionHandler;
use WooCommerce\PayPalCommerce\Subscription\Helper\SubscriptionHelper;
use WooCommerce\PayPalCommerce\WcGateway\Gateway\CreditCardGateway; use WooCommerce\PayPalCommerce\WcGateway\Gateway\CreditCardGateway;
use WooCommerce\PayPalCommerce\WcGateway\Gateway\PayPalGateway; use WooCommerce\PayPalCommerce\WcGateway\Gateway\PayPalGateway;
use Psr\Container\ContainerInterface; use Psr\Container\ContainerInterface;
@ -19,7 +20,6 @@ use Psr\Container\ContainerInterface;
*/ */
class DisableGateways { class DisableGateways {
/** /**
* The Session Handler. * The Session Handler.
* *
@ -34,19 +34,29 @@ class DisableGateways {
*/ */
private $settings; private $settings;
/**
* The subscription helper
*
* @var SubscriptionHelper
*/
private $subscription_helper;
/** /**
* DisableGateways constructor. * DisableGateways constructor.
* *
* @param SessionHandler $session_handler The Session Handler. * @param SessionHandler $session_handler The Session Handler.
* @param ContainerInterface $settings The Settings. * @param ContainerInterface $settings The Settings.
* @param SubscriptionHelper $subscription_helper The subscription helper.
*/ */
public function __construct( public function __construct(
SessionHandler $session_handler, SessionHandler $session_handler,
ContainerInterface $settings ContainerInterface $settings,
SubscriptionHelper $subscription_helper
) { ) {
$this->session_handler = $session_handler; $this->session_handler = $session_handler;
$this->settings = $settings; $this->settings = $settings;
$this->subscription_helper = $subscription_helper;
} }
/** /**
@ -100,6 +110,10 @@ class DisableGateways {
return true; return true;
} }
if ( $this->subscription_helper->cart_contains_subscription() && ! is_user_logged_in() ) {
return true;
}
return false; return false;
} }