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

View file

@ -182,8 +182,11 @@ class CreditCardRenderer {
if (this.formValid && this.cardValid) {
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;
if (this.defaultConfig.enforce_vault) {
vault = true;
}
const contingency = this.defaultConfig.hosted_fields.contingency;
const hostedFieldsData = {
vault: vault

View file

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

View file

@ -117,7 +117,8 @@ return array(
'wcgateway.disabler' => static function ( ContainerInterface $container ): DisableGateways {
$session_handler = $container->get( 'session.handler' );
$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 {
$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;
use WooCommerce\PayPalCommerce\Session\SessionHandler;
use WooCommerce\PayPalCommerce\Subscription\Helper\SubscriptionHelper;
use WooCommerce\PayPalCommerce\WcGateway\Gateway\CreditCardGateway;
use WooCommerce\PayPalCommerce\WcGateway\Gateway\PayPalGateway;
use Psr\Container\ContainerInterface;
@ -19,7 +20,6 @@ use Psr\Container\ContainerInterface;
*/
class DisableGateways {
/**
* The Session Handler.
*
@ -34,19 +34,29 @@ class DisableGateways {
*/
private $settings;
/**
* The subscription helper
*
* @var SubscriptionHelper
*/
private $subscription_helper;
/**
* DisableGateways constructor.
*
* @param SessionHandler $session_handler The Session Handler.
* @param ContainerInterface $settings The Settings.
* @param SubscriptionHelper $subscription_helper The subscription helper.
*/
public function __construct(
SessionHandler $session_handler,
ContainerInterface $settings
ContainerInterface $settings,
SubscriptionHelper $subscription_helper
) {
$this->session_handler = $session_handler;
$this->settings = $settings;
$this->subscription_helper = $subscription_helper;
}
/**
@ -100,6 +110,10 @@ class DisableGateways {
return true;
}
if ( $this->subscription_helper->cart_contains_subscription() && ! is_user_logged_in() ) {
return true;
}
return false;
}