diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 22acfd2af..06e744a59 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -45,6 +45,15 @@ jobs: sudo update-alternatives --set phpize /usr/bin/phpize$PHP_VERSION sudo update-alternatives --set php-config /usr/bin/php-config$PHP_VERSION + - name: Setup INI file + run: | + PHP_INI_LOCATION="$(php -r 'echo php_ini_loaded_file();')" + if [[ -z "$PHP_INI_LOCATION" || ! -f "$PHP_INI_LOCATION" ]]; then + echo 'Unable to determine php.ini location' + exit 1 + fi + echo "zend.assertions=1" | sudo tee -a "$PHP_INI_LOCATION" + - name: Get Composer Cache Directory id: composer-cache run: | diff --git a/composer.json b/composer.json index 1e289f9dc..4df375aef 100644 --- a/composer.json +++ b/composer.json @@ -16,9 +16,31 @@ "codeception/module-asserts": "^1.3", "10up/wp_mock": "^1.0" }, + "autoload": { + "classmap": [ + "woocommerce/admin", + "woocommerce/api", + "woocommerce/compatibility", + "woocommerce/payment-gateway", + "woocommerce/rest-api", + "woocommerce/utilities", + "woocommerce/class-sv-wc-admin-notice-handler.php", + "woocommerce/class-sv-wc-framework-bootstrap.php", + "woocommerce/class-sv-wc-helper.php", + "woocommerce/class-sv-wc-hook-deprecator.php", + "woocommerce/class-sv-wc-plugin.php", + "woocommerce/class-sv-wc-plugin-compatibility.php", + "woocommerce/class-sv-wc-plugin-dependencies.php", + "woocommerce/class-sv-wc-plugin-exception.php", + "woocommerce/class-sv-wp-admin-message-handler.php" + ], + "psr-4": { + "SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\": "woocommerce/" + } + }, "autoload-dev": { "psr-4": { - "SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\Tests\\": "tests/" + "SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\Tests\\": "tests/" } }, "config": { diff --git a/tests/TestCase.php b/tests/TestCase.php index f0c830fb2..5d32915b4 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -1,6 +1,6 @@ assertInstanceOf( '\SkyVerge\WooCommerce\PluginFramework\v5_13_0\SV_WC_Plugin_Dependencies', $this->get_plugin()->get_dependency_handler() ); + $this->assertInstanceOf( '\SkyVerge\WooCommerce\PluginFramework\v5_14_0\SV_WC_Plugin_Dependencies', $this->get_plugin()->get_dependency_handler() ); } @@ -161,7 +161,7 @@ public function test_get_dependency_handler() { */ public function test_get_lifecycle_handler() { - $this->assertInstanceOf( '\SkyVerge\WooCommerce\PluginFramework\v5_13_0\Plugin\Lifecycle', $this->get_plugin()->get_lifecycle_handler() ); + $this->assertInstanceOf( '\SkyVerge\WooCommerce\PluginFramework\v5_14_0\Plugin\Lifecycle', $this->get_plugin()->get_lifecycle_handler() ); } diff --git a/tests/integration/REST_API/Controllers/SettingsTest.php b/tests/integration/REST_API/Controllers/SettingsTest.php index 62e19e06c..16d5d1c6a 100644 --- a/tests/integration/REST_API/Controllers/SettingsTest.php +++ b/tests/integration/REST_API/Controllers/SettingsTest.php @@ -1,14 +1,14 @@ render_js(); $this->assertStringContainsString( 'function load_gateway_test_plugin_payment_methods_handler', $wc_queued_js ); - $this->assertStringContainsString( 'window.jQuery( document.body ).on( \'sv_wc_payment_methods_handler_v5_13_0_loaded\', load_gateway_test_plugin_payment_methods_handler );', $wc_queued_js ); + $this->assertStringContainsString( 'window.jQuery( document.body ).on( \'sv_wc_payment_methods_handler_v5_14_0_loaded\', load_gateway_test_plugin_payment_methods_handler );', $wc_queued_js ); } diff --git a/tests/integration/payment-gateway/PaymentFormTest.php b/tests/integration/payment-gateway/PaymentFormTest.php index 048cc35d0..12662f7c6 100644 --- a/tests/integration/payment-gateway/PaymentFormTest.php +++ b/tests/integration/payment-gateway/PaymentFormTest.php @@ -1,11 +1,11 @@ get_plugin()->get_gateway()->get_payment_form_instance()->render_js(); $this->assertStringContainsString( 'function load_test_gateway_payment_form_handler', $wc_queued_js ); - $this->assertStringContainsString( 'window.jQuery( document.body ).on( \'sv_wc_payment_form_handler_v5_13_0_loaded\', load_test_gateway_payment_form_handler );', $wc_queued_js ); + $this->assertStringContainsString( 'window.jQuery( document.body ).on( \'sv_wc_payment_form_handler_v5_14_0_loaded\', load_test_gateway_payment_form_handler );', $wc_queued_js ); } diff --git a/tests/integration/payment-gateway/SV_WC_Payment_Gateway_Payment_Token_Test.php b/tests/integration/payment-gateway/SV_WC_Payment_Gateway_Payment_Token_Test.php index e26e0399d..46c72e142 100644 --- a/tests/integration/payment-gateway/SV_WC_Payment_Gateway_Payment_Token_Test.php +++ b/tests/integration/payment-gateway/SV_WC_Payment_Gateway_Payment_Token_Test.php @@ -1,11 +1,11 @@ invokeArgs( $frontend_instance, [[]] ); $this->assertStringContainsString( 'function load_test_gateway_apple_pay_handler', $wc_queued_js ); - $this->assertStringContainsString( 'window.jQuery( document.body ).on( \'sv_wc_apple_pay_handler_v5_13_0_loaded\', load_test_gateway_apple_pay_handler );', $wc_queued_js ); + $this->assertStringContainsString( 'window.jQuery( document.body ).on( \'sv_wc_apple_pay_handler_v5_14_0_loaded\', load_test_gateway_apple_pay_handler );', $wc_queued_js ); } diff --git a/tests/unit/API/CacheableRequestTraitTest.php b/tests/unit/API/CacheableRequestTraitTest.php index 41106f24b..00f67c771 100644 --- a/tests/unit/API/CacheableRequestTraitTest.php +++ b/tests/unit/API/CacheableRequestTraitTest.php @@ -1,9 +1,9 @@ assertTrue(class_exists($className) || interface_exists($className)); + } + + /** @see testCanAutoload */ + public function providerCanAutoload() : Generator + { + $list = [ + Handlers\Capture::class, + Handlers\Abstract_Payment_Handler::class, + Handlers\Abstract_Hosted_Payment_Handler::class, + External_Checkout::class, + Admin::class, + Frontend::class, + Orders::class, + Google_Pay_Checkout\Google_Pay::class, + Google_Pay_Checkout\Admin::class, + Google_Pay_Checkout\AJAX::class, + Google_Pay_Checkout\Frontend::class, + Payment_Gateway_Blocks\Gateway_Blocks_Handler::class, + Payment_Gateway_Blocks\Gateway_Checkout_Block_Integration::class, + Settings_API\Abstract_Settings::class, + Settings_API\Setting::class, + Settings_API\Control::class, + Abstract_Cacheable_API_Base::class, + Notes_Helper::class, + Addresses\Address::class, + Addresses\Customer_Address::class, + SV_WC_Payment_Gateway_API_Authorization_Response::class, + SV_WC_Payment_Gateway_API_Get_Tokenized_Payment_Methods_Response::class, + SV_WC_Payment_Gateway_API_Response::class, + SV_WC_Payment_Gateway_Admin_Payment_Token_Editor::class, + SV_WC_Payment_Gateway_Exception::class, + SV_WC_Payment_Gateway_Apple_Pay_AJAX::class, + SV_WC_Payment_Gateway_Integration_Subscriptions::class, + SV_WC_Payment_Gateway_Payment_Tokens_Handler::class, + SV_WC_Payment_Gateway_Integration::class, + \SkyVerge\WooCommerce\PluginFramework\v5_14_0\Payment_Gateway\REST_API::class, + REST_API::class, + REST_API\Controllers\Settings::class, + SV_WP_Job_Batch_Handler::class, + SV_WC_Admin_Notice_Handler::class, + SV_WP_Admin_Message_Handler::class, + Lifecycle::class, + ]; + + foreach ($list as $className) { + yield $className => [$className]; + } + } + + /** + * @covers \SkyVerge\WooCommerce\PluginFramework\v5_14_0\SV_WC_Plugin::setupClassAliases() + * + * @throws ReflectionException + */ + public function testClassAliases() : void + { + $aliases = [ + Country_Helper::class => \SkyVerge\WooCommerce\PluginFramework\v5_14_0\Country_Helper::class, + PaymentFormContextChecker::class => \SkyVerge\WooCommerce\PluginFramework\v5_14_0\PaymentFormContextChecker::class, + ]; + + foreach ($aliases as $alias) { + $this->assertFalse(class_exists($alias)); + } + + $this->invokeInaccessibleMethod( + Mockery::mock(SV_WC_Plugin::class)->makePartial(), + 'setupClassAliases' + ); + + foreach ($aliases as $class => $alias) { + $this->assertInstanceOf($class, Mockery::mock($alias)); + } + } +} diff --git a/tests/unit/Helpers/ArrayHelperTest.php b/tests/unit/Helpers/ArrayHelperTest.php new file mode 100644 index 000000000..1d04822d2 --- /dev/null +++ b/tests/unit/Helpers/ArrayHelperTest.php @@ -0,0 +1,280 @@ +assertSame($expected, ArrayHelper::accessible($item)); + } + + /** @see testCanDetermineIsAccessible */ + public function providerCanDetermineIsAccessible(): Generator + { + yield 'array is accessible' => [ + 'item' => ['foo' => 'bar'], + 'expected' => true, + ]; + + yield 'ArrayAccess is accessible' => [ + 'item' => $this->getArrayAccessObject(), + 'expected' => true, + ]; + + yield 'object without ArrayAccess is not accessible' => [ + 'item' => new \stdClass(), + 'expected' => false, + ]; + + yield 'integer is not accessible' => [ + 'item' => 10, + 'expected' => false, + ]; + + yield 'string is not accessible' => [ + 'item' => 'string', + 'expected' => false, + ]; + } + + /** + * @covers ::except() + * @dataProvider providerExcept + * + * @param array $inputArray + * @param array|string $keysToExclude + * @param array $expectedOutputArray + * @return void + */ + public function testExcept(array $inputArray, $keysToExclude, array $expectedOutputArray): void + { + $this->assertSame( + $expectedOutputArray, + ArrayHelper::except($inputArray, $keysToExclude) + ); + } + + /** @see testExcept */ + public function providerExcept(): Generator + { + yield 'array of keys' => [ + 'inputArray' => [ + 'apple' => 'red', + 'banana' => 'yellow', + 'cucumber' => 'green', + ], + 'keysToExclude' => ['apple', 'cucumber'], + 'expectedOutputArray' => [ + 'banana' => 'yellow', + ], + ]; + + yield 'key as a string' => [ + 'inputArray' => [ + 'apple' => 'red', + 'banana' => 'yellow', + 'cucumber' => 'green', + ], + 'keysToExclude' => 'banana', + 'expectedOutputArray' => [ + 'apple' => 'red', + 'cucumber' => 'green', + ], + ]; + + yield 'keys to exclude do not exist' => [ + 'inputArray' => [ + 'apple' => 'red', + 'banana' => 'yellow', + 'cucumber' => 'green', + ], + 'keysToExclude' => ['invalid'], + 'expectedOutputArray' => [ + 'apple' => 'red', + 'banana' => 'yellow', + 'cucumber' => 'green', + ], + ]; + } + + /** + * Tests that can remove items from an array. + * + * @covers ::remove() + * @dataProvider providerCanRemove + * + * @param array $input + * @param string|string[] $keysToRemove + * @param array $expected + */ + public function testCanRemoveItemsFromArray(array $input, $keysToRemove, array $expected) : void + { + ArrayHelper::remove($input, $keysToRemove); + $this->assertEquals($expected, $input); + } + + /** @see testCanRemoveItemsFromArray */ + public function providerCanRemove() : Generator + { + yield 'remove 1 key from one item array' => [ + 'input' => ['test' => 1], + 'keysToRemove' => 'test', + 'expected' => [], + ]; + + yield 'remove 1 key from two item array' => [ + 'input' => ['test' => 2, 'second' => ['nested' => 3]], + 'keysToRemove' => 'second', + 'expected' => ['test' => 2], + ]; + + yield 'remove 2 keys' => [ + 'input' => ['test' => 2, 'second' => ['nested' => 3], 'third' => 4], + 'keysToRemove' => ['second', 'third'], + 'expected' => ['test' => 2], + ]; + + yield 'remove 2 keys that are one level deep' => [ + 'input' => [ + 'resource' => [ + 'first' => 1, + 'second' => 2, + ], + ], + 'keysToRemove' => ['resource.first', 'resource.second'], + 'expected' => ['resource' => []], + ]; + } + + /** + * @covers ::wrap() + * @dataProvider providerCanWrap + * + * @param mixed $item + * @param array $expectedOutput + * @return void + */ + public function testCanWrap($item, array $expectedOutput): void + { + $this->assertEquals($expectedOutput, ArrayHelper::wrap($item)); + } + + /** @see testCanWrap */ + public function providerCanWrap(): Generator + { + yield 'already an array' => [ + 'item' => ['foo' => 'bar'], + 'expectedOutput' => ['foo' => 'bar'], + ]; + + yield 'integer' => [ + 'item' => 50, + 'expectedOutput' => [50], + ]; + + yield 'null item' => [ + 'item' => null, + 'expectedOutput' => [], + ]; + + yield 'empty string' => [ + 'item' => '', + 'expectedOutput' => [], + ]; + } + + /** + * @covers ::exists() + * @dataProvider providerCanDetermineKeyExists + * + * @param array|ArrayAccess $input + * @param string|int $key + * @param bool $expected + * @return void + */ + public function testCanDetermineKeyExists($input, $key, bool $expected): void + { + $this->assertSame( + $expected, + ArrayHelper::exists($input, $key) + ); + } + + /** @see testCanDetermineKeyExists */ + public function providerCanDetermineKeyExists(): Generator + { + yield 'ArrayAccess' => [ + 'input' => $this->getArrayAccessObject(), + 'key' => 'key', + 'expected' => true, + ]; + + yield 'array with string key that exists' => [ + 'input' => ['foo' => 'bar'], + 'key' => 'foo', + 'expected' => true, + ]; + + yield 'array with string key that does not exist' => [ + 'input' => ['foo' => 'bar'], + 'key' => 'invalid', + 'expected' => false, + ]; + + yield 'array with integer key that exists' => [ + 'input' => ['chocolate', 'vanilla'], + 'key' => 1, + 'expected' => true, + ]; + + yield 'array with integer key that does not exist' => [ + 'input' => ['chocolate', 'vanilla'], + 'key' => 5, + 'expected' => false, + ]; + } + + protected function getArrayAccessObject(): ArrayAccess + { + return new class implements ArrayAccess + { + + public function offsetExists($offset) : bool + { + return true; + } + + public function offsetGet($offset) : int + { + return 1; + } + + public function offsetSet($offset, $value) : void + { + // TODO: Implement offsetSet() method. + } + + public function offsetUnset($offset) : void + { + // TODO: Implement offsetUnset() method. + } + }; + } +} diff --git a/tests/unit/CountryHelperTest.php b/tests/unit/Helpers/CountryHelperTest.php similarity index 60% rename from tests/unit/CountryHelperTest.php rename to tests/unit/Helpers/CountryHelperTest.php index c9729bfa4..557ab38a1 100644 --- a/tests/unit/CountryHelperTest.php +++ b/tests/unit/Helpers/CountryHelperTest.php @@ -1,21 +1,14 @@ testObject = Mockery::mock(PaymentFormContextChecker::class) ->shouldAllowMockingProtectedMethods() ->makePartial(); @@ -40,7 +38,7 @@ public function tearDown() : void } /** - * @covers \SkyVerge\WooCommerce\PluginFramework\v5_13_0\PaymentFormContextChecker::getContextSessionKeyName() + * @covers \SkyVerge\WooCommerce\PluginFramework\v5_14_0\Payment_Gateway\PaymentFormContextChecker::getContextSessionKeyName() * @throws ReflectionException */ public function testCanGetContextSessionKeyName() : void @@ -54,7 +52,7 @@ public function testCanGetContextSessionKeyName() : void } /** - * @covers \SkyVerge\WooCommerce\PluginFramework\v5_13_0\PaymentFormContextChecker::maybeSetContext() + * @covers \SkyVerge\WooCommerce\PluginFramework\v5_14_0\Payment_Gateway\PaymentFormContextChecker::maybeSetContext() */ public function testCanSetContext() : void { @@ -83,7 +81,7 @@ public function testCanSetContext() : void } /** - * @covers \SkyVerge\WooCommerce\PluginFramework\v5_13_0\PaymentFormContextChecker::getCurrentPaymentFormContext() + * @covers \SkyVerge\WooCommerce\PluginFramework\v5_14_0\Payment_Gateway\PaymentFormContextChecker::getCurrentPaymentFormContext() * * @dataProvider providerCanGetCurrentPaymentFormContext * @@ -144,7 +142,7 @@ public function providerCanGetCurrentPaymentFormContext() : Generator } /** - * @covers \SkyVerge\WooCommerce\PluginFramework\v5_13_0\PaymentFormContextChecker::getStoredPaymentFormContext() + * @covers \SkyVerge\WooCommerce\PluginFramework\v5_14_0\Payment_Gateway\PaymentFormContextChecker::getStoredPaymentFormContext() * @throws ReflectionException */ public function testCanGetStoredPaymentFormContext() : void @@ -172,7 +170,7 @@ public function testCanGetStoredPaymentFormContext() : void } /** - * @covers \SkyVerge\WooCommerce\PluginFramework\v5_13_0\PaymentFormContextChecker::currentContextRequiresTermsAndConditionsAcceptance() + * @covers \SkyVerge\WooCommerce\PluginFramework\v5_14_0\Payment_Gateway\PaymentFormContextChecker::currentContextRequiresTermsAndConditionsAcceptance() * * @dataProvider providerCanDetermineCurrentContextRequiresTermsAndConditionsAcceptance * diff --git a/tests/unit/PluginTest.php b/tests/unit/PluginTest.php new file mode 100644 index 000000000..6cbe720fc --- /dev/null +++ b/tests/unit/PluginTest.php @@ -0,0 +1,88 @@ +testObject = Mockery::mock(SV_WC_Plugin::class) + ->shouldAllowMockingProtectedMethods() + ->makePartial(); + } + + /** + * @covers \SkyVerge\WooCommerce\PluginFramework\v5_14_0\SV_WC_Plugin::logger() + * @throws ReflectionException + */ + public function testCanGetLogger() : void + { + WP_Mock::userFunction('wc_get_logger') + ->once() + ->andReturn($logger = Mockery::mock('WC_Logger_Interface')); + + $this->assertSame( + $logger, + $this->invokeInaccessibleMethod($this->testObject, 'logger') + ); + + $this->assertSame( + $logger, + $this->invokeInaccessibleMethod($this->testObject, 'logger') + ); + } + + /** + * @covers \SkyVerge\WooCommerce\PluginFramework\v5_14_0\SV_WC_Plugin::assert() + * @throws ReflectionException + */ + public function testCanAssert() : void + { + WP_Mock::userFunction('wp_debug_backtrace_summary')->never(); + + $this->testObject->expects('logger')->never(); + + $this->assertNull( + $this->invokeInaccessibleMethod($this->testObject, 'assert', true) + ); + } + + /** + * @covers \SkyVerge\WooCommerce\PluginFramework\v5_14_0\SV_WC_Plugin::assert() + * @throws ReflectionException + */ + public function testCanCatchFailedAssertion() : void + { + WP_Mock::userFunction('wp_debug_backtrace_summary') + ->once() + ->andReturn('TEST_DEBUG_BACKTRACE_SUMMARY'); + + $this->testObject->expects('logger') + ->once() + ->andReturn($logger = Mockery::mock('WC_Logger_Interface')); + + $logger->expects('debug') + ->once() + ->with('Assertion failed, backtrace summery: TEST_DEBUG_BACKTRACE_SUMMARY'); + + $this->assertNull( + $this->invokeInaccessibleMethod($this->testObject, 'assert', false) + ); + } +} diff --git a/tests/unit/Settings_API/ControlTest.php b/tests/unit/Settings_API/ControlTest.php index 69d42bae0..12550d6ae 100644 --- a/tests/unit/Settings_API/ControlTest.php +++ b/tests/unit/Settings_API/ControlTest.php @@ -1,24 +1,16 @@ subject = new TestCanConvertToArray(); + } + + /** + * @covers \SkyVerge\WooCommerce\PluginFramework\v5_14_0\Traits\CanConvertToArrayTrait::toArray() + * @covers \SkyVerge\WooCommerce\PluginFramework\v5_14_0\Traits\CanConvertToArrayTrait::toArrayShouldPropertyBeAccessible() + * + * @dataProvider providerCanConvertPropertiesToArray + * + * @param bool $includePrivateProperties + * @param bool $includeProtectedProperties + * @param bool $includePublicProperties + * @param array $expectedProperties + * @return void + * @throws Exception + */ + public function testCanConvertPropertiesToArray( + bool $includePrivateProperties, + bool $includeProtectedProperties, + bool $includePublicProperties, + array $expectedProperties + ) : void { + $this->setInaccessiblePropertyValue($this->subject, 'toArrayIncludePrivate', $includePrivateProperties); + $this->setInaccessiblePropertyValue($this->subject, 'toArrayIncludeProtected', $includeProtectedProperties); + $this->setInaccessiblePropertyValue($this->subject, 'toArrayIncludePublic', $includePublicProperties); + + $this->assertSame($expectedProperties, $this->subject->toArray()); + } + + /** @see testCanConvertPropertiesToArray */ + public function providerCanConvertPropertiesToArray() : Generator + { + yield 'no properties included' => [ + 'includePrivateProperties' => false, + 'includeProtectedProperties' => false, + 'includePublicProperties' => false, + 'expectedProperties' => [], + ]; + + yield 'private properties included' => [ + 'includePrivateProperties' => true, + 'includeProtectedProperties' => false, + 'includePublicProperties' => false, + 'expectedProperties' => [ + 'privateProperty' => 'private', + ], + ]; + + yield 'private and protected properties included' => [ + 'includePrivateProperties' => true, + 'includeProtectedProperties' => true, + 'includePublicProperties' => false, + 'expectedProperties' => [ + 'privateProperty' => 'private', + 'protectedProperty' => 'protected', + ], + ]; + + yield 'private, protected, and public properties included' => [ + 'includePrivateProperties' => true, + 'includeProtectedProperties' => true, + 'includePublicProperties' => true, + 'expectedProperties' => [ + 'privateProperty' => 'private', + 'protectedProperty' => 'protected', + 'publicProperty' => 'public', + ], + ]; + + yield 'private and public properties included' => [ + 'includePrivateProperties' => true, + 'includeProtectedProperties' => false, + 'includePublicProperties' => true, + 'expectedProperties' => [ + 'privateProperty' => 'private', + 'publicProperty' => 'public', + ], + ]; + + yield 'protected and public properties included' => [ + 'includePrivateProperties' => false, + 'includeProtectedProperties' => true, + 'includePublicProperties' => true, + 'expectedProperties' => [ + 'protectedProperty' => 'protected', + 'publicProperty' => 'public', + ], + ]; + } + + /** + * Tests nested objects that may or may not use the same trait. + * + * @covers \SkyVerge\WooCommerce\PluginFramework\v5_14_0\Traits\CanConvertToArrayTrait::toArray() + * + * @dataProvider providerCanConvertNestedProperties + * + * @param TestSubjectWithNestedProperty $object + * @param mixed $nestedObject + * @param array $expected + */ + public function testCanConvertNestedProperties( + TestSubjectWithNestedProperty $object, + $nestedObject, + array $expected + ) : void { + $object->nestedProperty = $nestedObject; + + $this->assertSame($expected, $object->toArray()); + } + + /** @see testCanConvertNestedProperties */ + public function providerCanConvertNestedProperties() : Generator + { + yield 'Nested object is null' => [ + 'object' => new TestSubjectWithNestedProperty(), + 'nestedObject' => null, + 'expected' => ['nestedProperty' => null], + ]; + + yield 'Nested object is a primitive type' => [ + 'object' => new TestSubjectWithNestedProperty(), + 'nestedObject' => 'test', + 'expected' => ['nestedProperty' => 'test'], + ]; + + $randomObject = new class { + }; + + yield 'Nested object is an object that doesn\'t use the trait' => [ + 'object' => new TestSubjectWithNestedProperty(), + 'nestedObject' => $randomObject, + 'expected' => ['nestedProperty' => $randomObject], + ]; + + yield 'Nested object is an object that uses the trait' => [ + 'object' => new TestSubjectWithNestedProperty(), + 'nestedObject' => new TestSubjectWithNestedProperty(), + 'expected' => ['nestedProperty' => ['nestedProperty' => null]], + ]; + + yield 'Nested object is an array of primitive types' => [ + 'object' => new TestSubjectWithNestedProperty(), + 'nestedObject' => ['a', 'b'], + 'expected' => ['nestedProperty' => ['a', 'b']], + ]; + + yield 'Nested object is an associative array of primitive types' => [ + 'object' => new TestSubjectWithNestedProperty(), + 'nestedObject' => ['a' => 'b'], + 'expected' => ['nestedProperty' => ['a' => 'b']], + ]; + + yield 'Nested object is an associative array of objects that doesn\'t use the trait' => [ + 'object' => new TestSubjectWithNestedProperty(), + 'nestedObject' => ['a' => $randomObject], + 'expected' => ['nestedProperty' => ['a' => $randomObject]], + ]; + + yield 'Nested object is an array of objects that use the trait' => [ + 'object' => new TestSubjectWithNestedProperty(), + 'nestedObject' => [new TestSubjectWithNestedProperty()], + 'expected' => [ + 'nestedProperty' => [ + ['nestedProperty' => null], + ], + ], + ]; + + yield 'Nested object is an associative array of objects that use the trait' => [ + 'object' => new TestSubjectWithNestedProperty(), + 'nestedObject' => ['a' => new TestSubjectWithNestedProperty()], + 'expected' => [ + 'nestedProperty' => [ + 'a' => ['nestedProperty' => null], + ], + ], + ]; + + yield 'Nested object is a two-dimensional array' => [ + 'object' => new TestSubjectWithNestedProperty(), + 'nestedObject' => [ + ['a' => $randomObject], + ['a' => $randomObject], + ], + 'expected' => [ + 'nestedProperty' => [ + ['a' => $randomObject], + ['a' => $randomObject], + ], + ], + ]; + } + + /** + * Tests that can determine whether an item can be converted to array. + * + * @covers \SkyVerge\WooCommerce\PluginFramework\v5_14_0\Traits\CanConvertToArrayTrait::canConvertItemToArray() + * + * @throws Exception + */ + public function testCanDetermineWhetherCanConvertItemToArray() : void + { + $trait = $this->getMockForTrait(CanConvertToArrayTrait::class); + $method = $this->getInaccessibleMethod($trait, 'canConvertItemToArray'); + + $this->assertFalse($method->invokeArgs($trait, [null])); + $this->assertFalse($method->invokeArgs($trait, ['foo'])); + $this->assertFalse($method->invokeArgs($trait, [['foo' => 'bar']])); + $this->assertFalse($method->invokeArgs($trait, [123])); + $this->assertFalse($method->invokeArgs($trait, [new stdClass()])); + $this->assertTrue($method->invokeArgs($trait, [ + new class() { + public function toArray() : array + { + return []; + } + }, + ])); + } + + /** + * Tests nested objects infinite recursion prevention. + * + * @covers \SkyVerge\WooCommerce\PluginFramework\v5_14_0\Traits\CanConvertToArrayTrait::toArray() + */ + public function testCanConvertNestedPropertiesWontDoInfiniteRecursion() : void + { + $objectA = new TestSubjectWithNestedProperty(); + $objectB = new TestSubjectWithNestedProperty(); + $objectC = new TestSubjectWithNestedProperty(); + + $objectA->nestedProperty = $objectB; + $objectB->nestedProperty = $objectC; + $objectC->nestedProperty = $objectA; + + // tests that a infinite recursion is prevented + $this->assertSame([ + // object A + 'nestedProperty' => [ + // object B + 'nestedProperty' => [ + // object C + 'nestedProperty' => [], + ], + ], + ], $objectA->toArray()); + + // tests that the recursion flag won't affect subsequent toArray() calls + // also makes sure the recursion flag acts per instance, not per class + $this->assertSame([ + // object B + 'nestedProperty' => [ + // object C + 'nestedProperty' => [ + // object A + 'nestedProperty' => [], + ], + ], + ], $objectB->toArray()); + } +} + +/** Dummy class for testing {@see CanConvertToArrayTrait} */ +final class TestCanConvertToArray +{ + use CanConvertToArrayTrait; + + private string $privateProperty = 'private'; + protected string $protectedProperty = 'protected'; + public string $publicProperty = 'public'; + + /** @var bool this property should never be included in arrays because it's not initialized */ + public bool $unInitializedProperty; +} + +final class TestSubjectWithNestedProperty +{ + use CanConvertToArrayTrait; + + public $nestedProperty; +} diff --git a/tests/unit/Traits/CanGetNewInstanceTraitTest.php b/tests/unit/Traits/CanGetNewInstanceTraitTest.php new file mode 100644 index 000000000..e354ee1dc --- /dev/null +++ b/tests/unit/Traits/CanGetNewInstanceTraitTest.php @@ -0,0 +1,60 @@ +getTestClass(); + $newInstance = $class::getNewInstance('value1', 'value2'); + + $this->assertSame('value1', $newInstance->arg1); + $this->assertSame('value2', $newInstance->arg2); + $this->assertInstanceOf(get_class($class), $newInstance); + } + + /** + * Tests that it can get new instance without arguments. + * + * @covers \SkyVerge\WooCommerce\PluginFramework\v5_14_0\Traits\CanGetNewInstanceTrait::getNewInstance() + */ + public function testItCanGetNewInstanceWithoutArgs() : void + { + $class = $this->getTestClass(); + $newInstance = $class::getNewInstance(); + + $this->assertNull($newInstance->arg1); + $this->assertNull($newInstance->arg2); + $this->assertInstanceOf(get_class($class), $newInstance); + } + + /** + * Anonymous Class for Testing Trait. + * + * @see testItCanGetNewInstance + */ + private function getTestClass() + { + return new class { + use CanGetNewInstanceTrait; + + public ?string $arg1 = null; + public ?string $arg2 = null; + + public function __construct(?string $arg1 = null, ?string $arg2 = null) + { + $this->arg1 = $arg1; + $this->arg2 = $arg2; + } + }; + } +} diff --git a/tests/unit/Traits/IsSingletonTraitTest.php b/tests/unit/Traits/IsSingletonTraitTest.php new file mode 100644 index 000000000..9eba51835 --- /dev/null +++ b/tests/unit/Traits/IsSingletonTraitTest.php @@ -0,0 +1,78 @@ +singleton = new TestSingleton(); + + $this->setInaccessiblePropertyValue($this->singleton, 'instance', $this->singleton); + } + + /** + * Tests that it can determine whether an instance is loaded or not. + * + * @covers \SkyVerge\WooCommerce\PluginFramework\v5_14_0\Traits\IsSingletonTrait::isLoaded() + */ + public function testCanCheckIfIsLoaded() : void + { + self::assertTrue($this->singleton::isLoaded()); + + $this->singleton::reset(); + + self::assertFalse($this->singleton::isLoaded()); + } + + /** + * Tests that it can initialize and return an instance of self. + * + * @covers \SkyVerge\WooCommerce\PluginFramework\v5_14_0\Traits\IsSingletonTrait::getInstance() + */ + public function testCanGetInstance() : void + { + TestSingleton::reset(); + + $instance = TestSingleton::getInstance(); + + $this->assertInstanceOf(TestSingleton::class, $instance); + $this->assertSame($instance, TestSingleton::getInstance()); + } + + /** + * Tests that an instance can be reset. + * + * @covers \SkyVerge\WooCommerce\PluginFramework\v5_14_0\Traits\IsSingletonTrait::reset() + */ + public function testCanBeReset() : void + { + $this->singleton::reset(); + + $singleton = new ReflectionClass($this->singleton); + $instance = $singleton->getProperty('instance'); + $instance->setAccessible(true); + + self::assertNull($instance->getValue()); + } +} + +/** Dummy class for testing {@see IsSingletonTrait} */ +final class TestSingleton +{ + use IsSingletonTrait; +} diff --git a/woocommerce-framework-plugin-loader-sample.php b/woocommerce-framework-plugin-loader-sample.php index 9b11ce0b8..b2d862faf 100644 --- a/woocommerce-framework-plugin-loader-sample.php +++ b/woocommerce-framework-plugin-loader-sample.php @@ -26,19 +26,6 @@ defined( 'ABSPATH' ) or exit; -// Required functions -if ( ! function_exists( 'woothemes_queue_update' ) ) { - require_once( plugin_dir_path( __FILE__ ) . 'woo-includes/woo-functions.php' ); -} - -// Plugin updates -woothemes_queue_update( plugin_basename( __FILE__ ), '00000000000000000000000000000000', '99999' ); // TODO: updater keys - -// WC active check -if ( ! is_woocommerce_active() ) { - return; -} - /** * The plugin loader class. * @@ -61,7 +48,7 @@ class SV_WC_Framework_Plugin_Loader { const MINIMUM_WC_VERSION = '3.9'; /** SkyVerge plugin framework version used by this plugin */ - const FRAMEWORK_VERSION = '5.13.0'; // TODO: framework version + const FRAMEWORK_VERSION = '5.14.0-dev.1'; // TODO: framework version /** the plugin name, for displaying notices */ @@ -131,13 +118,11 @@ public function init_plugin() { return; } - $this->load_framework(); - - /** If the plugin is structured for PSR-4, do the following: - // autoload plugin and vendor files $loader = require_once( plugin_dir_path( __FILE__ ) . 'vendor/autoload.php' ); + /** If the plugin is structured for PSR-4, do the following: + // register plugin namespace with autoloader $loader->addPsr4( 'SkyVerge\\WooCommerce\\Plugin_Name\\', __DIR__ . '/includes' ); // TODO: plugin namespace here @@ -158,24 +143,6 @@ public function init_plugin() { } - /** - * Loads the base framework classes. - * - * @since 1.0.0 - */ - private function load_framework() { - - if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\' . $this->get_framework_version_namespace() . '\\SV_WC_Plugin' ) ) { - require_once( plugin_dir_path( __FILE__ ) . 'lib/skyverge/woocommerce/class-sv-wc-plugin.php' ); - } - - // TODO: remove this if not a payment gateway - if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\' . $this->get_framework_version_namespace() . '\\SV_WC_Payment_Gateway_Plugin' ) ) { - require_once( plugin_dir_path( __FILE__ ) . 'lib/skyverge/woocommerce/payment-gateway/class-sv-wc-payment-gateway-plugin.php' ); - } - } - - /** * Gets the framework version in namespace form. * diff --git a/woocommerce/Addresses/Address.php b/woocommerce/Addresses/Address.php index 2be8cb0da..b24c06d54 100644 --- a/woocommerce/Addresses/Address.php +++ b/woocommerce/Addresses/Address.php @@ -22,11 +22,11 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0\Addresses; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0\Addresses; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\Addresses\\Address' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\Addresses\\Address' ) ) : /** diff --git a/woocommerce/Addresses/Customer_Address.php b/woocommerce/Addresses/Customer_Address.php index b0c1d1ba3..43ce2e3c4 100644 --- a/woocommerce/Addresses/Customer_Address.php +++ b/woocommerce/Addresses/Customer_Address.php @@ -22,11 +22,11 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0\Addresses; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0\Addresses; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\Addresses\\Customer_Address' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\Addresses\\Customer_Address' ) ) : /** diff --git a/woocommerce/Blocks/Block_Integration.php b/woocommerce/Blocks/Block_Integration.php index 3333af4d7..57750f3bb 100644 --- a/woocommerce/Blocks/Block_Integration.php +++ b/woocommerce/Blocks/Block_Integration.php @@ -22,16 +22,16 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0\Blocks; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0\Blocks; use Automattic\WooCommerce\Blocks\Integrations\IntegrationInterface; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\Blocks\Traits\Block_Integration_Trait; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\Payment_Gateway\Blocks\Gateway_Checkout_Block_Integration; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\SV_WC_Plugin; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\Blocks\Traits\Block_Integration_Trait; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\Payment_Gateway\Blocks\Gateway_Checkout_Block_Integration; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\SV_WC_Plugin; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\Blocks\\Block_Integration' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\Blocks\\Block_Integration' ) ) : /** * Base class for handling support for WooCommerce blocks, like Cart or Checkout blocks. diff --git a/woocommerce/Blocks/Blocks_Handler.php b/woocommerce/Blocks/Blocks_Handler.php index 3e5205a5d..7626d6532 100644 --- a/woocommerce/Blocks/Blocks_Handler.php +++ b/woocommerce/Blocks/Blocks_Handler.php @@ -1,16 +1,16 @@ plugin = $plugin; - $framework_path = $this->plugin->get_framework_path(); - - require_once( $framework_path . '/Blocks/Traits/Block_Integration_Trait.php' ); - require_once( $framework_path . '/Blocks/Block_Integration.php' ); - // blocks-related notices and call-to-actions add_action( 'admin_notices', [ $this, 'add_admin_notices' ] ); diff --git a/woocommerce/Blocks/Traits/Block_Integration_Trait.php b/woocommerce/Blocks/Traits/Block_Integration_Trait.php index 149cdf0db..c31a1fcee 100644 --- a/woocommerce/Blocks/Traits/Block_Integration_Trait.php +++ b/woocommerce/Blocks/Traits/Block_Integration_Trait.php @@ -1,18 +1,18 @@ ISO 3166-alpha3 */ - static public $alpha3 = [ + static public array $alpha3 = [ 'AF' => 'AFG', 'AL' => 'ALB', 'DZ' => 'DZA', 'AD' => 'AND', 'AO' => 'AGO', 'AG' => 'ATG', 'AR' => 'ARG', 'AM' => 'ARM', 'AU' => 'AUS', 'AT' => 'AUT', 'AZ' => 'AZE', 'BS' => 'BHS', 'BH' => 'BHR', 'BD' => 'BGD', 'BB' => 'BRB', @@ -95,7 +94,7 @@ class Country_Helper { ]; /** @var array ISO 3166-alpha2 => ISO 3166-numeric */ - static public $numeric = [ + static public array $numeric = [ 'AF' => '004', 'AX' => '248', 'AL' => '008', 'DZ' => '012', 'AS' => '016', 'AD' => '020', 'AO' => '024', 'AI' => '660', 'AQ' => '010', 'AG' => '028', 'AR' => '032', 'AM' => '051', 'AW' => '533', 'AU' => '036', 'AT' => '040', @@ -149,7 +148,7 @@ class Country_Helper { ]; /** @var array ISO 3166-alpha2 => phone calling code(s) */ - static public $calling_codes = [ + static public array $calling_codes = [ 'BD' => '+880', 'BE' => '+32', 'BF' => '+226', @@ -411,7 +410,7 @@ class Country_Helper { /** @var array flipped calling codes */ - protected static $flipped_calling_codes; + protected static array $flipped_calling_codes; /** @@ -430,7 +429,7 @@ public static function convert_alpha_country_code( $code ) { $countries = 3 === strlen( $code ) ? array_flip( self::$alpha3 ) : self::$alpha3; - return isset( $countries[ $code ] ) ? $countries[ $code ] : $code; + return $countries[$code] ?? $code; } @@ -444,7 +443,7 @@ public static function convert_alpha_country_code( $code ) { */ public static function alpha2_to_alpha3( $alpha2_code ) { - return isset( self::$alpha3[ $alpha2_code ] ) ? self::$alpha3[ $alpha2_code ] : ''; + return self::$alpha3[$alpha2_code] ?? ''; } @@ -458,7 +457,7 @@ public static function alpha2_to_alpha3( $alpha2_code ) { */ public static function alpha2_to_numeric( $alpha2_code ) { - return isset( self::$numeric[ $alpha2_code ] ) ? self::$numeric[ $alpha2_code ] : ''; + return self::$numeric[$alpha2_code] ?? ''; } @@ -481,7 +480,7 @@ public static function alpha2_to_calling_code( $alpha2_code ) { } else { - $calling_code = isset( self::$calling_codes[ $alpha2_code ] ) ? self::$calling_codes[ $alpha2_code ] : ''; + $calling_code = self::$calling_codes[$alpha2_code] ?? ''; // we can't really know _which_ code is to be used, so use the first $calling_code = is_array( $calling_code ) ? $calling_code[0] : $calling_code; @@ -503,7 +502,7 @@ public static function alpha3_to_alpha2( $alpha3_code ) { $countries = array_flip( self::$alpha3 ); - return isset( $countries[ $alpha3_code ] ) ? $countries[ $alpha3_code ] : ''; + return $countries[$alpha3_code] ?? ''; } @@ -545,7 +544,7 @@ public static function numeric_to_alpha2( $numeric ) { $codes = array_flip( self::$numeric ); - return isset( $codes[ $numeric ] ) ? $codes[ $numeric ] : ''; + return $codes[$numeric] ?? ''; } @@ -587,7 +586,7 @@ public static function calling_code_to_alpha2( $calling_code ) { $flipped_calling_codes = self::get_flipped_calling_codes(); - return isset( $flipped_calling_codes[ $calling_code ] ) ? $flipped_calling_codes[ $calling_code ] : ''; + return $flipped_calling_codes[$calling_code] ?? ''; } @@ -657,6 +656,3 @@ public static function get_flipped_calling_codes() { } - - -endif; diff --git a/woocommerce/Handlers/Script_Handler.php b/woocommerce/Handlers/Script_Handler.php index bcb36d2d8..66fb8525f 100644 --- a/woocommerce/Handlers/Script_Handler.php +++ b/woocommerce/Handlers/Script_Handler.php @@ -22,14 +22,14 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0\Handlers; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0\Handlers; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\SV_WC_Helper; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\SV_WC_Plugin_Exception; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\SV_WC_Helper; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\SV_WC_Plugin_Exception; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\Handlers\\Script_Handler' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\Handlers\\Script_Handler' ) ) : /** @@ -80,7 +80,7 @@ protected function add_hooks() { */ protected function get_js_handler_class_name() { - return sprintf( '%s_v5_13_0', $this->js_handler_base_class_name ); + return sprintf( '%s_v5_14_0', $this->js_handler_base_class_name ); } diff --git a/woocommerce/Helpers/ArrayHelper.php b/woocommerce/Helpers/ArrayHelper.php new file mode 100644 index 000000000..2c66658ef --- /dev/null +++ b/woocommerce/Helpers/ArrayHelper.php @@ -0,0 +1,126 @@ + 1) { + $part = array_shift($parts); + + if (isset($array[$part]) && is_array($array[$part])) { + $array = &$array[$part]; + } else { + continue 2; + } + } + + unset($array[array_shift($parts)]); + } + } + + /** + * Wraps a given item in an array if it is not an array. + * + * @param mixed $item + * @return array + */ + public static function wrap($item = null) : array + { + if (is_array($item)) { + return $item; + } + + return $item ? [$item] : []; + } + + /** + * Determines if an array key exists. + * + * @param ArrayAccess|array $array + * @param string|int $key + * @return bool + */ + public static function exists($array, $key) : bool + { + if ($array instanceof ArrayAccess) { + return $array->offsetExists($key); + } + + return array_key_exists($key, self::wrap($array)); + } +} diff --git a/woocommerce/Lifecycle.php b/woocommerce/Plugin/Lifecycle.php similarity index 97% rename from woocommerce/Lifecycle.php rename to woocommerce/Plugin/Lifecycle.php index a9bd1d654..529efd030 100644 --- a/woocommerce/Lifecycle.php +++ b/woocommerce/Plugin/Lifecycle.php @@ -22,18 +22,15 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0\Plugin; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0\Plugin; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\Admin\Notes_Helper; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\SV_WC_Payment_Gateway_Plugin; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\SV_WC_Plugin; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\SV_WC_Plugin_Compatibility; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\Admin\Notes_Helper; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\SV_WC_Payment_Gateway_Plugin; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\SV_WC_Plugin; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\SV_WC_Plugin_Compatibility; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\Plugin\\Lifecycle' ) ) : - - /** * Plugin lifecycle handler. * @@ -664,6 +661,3 @@ protected function get_plugin() { } - - -endif; diff --git a/woocommerce/Settings_API/Abstract_Settings.php b/woocommerce/Settings_API/Abstract_Settings.php index c6ed819a2..35f0666ba 100644 --- a/woocommerce/Settings_API/Abstract_Settings.php +++ b/woocommerce/Settings_API/Abstract_Settings.php @@ -22,13 +22,13 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0\Settings_API; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0\Settings_API; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0 as Framework; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0 as Framework; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\Settings_API\\Abstract_Settings' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\Settings_API\\Abstract_Settings' ) ) : /** diff --git a/woocommerce/Settings_API/Control.php b/woocommerce/Settings_API/Control.php index d85da7e59..6df903b30 100644 --- a/woocommerce/Settings_API/Control.php +++ b/woocommerce/Settings_API/Control.php @@ -22,13 +22,13 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0\Settings_API; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0\Settings_API; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0 as Framework; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0 as Framework; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\Settings_API\\Control' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\Settings_API\\Control' ) ) : /** diff --git a/woocommerce/Settings_API/Setting.php b/woocommerce/Settings_API/Setting.php index e6e317fd7..48cc66429 100644 --- a/woocommerce/Settings_API/Setting.php +++ b/woocommerce/Settings_API/Setting.php @@ -22,13 +22,13 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0\Settings_API; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0\Settings_API; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0 as Framework; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0 as Framework; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\Settings_API\\Setting' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\Settings_API\\Setting' ) ) : /** diff --git a/woocommerce/Traits/CanConvertToArrayTrait.php b/woocommerce/Traits/CanConvertToArrayTrait.php new file mode 100644 index 000000000..287064540 --- /dev/null +++ b/woocommerce/Traits/CanConvertToArrayTrait.php @@ -0,0 +1,136 @@ + + */ + public function toArray() : array + { + if ($this->bailIfInRecursiveCall) { + return []; + } + + $this->bailIfInRecursiveCall = true; + + $array = []; + + foreach ((new ReflectionClass(static::class))->getProperties() as $property) { + if ($this->toArrayShouldPropertyBeAccessible($property)) { + $property->setAccessible(true); + + $propertyValue = $property->getValue($this); + + $value = $propertyValue; + + if ($this->canConvertItemToArray($propertyValue)) { + /** @phpstan-ignore-next-line PhpStan might not understand that the check above means the object has a toArray() method */ + $value = $propertyValue->toArray(); + } elseif (ArrayHelper::accessible($value)) { + $trait = $this; + /* @phpstan-ignore-next-line */ + array_walk($value, static function (&$item) use ($trait) { + $item = $trait->canConvertItemToArray($item) ? $item->toArray() : $item; + }); + } + + $array[$property->getName()] = $value; + } + } + + $this->bailIfInRecursiveCall = false; + + return ArrayHelper::except($array, [ + 'bailIfInRecursiveCall', + 'toArrayIncludePrivate', + 'toArrayIncludeProtected', + 'toArrayIncludePublic', + ]); + } + + /** + * Determines if an item can be converted to an array. + * + * @param mixed $item + * @return bool + */ + protected function canConvertItemToArray($item) : bool + { + return is_object($item) && is_callable([$item, 'toArray']); + } + + /** + * Checks if the property is accessible for {@see toArray()} conversion. + * + * @param ReflectionProperty $property + * @return bool + */ + private function toArrayShouldPropertyBeAccessible(ReflectionProperty $property) : bool + { + // Force accessible for typed properties in PHP <8.1 to avoid an exception from isInitialized() + $property->setAccessible(true); + + if (! $property->isInitialized($this)) { + return false; + } + + if ($this->toArrayIncludePublic && $property->isPublic()) { + return true; + } + + if ($this->toArrayIncludeProtected && $property->isProtected()) { + return true; + } + + if ($this->toArrayIncludePrivate && $property->isPrivate()) { + return true; + } + + return false; + } +} diff --git a/woocommerce/Traits/CanGetNewInstanceTrait.php b/woocommerce/Traits/CanGetNewInstanceTrait.php new file mode 100644 index 000000000..2fcf21be9 --- /dev/null +++ b/woocommerce/Traits/CanGetNewInstanceTrait.php @@ -0,0 +1,48 @@ +init_blocks_handler(); - // build the setup handler instance - $this->init_setup_wizard_handler(); - // add the action & filter hooks $this->add_hooks(); } @@ -280,8 +281,6 @@ protected function init_rest_api_handler() { */ protected function init_blocks_handler() : void { - require_once( $this->get_framework_path() . '/Blocks/Blocks_Handler.php' ); - // individual plugins should initialize their block integrations handler by overriding this method $this->blocks_handler = new Blocks\Blocks_Handler( $this ); } @@ -293,10 +292,12 @@ protected function init_blocks_handler() : void { * Plugins can override and extend this method to add their own setup wizard. * * @since 5.3.0 + * + * @deprecated */ protected function init_setup_wizard_handler() { - require_once( $this->get_framework_path() . '/admin/abstract-sv-wc-plugin-admin-setup-wizard.php' ); + // np-op } @@ -444,67 +445,38 @@ public function init_admin() { * Include any critical files which must be available as early as possible, * * @since 2.0.0 + * + * @deprecated class files are loaded via composer */ private function includes() { - $framework_path = $this->get_framework_path(); - - // common exception class - require_once( $framework_path . '/class-sv-wc-plugin-exception.php' ); - - // addresses - require_once( $framework_path . '/Addresses/Address.php' ); - require_once( $framework_path . '/Addresses/Customer_Address.php' ); - - // Settings API - require_once( $framework_path . '/Settings_API/Abstract_Settings.php' ); - require_once( $framework_path . '/Settings_API/Setting.php' ); - require_once( $framework_path . '/Settings_API/Control.php' ); - - // common utility methods - require_once( $framework_path . '/class-sv-wc-helper.php' ); - require_once( $framework_path . '/Country_Helper.php' ); - require_once( $framework_path . '/admin/Notes_Helper.php' ); - - // backwards compatibility for older WC versions - require_once( $framework_path . '/class-sv-wc-plugin-compatibility.php' ); - require_once( $framework_path . '/compatibility/abstract-sv-wc-data-compatibility.php' ); - require_once( $framework_path . '/compatibility/class-sv-wc-order-compatibility.php' ); - require_once( $framework_path . '/compatibility/class-sv-wc-subscription-compatibility.php' ); - - // generic API base - require_once( $framework_path . '/api/class-sv-wc-api-exception.php' ); - require_once( $framework_path . '/api/class-sv-wc-api-base.php' ); - require_once( $framework_path . '/api/interface-sv-wc-api-request.php' ); - require_once( $framework_path . '/api/interface-sv-wc-api-response.php' ); - - // XML API base - require_once( $framework_path . '/api/abstract-sv-wc-api-xml-request.php' ); - require_once( $framework_path . '/api/abstract-sv-wc-api-xml-response.php' ); - - // JSON API base - require_once( $framework_path . '/api/abstract-sv-wc-api-json-request.php' ); - require_once( $framework_path . '/api/abstract-sv-wc-api-json-response.php' ); - - // Cacheable API - require_once( $framework_path . '/api/traits/Cacheable_Request_Trait.php' ); - require_once( $framework_path . '/api/Abstract_Cacheable_API_Base.php' ); - - // REST API Controllers - require_once( $framework_path . '/rest-api/Controllers/Settings.php' ); + $this->setupClassAliases(); + } - // Handlers - require_once( $framework_path . '/Handlers/Script_Handler.php' ); - require_once( $framework_path . '/class-sv-wc-plugin-dependencies.php' ); - require_once( $framework_path . '/class-sv-wc-hook-deprecator.php' ); - require_once( $framework_path . '/class-sv-wp-admin-message-handler.php' ); - require_once( $framework_path . '/class-sv-wc-admin-notice-handler.php' ); - require_once( $framework_path . '/Lifecycle.php' ); - require_once( $framework_path . '/rest-api/class-sv-wc-plugin-rest-api.php' ); + /** + * Setup aliases for classes that got renamed, moved, or namespace changed. + * + * @since 5.13.1 + * + * @return void + */ + protected function setupClassAliases() : void + { + $countryHelperAlias = '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\Country_Helper'; + if (! class_exists($countryHelperAlias)) { + class_alias( + Country_Helper::class, + $countryHelperAlias + ); + } - // Enums - require_once $framework_path . '/Enums/Traits/EnumTrait.php'; - require_once $framework_path . '/Enums/PaymentFormContext.php'; + $paymentFormContextCheckerAlias = '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\PaymentFormContextChecker'; + if (! class_exists($paymentFormContextCheckerAlias)) { + class_alias( + PaymentFormContextChecker::class, + $paymentFormContextCheckerAlias + ); + } } @@ -540,7 +512,7 @@ private function get_framework_deprecated_hooks() { $deprecated_hooks[ $deprecated_filter ] = [ 'removed' => true, 'replacement' => false, - 'version' => '5.8.1' + 'version' => '5.8.1', ]; } @@ -817,13 +789,22 @@ public function log( $message, $log_id = null ) { $log_id = $this->get_id(); } - if ( ! is_object( $this->logger ) ) { - $this->logger = new \WC_Logger(); - } + $this->logger()->add( $log_id, $message ); + } - $this->logger->add( $log_id, $message ); + protected function logger() : WC_Logger_Interface + { + return $this->logger ??= wc_get_logger(); } + public function assert($assertion) : void + { + try { + assert($assertion); + } catch (Throwable $exception) { + $this->logger()->debug('Assertion failed, backtrace summery: '.wp_debug_backtrace_summary()); + } + } /** * Require and instantiate a class @@ -1438,8 +1419,6 @@ public function is_plugin_active( $plugin_name ) { return $is_active; } - - } diff --git a/woocommerce/class-sv-wp-admin-message-handler.php b/woocommerce/class-sv-wp-admin-message-handler.php index 2ec29dcbc..11c8719d6 100644 --- a/woocommerce/class-sv-wp-admin-message-handler.php +++ b/woocommerce/class-sv-wp-admin-message-handler.php @@ -22,11 +22,11 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\SV_WP_Admin_Message_Handler' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\SV_WP_Admin_Message_Handler' ) ) : /** diff --git a/woocommerce/compatibility/abstract-sv-wc-data-compatibility.php b/woocommerce/compatibility/abstract-sv-wc-data-compatibility.php index 5e43bf165..46049ff84 100644 --- a/woocommerce/compatibility/abstract-sv-wc-data-compatibility.php +++ b/woocommerce/compatibility/abstract-sv-wc-data-compatibility.php @@ -22,11 +22,11 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\SV_WC_Data_Compatibility' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\SV_WC_Data_Compatibility' ) ) : /** diff --git a/woocommerce/compatibility/class-sv-wc-order-compatibility.php b/woocommerce/compatibility/class-sv-wc-order-compatibility.php index 5a89d0d87..c970fc952 100644 --- a/woocommerce/compatibility/class-sv-wc-order-compatibility.php +++ b/woocommerce/compatibility/class-sv-wc-order-compatibility.php @@ -22,7 +22,7 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0; use Automattic\WooCommerce\Admin\Overrides\Order; use Automattic\WooCommerce\Internal\Admin\Orders\PageController; @@ -32,7 +32,7 @@ defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\SV_WC_Order_Compatibility' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\SV_WC_Order_Compatibility' ) ) : /** diff --git a/woocommerce/compatibility/class-sv-wc-subscription-compatibility.php b/woocommerce/compatibility/class-sv-wc-subscription-compatibility.php index 98eb4076a..dfae0196d 100644 --- a/woocommerce/compatibility/class-sv-wc-subscription-compatibility.php +++ b/woocommerce/compatibility/class-sv-wc-subscription-compatibility.php @@ -22,11 +22,11 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\SV_WC_Subscription_Compatibility' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\SV_WC_Subscription_Compatibility' ) ) : /** * WooCommerce subscription compatibility class. diff --git a/woocommerce/payment-gateway/Blocks/Gateway_Blocks_Handler.php b/woocommerce/payment-gateway/Blocks/Gateway_Blocks_Handler.php index 7387c8e13..b9151fc11 100644 --- a/woocommerce/payment-gateway/Blocks/Gateway_Blocks_Handler.php +++ b/woocommerce/payment-gateway/Blocks/Gateway_Blocks_Handler.php @@ -1,16 +1,13 @@ plugin; - require_once( $plugin->get_payment_gateway_framework_path() . '/Blocks/Gateway_Checkout_Block_Integration.php' ); - foreach ( $plugin->get_gateways() as $gateway ) { if ( $checkout_integration = $gateway->get_checkout_block_integration_instance() ) { diff --git a/woocommerce/payment-gateway/Blocks/Gateway_Checkout_Block_Integration.php b/woocommerce/payment-gateway/Blocks/Gateway_Checkout_Block_Integration.php index 925fb22b4..9f90a2ace 100644 --- a/woocommerce/payment-gateway/Blocks/Gateway_Checkout_Block_Integration.php +++ b/woocommerce/payment-gateway/Blocks/Gateway_Checkout_Block_Integration.php @@ -22,21 +22,21 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0\Payment_Gateway\Blocks; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0\Payment_Gateway\Blocks; use Automattic\WooCommerce\Blocks\Payments\Integrations\AbstractPaymentMethodType; use Automattic\WooCommerce\StoreApi\Payments\PaymentContext; use Automattic\WooCommerce\StoreApi\Payments\PaymentResult; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\SV_WC_Payment_Gateway; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\SV_WC_Payment_Gateway_Helper; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\SV_WC_Payment_Gateway_Payment_Form; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\SV_WC_Payment_Gateway_Payment_Token; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\SV_WC_Payment_Gateway_Plugin; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\Blocks\Traits\Block_Integration_Trait; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\SV_WC_Payment_Gateway; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\SV_WC_Payment_Gateway_Helper; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\SV_WC_Payment_Gateway_Payment_Form; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\SV_WC_Payment_Gateway_Payment_Token; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\SV_WC_Payment_Gateway_Plugin; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\Blocks\Traits\Block_Integration_Trait; use WC_HTTPS; use WC_Subscriptions_Cart; -if ( ! class_exists( '\SkyVerge\WooCommerce\PluginFramework\v5_13_0\Payment_Gateway\Blocks\Gateway_Checkout_Block_Integration' ) ) : +if ( ! class_exists( '\SkyVerge\WooCommerce\PluginFramework\v5_14_0\Payment_Gateway\Blocks\Gateway_Checkout_Block_Integration' ) ) : /** * Base class for handling support for the WooCommerce Checkout block in gateways. diff --git a/woocommerce/payment-gateway/External_Checkout/Admin.php b/woocommerce/payment-gateway/External_Checkout/Admin.php index ea2f25085..8e1195794 100644 --- a/woocommerce/payment-gateway/External_Checkout/Admin.php +++ b/woocommerce/payment-gateway/External_Checkout/Admin.php @@ -22,9 +22,9 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0\Payment_Gateway\External_Checkout; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0\Payment_Gateway\External_Checkout; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\SV_WC_Helper; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\SV_WC_Helper; defined( 'ABSPATH' ) or exit; diff --git a/woocommerce/payment-gateway/External_Checkout/External_Checkout.php b/woocommerce/payment-gateway/External_Checkout/External_Checkout.php index 3e7914e5d..65fe55f2d 100644 --- a/woocommerce/payment-gateway/External_Checkout/External_Checkout.php +++ b/woocommerce/payment-gateway/External_Checkout/External_Checkout.php @@ -22,10 +22,10 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0\Payment_Gateway\External_Checkout; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0\Payment_Gateway\External_Checkout; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\SV_WC_Payment_Gateway; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\SV_WC_Payment_Gateway_Plugin; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\SV_WC_Payment_Gateway; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\SV_WC_Payment_Gateway_Plugin; defined( 'ABSPATH' ) or exit; diff --git a/woocommerce/payment-gateway/External_Checkout/Frontend.php b/woocommerce/payment-gateway/External_Checkout/Frontend.php index 7ea2dbc82..01754bdb5 100644 --- a/woocommerce/payment-gateway/External_Checkout/Frontend.php +++ b/woocommerce/payment-gateway/External_Checkout/Frontend.php @@ -23,17 +23,17 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0\Payment_Gateway\External_Checkout; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0\Payment_Gateway\External_Checkout; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\Blocks\Blocks_Handler; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\Handlers\Script_Handler; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\SV_WC_Helper; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\SV_WC_Payment_Gateway; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\SV_WC_Payment_Gateway_Plugin; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\Blocks\Blocks_Handler; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\Handlers\Script_Handler; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\SV_WC_Helper; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\SV_WC_Payment_Gateway; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\SV_WC_Payment_Gateway_Plugin; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\Payment_Gateway\\External_Checkout\\Frontend' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\Payment_Gateway\\External_Checkout\\Frontend' ) ) : /** @@ -380,7 +380,7 @@ public function enqueue_scripts() { return; } - wp_enqueue_style( 'sv-wc-external-checkout-v5_13_0', $this->get_handler()->get_plugin()->get_payment_gateway_framework_assets_url() . '/css/frontend/sv-wc-payment-gateway-external-checkout.css', array(), $this->get_handler()->get_plugin()->get_version() ); // TODO: min + wp_enqueue_style( 'sv-wc-external-checkout-v5_14_0', $this->get_handler()->get_plugin()->get_payment_gateway_framework_assets_url() . '/css/frontend/sv-wc-payment-gateway-external-checkout.css', array(), $this->get_handler()->get_plugin()->get_version() ); // TODO: min } diff --git a/woocommerce/payment-gateway/External_Checkout/Google_Pay/AJAX.php b/woocommerce/payment-gateway/External_Checkout/Google_Pay/AJAX.php index 24e5ef317..9f3353fa9 100644 --- a/woocommerce/payment-gateway/External_Checkout/Google_Pay/AJAX.php +++ b/woocommerce/payment-gateway/External_Checkout/Google_Pay/AJAX.php @@ -22,14 +22,14 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0\Payment_Gateway\External_Checkout\Google_Pay; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0\Payment_Gateway\External_Checkout\Google_Pay; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\SV_WC_Helper; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\SV_WC_Payment_Gateway_Exception; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\SV_WC_Helper; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\SV_WC_Payment_Gateway_Exception; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\Payment_Gateway\\External_Checkout\\Google_Pay\\AJAX' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\Payment_Gateway\\External_Checkout\\Google_Pay\\AJAX' ) ) : /** diff --git a/woocommerce/payment-gateway/External_Checkout/Google_Pay/Admin.php b/woocommerce/payment-gateway/External_Checkout/Google_Pay/Admin.php index a7e5412f7..25d81e1c1 100755 --- a/woocommerce/payment-gateway/External_Checkout/Google_Pay/Admin.php +++ b/woocommerce/payment-gateway/External_Checkout/Google_Pay/Admin.php @@ -22,13 +22,13 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0\Payment_Gateway\External_Checkout\Google_Pay; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0\Payment_Gateway\External_Checkout\Google_Pay; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\SV_WC_Helper; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\SV_WC_Helper; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\Payment_Gateway\\External_Checkout\\Google_Pay\\Admin' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\Payment_Gateway\\External_Checkout\\Google_Pay\\Admin' ) ) : /** @@ -37,7 +37,7 @@ * @since 5.10.0 */ #[\AllowDynamicProperties] -class Admin extends \SkyVerge\WooCommerce\PluginFramework\v5_13_0\Payment_Gateway\External_Checkout\Admin { +class Admin extends \SkyVerge\WooCommerce\PluginFramework\v5_14_0\Payment_Gateway\External_Checkout\Admin { /** @var Google_Pay the Google Pay handler instance */ diff --git a/woocommerce/payment-gateway/External_Checkout/Google_Pay/Frontend.php b/woocommerce/payment-gateway/External_Checkout/Google_Pay/Frontend.php index 05bf37632..9400fc0fb 100644 --- a/woocommerce/payment-gateway/External_Checkout/Google_Pay/Frontend.php +++ b/woocommerce/payment-gateway/External_Checkout/Google_Pay/Frontend.php @@ -22,14 +22,14 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0\Payment_Gateway\External_Checkout\Google_Pay; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0\Payment_Gateway\External_Checkout\Google_Pay; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\SV_WC_Payment_Gateway_Exception; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\SV_WC_Payment_Gateway_Plugin; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\SV_WC_Payment_Gateway_Exception; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\SV_WC_Payment_Gateway_Plugin; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\Payment_Gateway\\External_Checkout\\Google_Pay\\Frontend' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\Payment_Gateway\\External_Checkout\\Google_Pay\\Frontend' ) ) : /** @@ -38,7 +38,7 @@ * @since 5.10.0 */ #[\AllowDynamicProperties] -class Frontend extends \SkyVerge\WooCommerce\PluginFramework\v5_13_0\Payment_Gateway\External_Checkout\Frontend { +class Frontend extends \SkyVerge\WooCommerce\PluginFramework\v5_14_0\Payment_Gateway\External_Checkout\Frontend { /** @var string JS handler base class name, without the FW version */ @@ -102,7 +102,7 @@ public function enqueue_scripts() { $version = $gateway->get_plugin()->get_assets_version( $gateway->get_id() ); wp_enqueue_script( 'google-pay-js-library', 'https://pay.google.com/gp/p/js/pay.js', [], $version, true ); - wp_enqueue_script( 'sv-wc-google-pay-v5_13_0', $this->get_plugin()->get_payment_gateway_framework_assets_url() . '/dist/frontend/sv-wc-payment-gateway-google-pay.js', [ 'google-pay-js-library', 'jquery' ], $version, true ); + wp_enqueue_script( 'sv-wc-google-pay-v5_14_0', $this->get_plugin()->get_payment_gateway_framework_assets_url() . '/dist/frontend/sv-wc-payment-gateway-google-pay.js', [ 'google-pay-js-library', 'jquery' ], $version, true ); } diff --git a/woocommerce/payment-gateway/External_Checkout/Google_Pay/Google_Pay.php b/woocommerce/payment-gateway/External_Checkout/Google_Pay/Google_Pay.php index 3debc1140..388dc7e8b 100755 --- a/woocommerce/payment-gateway/External_Checkout/Google_Pay/Google_Pay.php +++ b/woocommerce/payment-gateway/External_Checkout/Google_Pay/Google_Pay.php @@ -22,17 +22,17 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0\Payment_Gateway\External_Checkout\Google_Pay; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0\Payment_Gateway\External_Checkout\Google_Pay; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\Payment_Gateway\External_Checkout\External_Checkout; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\Payment_Gateway\External_Checkout\Orders; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\SV_WC_Payment_Gateway_Exception; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\SV_WC_Payment_Gateway_Helper; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\SV_WC_Payment_Gateway_Plugin; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\Payment_Gateway\External_Checkout\External_Checkout; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\Payment_Gateway\External_Checkout\Orders; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\SV_WC_Payment_Gateway_Exception; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\SV_WC_Payment_Gateway_Helper; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\SV_WC_Payment_Gateway_Plugin; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\Payment_Gateway\\External_Checkout\\Google_Pay\\Google_Pay' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\Payment_Gateway\\External_Checkout\\Google_Pay\\Google_Pay' ) ) : /** @@ -677,7 +677,7 @@ public function get_supported_networks() { $accepted_card_types = ( $this->get_processing_gateway() ) ? $this->get_processing_gateway()->get_card_types() : []; - $accepted_card_types = array_map( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\SV_WC_Payment_Gateway_Helper::normalize_card_type', $accepted_card_types ); + $accepted_card_types = array_map( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\SV_WC_Payment_Gateway_Helper::normalize_card_type', $accepted_card_types ); $valid_networks = [ SV_WC_Payment_Gateway_Helper::CARD_TYPE_AMEX => 'AMEX', diff --git a/woocommerce/payment-gateway/External_Checkout/Orders.php b/woocommerce/payment-gateway/External_Checkout/Orders.php index 8f4c7ed1d..ef0f8adef 100644 --- a/woocommerce/payment-gateway/External_Checkout/Orders.php +++ b/woocommerce/payment-gateway/External_Checkout/Orders.php @@ -22,9 +22,9 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0\Payment_Gateway\External_Checkout; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0\Payment_Gateway\External_Checkout; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0 as Framework; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0 as Framework; defined( 'ABSPATH' ) or exit; diff --git a/woocommerce/payment-gateway/External_Checkout/apple-pay/api/class-sv-wc-payment-gateway-apple-pay-api-request.php b/woocommerce/payment-gateway/External_Checkout/apple-pay/api/class-sv-wc-payment-gateway-apple-pay-api-request.php index 5d95f0ca3..3eb4eff5c 100644 --- a/woocommerce/payment-gateway/External_Checkout/apple-pay/api/class-sv-wc-payment-gateway-apple-pay-api-request.php +++ b/woocommerce/payment-gateway/External_Checkout/apple-pay/api/class-sv-wc-payment-gateway-apple-pay-api-request.php @@ -22,11 +22,11 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\SV_WC_Payment_Gateway_Apple_Pay_API_Request' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\SV_WC_Payment_Gateway_Apple_Pay_API_Request' ) ) : /** diff --git a/woocommerce/payment-gateway/External_Checkout/apple-pay/api/class-sv-wc-payment-gateway-apple-pay-api-response.php b/woocommerce/payment-gateway/External_Checkout/apple-pay/api/class-sv-wc-payment-gateway-apple-pay-api-response.php index daf3507df..28aad6b86 100644 --- a/woocommerce/payment-gateway/External_Checkout/apple-pay/api/class-sv-wc-payment-gateway-apple-pay-api-response.php +++ b/woocommerce/payment-gateway/External_Checkout/apple-pay/api/class-sv-wc-payment-gateway-apple-pay-api-response.php @@ -22,11 +22,11 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\SV_WC_Payment_Gateway_Apple_Pay_API_Response' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\SV_WC_Payment_Gateway_Apple_Pay_API_Response' ) ) : /** diff --git a/woocommerce/payment-gateway/External_Checkout/apple-pay/api/class-sv-wc-payment-gateway-apple-pay-api.php b/woocommerce/payment-gateway/External_Checkout/apple-pay/api/class-sv-wc-payment-gateway-apple-pay-api.php index 94fe20438..3d8c0e5ff 100644 --- a/woocommerce/payment-gateway/External_Checkout/apple-pay/api/class-sv-wc-payment-gateway-apple-pay-api.php +++ b/woocommerce/payment-gateway/External_Checkout/apple-pay/api/class-sv-wc-payment-gateway-apple-pay-api.php @@ -22,11 +22,11 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\SV_WC_Payment_Gateway_Apple_Pay_API' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\SV_WC_Payment_Gateway_Apple_Pay_API' ) ) : /** @@ -58,7 +58,7 @@ public function __construct( SV_WC_Payment_Gateway $gateway ) { $this->set_request_content_type_header( 'application/json' ); $this->set_request_accept_header( 'application/json' ); - $this->set_response_handler( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\SV_WC_Payment_Gateway_Apple_Pay_API_Response' ); + $this->set_response_handler( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\SV_WC_Payment_Gateway_Apple_Pay_API_Response' ); } diff --git a/woocommerce/payment-gateway/External_Checkout/apple-pay/api/class-sv-wc-payment-gateway-apple-pay-payment-response.php b/woocommerce/payment-gateway/External_Checkout/apple-pay/api/class-sv-wc-payment-gateway-apple-pay-payment-response.php index 2b60aca7e..926e865b4 100644 --- a/woocommerce/payment-gateway/External_Checkout/apple-pay/api/class-sv-wc-payment-gateway-apple-pay-payment-response.php +++ b/woocommerce/payment-gateway/External_Checkout/apple-pay/api/class-sv-wc-payment-gateway-apple-pay-payment-response.php @@ -22,11 +22,11 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\SV_WC_Payment_Gateway_Apple_Pay_Payment_Response' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\SV_WC_Payment_Gateway_Apple_Pay_Payment_Response' ) ) : /** diff --git a/woocommerce/payment-gateway/External_Checkout/apple-pay/class-sv-wc-payment-gateway-apple-pay-admin.php b/woocommerce/payment-gateway/External_Checkout/apple-pay/class-sv-wc-payment-gateway-apple-pay-admin.php index bf002af18..4230f93b2 100755 --- a/woocommerce/payment-gateway/External_Checkout/apple-pay/class-sv-wc-payment-gateway-apple-pay-admin.php +++ b/woocommerce/payment-gateway/External_Checkout/apple-pay/class-sv-wc-payment-gateway-apple-pay-admin.php @@ -22,13 +22,13 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\Payment_Gateway\External_Checkout\Admin; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\Payment_Gateway\External_Checkout\Admin; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\SV_WC_Payment_Gateway_Apple_Pay_Admin' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\SV_WC_Payment_Gateway_Apple_Pay_Admin' ) ) : /** diff --git a/woocommerce/payment-gateway/External_Checkout/apple-pay/class-sv-wc-payment-gateway-apple-pay-ajax.php b/woocommerce/payment-gateway/External_Checkout/apple-pay/class-sv-wc-payment-gateway-apple-pay-ajax.php index 8aade165f..9629a02ac 100644 --- a/woocommerce/payment-gateway/External_Checkout/apple-pay/class-sv-wc-payment-gateway-apple-pay-ajax.php +++ b/woocommerce/payment-gateway/External_Checkout/apple-pay/class-sv-wc-payment-gateway-apple-pay-ajax.php @@ -22,11 +22,11 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\SV_WC_Payment_Gateway_Apple_Pay_AJAX' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\SV_WC_Payment_Gateway_Apple_Pay_AJAX' ) ) : /** diff --git a/woocommerce/payment-gateway/External_Checkout/apple-pay/class-sv-wc-payment-gateway-apple-pay-frontend.php b/woocommerce/payment-gateway/External_Checkout/apple-pay/class-sv-wc-payment-gateway-apple-pay-frontend.php index bb3c427e2..cd3b3873a 100644 --- a/woocommerce/payment-gateway/External_Checkout/apple-pay/class-sv-wc-payment-gateway-apple-pay-frontend.php +++ b/woocommerce/payment-gateway/External_Checkout/apple-pay/class-sv-wc-payment-gateway-apple-pay-frontend.php @@ -22,11 +22,11 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\SV_WC_Payment_Gateway_Apple_Pay_Frontend' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\SV_WC_Payment_Gateway_Apple_Pay_Frontend' ) ) : /** @@ -35,7 +35,7 @@ * @since 4.7.0 */ #[\AllowDynamicProperties] -class SV_WC_Payment_Gateway_Apple_Pay_Frontend extends \SkyVerge\WooCommerce\PluginFramework\v5_13_0\Payment_Gateway\External_Checkout\Frontend { +class SV_WC_Payment_Gateway_Apple_Pay_Frontend extends \SkyVerge\WooCommerce\PluginFramework\v5_14_0\Payment_Gateway\External_Checkout\Frontend { /** @var string JS handler base class name, without the FW version */ @@ -116,9 +116,9 @@ public function enqueue_scripts() { $gateway = $this->get_gateway(); $version = $gateway->get_plugin()->get_assets_version( $gateway->get_id() ); - wp_enqueue_style( 'sv-wc-apple-pay-v5_13_0', $this->get_plugin()->get_payment_gateway_framework_assets_url() . '/css/frontend/sv-wc-payment-gateway-apple-pay.css', [], $version ); // TODO: min + wp_enqueue_style( 'sv-wc-apple-pay-v5_14_0', $this->get_plugin()->get_payment_gateway_framework_assets_url() . '/css/frontend/sv-wc-payment-gateway-apple-pay.css', [], $version ); // TODO: min - wp_enqueue_script( 'sv-wc-apple-pay-v5_13_0', $this->get_plugin()->get_payment_gateway_framework_assets_url() . '/dist/frontend/sv-wc-payment-gateway-apple-pay.js', [ 'jquery' ], $version, true ); + wp_enqueue_script( 'sv-wc-apple-pay-v5_14_0', $this->get_plugin()->get_payment_gateway_framework_assets_url() . '/dist/frontend/sv-wc-payment-gateway-apple-pay.js', [ 'jquery' ], $version, true ); } diff --git a/woocommerce/payment-gateway/External_Checkout/apple-pay/class-sv-wc-payment-gateway-apple-pay.php b/woocommerce/payment-gateway/External_Checkout/apple-pay/class-sv-wc-payment-gateway-apple-pay.php index e609ddbf5..0241e446d 100755 --- a/woocommerce/payment-gateway/External_Checkout/apple-pay/class-sv-wc-payment-gateway-apple-pay.php +++ b/woocommerce/payment-gateway/External_Checkout/apple-pay/class-sv-wc-payment-gateway-apple-pay.php @@ -22,13 +22,13 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\Payment_Gateway\External_Checkout\Orders; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\Payment_Gateway\External_Checkout\Orders; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\SV_WC_Payment_Gateway_Apple_Pay' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\SV_WC_Payment_Gateway_Apple_Pay' ) ) : /** @@ -754,11 +754,6 @@ public function add_order_data( $order ) { public function get_api() { if ( ! $this->api instanceof SV_WC_Payment_Gateway_Apple_Pay_API ) { - - require_once( $this->get_plugin()->get_payment_gateway_framework_path() . '/External_Checkout/apple-pay/api/class-sv-wc-payment-gateway-apple-pay-api.php'); - require_once( $this->get_plugin()->get_payment_gateway_framework_path() . '/External_Checkout/apple-pay/api/class-sv-wc-payment-gateway-apple-pay-api-request.php'); - require_once( $this->get_plugin()->get_payment_gateway_framework_path() . '/External_Checkout/apple-pay/api/class-sv-wc-payment-gateway-apple-pay-api-response.php'); - $this->api = new SV_WC_Payment_Gateway_Apple_Pay_API( $this->get_processing_gateway() ); } @@ -942,7 +937,7 @@ public function get_supported_networks() { $accepted_card_types = ( $this->get_processing_gateway() ) ? $this->get_processing_gateway()->get_card_types() : array(); - $accepted_card_types = array_map( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\SV_WC_Payment_Gateway_Helper::normalize_card_type', $accepted_card_types ); + $accepted_card_types = array_map( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\SV_WC_Payment_Gateway_Helper::normalize_card_type', $accepted_card_types ); $valid_networks = array( SV_WC_Payment_Gateway_Helper::CARD_TYPE_AMEX => 'amex', diff --git a/woocommerce/payment-gateway/Handlers/Abstract_Hosted_Payment_Handler.php b/woocommerce/payment-gateway/Handlers/Abstract_Hosted_Payment_Handler.php index 4be455972..7ea6f7090 100644 --- a/woocommerce/payment-gateway/Handlers/Abstract_Hosted_Payment_Handler.php +++ b/woocommerce/payment-gateway/Handlers/Abstract_Hosted_Payment_Handler.php @@ -22,11 +22,11 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0\Payment_Gateway\Handlers; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0\Payment_Gateway\Handlers; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0 as FrameworkBase; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0 as FrameworkBase; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\Payment_Gateway\\Handlers\\Abstract_Hosted_Payment_Handler' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\Payment_Gateway\\Handlers\\Abstract_Hosted_Payment_Handler' ) ) : /** diff --git a/woocommerce/payment-gateway/Handlers/Abstract_Payment_Handler.php b/woocommerce/payment-gateway/Handlers/Abstract_Payment_Handler.php index 7daf87986..725c94ef7 100644 --- a/woocommerce/payment-gateway/Handlers/Abstract_Payment_Handler.php +++ b/woocommerce/payment-gateway/Handlers/Abstract_Payment_Handler.php @@ -22,11 +22,11 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0\Payment_Gateway\Handlers; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0\Payment_Gateway\Handlers; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0 as FrameworkBase; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0 as FrameworkBase; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\Payment_Gateway\\Handlers\\Abstract_Payment_Handler' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\Payment_Gateway\\Handlers\\Abstract_Payment_Handler' ) ) : /** diff --git a/woocommerce/payment-gateway/Handlers/Capture.php b/woocommerce/payment-gateway/Handlers/Capture.php index edb9aa765..1ae0ba535 100644 --- a/woocommerce/payment-gateway/Handlers/Capture.php +++ b/woocommerce/payment-gateway/Handlers/Capture.php @@ -22,13 +22,13 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0\Payment_Gateway\Handlers; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0\Payment_Gateway\Handlers; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0 as Framework; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0 as Framework; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\Payment_Gateway\\Handlers\\Capture' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\Payment_Gateway\\Handlers\\Capture' ) ) : /** diff --git a/woocommerce/payment-gateway/PaymentFormContextChecker.php b/woocommerce/payment-gateway/PaymentFormContextChecker.php index 78e90b8e2..672b167fd 100644 --- a/woocommerce/payment-gateway/PaymentFormContextChecker.php +++ b/woocommerce/payment-gateway/PaymentFormContextChecker.php @@ -1,8 +1,9 @@ 0&&void 0!==arguments[0]?arguments[0]:{};return this.block_ui(),this.get_payment_request(n).then(function(n){return e(t.button).show(),e(t.wrapper).show(),t.payment_request=JSON.parse(n),t.unblock_ui()},function(n){return console.error("[Apple Pay] Could not build payment request. "+n.message),e(t.button).hide(),1===e(t.container).children().length&&e(t.wrapper).hide(),t.unblock_ui()})}},{key:"get_payment_request",value:function(t){var n=this;return new Promise(function(i,o){var a;return a={action:"wc_".concat(n.gateway_id,"_apple_pay_get_payment_request")},e.extend(t,a),e.post(n.ajax_url,t,function(e){return e.success?i(e.data):o(e.data)})})}},{key:"render_errors",value:function(t){return e(".woocommerce-error, .woocommerce-message").remove(),this.ui_element.prepend('"),this.ui_element.removeClass("processing").unblock(),e("html, body").animate({scrollTop:this.ui_element.offset().top-100},1e3)}},{key:"block_ui",value:function(){return this.ui_element.block({message:null,overlayCSS:{background:"#fff",opacity:.6}})}},{key:"unblock_ui",value:function(){return this.ui_element.unblock()}}])}(),e(document.body).trigger("sv_wc_apple_pay_handler_v5_13_0_loaded")})}).call(this); +function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(t)}function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{};return this.block_ui(),this.get_payment_request(n).then(function(n){return e(t.button).show(),e(t.wrapper).show(),t.payment_request=JSON.parse(n),t.unblock_ui()},function(n){return console.error("[Apple Pay] Could not build payment request. "+n.message),e(t.button).hide(),1===e(t.container).children().length&&e(t.wrapper).hide(),t.unblock_ui()})}},{key:"get_payment_request",value:function(t){var n=this;return new Promise(function(i,o){var a;return a={action:"wc_".concat(n.gateway_id,"_apple_pay_get_payment_request")},e.extend(t,a),e.post(n.ajax_url,t,function(e){return e.success?i(e.data):o(e.data)})})}},{key:"render_errors",value:function(t){return e(".woocommerce-error, .woocommerce-message").remove(),this.ui_element.prepend('
  • '+t.join("
  • ")+"
"),this.ui_element.removeClass("processing").unblock(),e("html, body").animate({scrollTop:this.ui_element.offset().top-100},1e3)}},{key:"block_ui",value:function(){return this.ui_element.block({message:null,overlayCSS:{background:"#fff",opacity:.6}})}},{key:"unblock_ui",value:function(){return this.ui_element.unblock()}}])}(),e(document.body).trigger("sv_wc_apple_pay_handler_v5_14_0_loaded")})}).call(this); },{}]},{},["L57g"], null) -//# sourceMappingURL=../frontend/sv-wc-payment-gateway-apple-pay.js.map \ No newline at end of file +//# sourceMappingURL=../frontend/sv-wc-payment-gateway-apple-pay.js.map diff --git a/woocommerce/payment-gateway/assets/dist/frontend/sv-wc-payment-gateway-apple-pay.js.map b/woocommerce/payment-gateway/assets/dist/frontend/sv-wc-payment-gateway-apple-pay.js.map index b6c202f57..6eda3e44e 100644 --- a/woocommerce/payment-gateway/assets/dist/frontend/sv-wc-payment-gateway-apple-pay.js.map +++ b/woocommerce/payment-gateway/assets/dist/frontend/sv-wc-payment-gateway-apple-pay.js.map @@ -1 +1 @@ -{"version":3,"sources":["frontend/sv-wc-payment-gateway-apple-pay.coffee"],"names":["jQuery","$","window","SV_WC_Apple_Pay_Handler_v5_13_0","args","init_product_page","bind","init_cart_page","init_checkout_page","on_validate_merchant","validate_merchant","on_payment_method_selected","on_shipping_contact_selected","on_shipping_method_selected","on_payment_authorized","process_authorization","on_cancel_payment","reset_payment_request","get_payment_request","gateway_id","gateway_slug","merchant_id","ajax_url","validate_nonce","recalculate_totals_nonce","process_nonce","payment_request","generic_error","wrapper","container","button","ApplePaySession","canMakePaymentsWithActiveCard","then","canMakePayments","children","length","hide","is_available","ui_element","show","document","body","on","e","error","preventDefault","block_ui","session","get_new_session","onvalidatemerchant","event","onpaymentmethodselected","onshippingcontactselected","onshippingmethodselected","onpaymentauthorized","oncancel","begin","error1","fail_payment","parents","get_sdk_version","validationURL","merchant_session","JSON","parse","completeMerchantValidation","response","abort","message","url","Promise","resolve","reject","data","post","success","completePaymentMethodSelection","total","line_items","console","lineItems","shippingContact","completeShippingContactSelection","STATUS_SUCCESS","shipping_methods","STATUS_FAILURE","shippingMethod","identifier","completeShippingMethodSelection","payment","set_payment_status","complete_purchase","action","nonce","stringify","unblock_ui","location","redirect","render_errors","status","completePayment","base_data","extend","errors","remove","prepend","join","removeClass","unblock","animate","scrollTop","offset","top","block","overlayCSS","background","opacity","trigger","call"],"mappings":"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","file":"sv-wc-payment-gateway-apple-pay.js","sourceRoot":"../js","sourcesContent":["(function() {\n /*\n WooCommerce Apple Pay Handler\n Version 4.7.0\n\n Copyright (c) 2016, SkyVerge, Inc.\n Licensed under the GNU General Public License v3.0\n http://www.gnu.org/licenses/gpl-3.0.html\n */\n jQuery(function($) {\n \"use strict\";\n // The WooCommerce Apple Pay handler base class.\n\n // @since 4.7.0\n window.SV_WC_Apple_Pay_Handler_v5_13_0 = class SV_WC_Apple_Pay_Handler_v5_13_0 {\n // Constructs the handler.\n\n // @since 4.7.0\n constructor(args) {\n // Initializes the product page.\n\n // @since 5.6.0\n this.init_product_page = this.init_product_page.bind(this);\n // Initializes the cart page.\n\n // @since 5.6.0\n this.init_cart_page = this.init_cart_page.bind(this);\n // Initializes the checkout page.\n\n // @since 5.6.0\n this.init_checkout_page = this.init_checkout_page.bind(this);\n // The callback for after the merchant data is validated.\n\n // @since 4.7.0\n this.on_validate_merchant = this.on_validate_merchant.bind(this);\n // Validates the merchant data.\n\n // @since 4.7.0\n // @return object\n this.validate_merchant = this.validate_merchant.bind(this);\n // Fires after a payment method has been selected.\n\n // @since 4.7.0\n this.on_payment_method_selected = this.on_payment_method_selected.bind(this);\n // Fires after a shipping contact has been selected.\n\n // @since 4.7.0\n this.on_shipping_contact_selected = this.on_shipping_contact_selected.bind(this);\n // Fires after a shipping method has been selected.\n\n // @since 4.7.0\n this.on_shipping_method_selected = this.on_shipping_method_selected.bind(this);\n // The callback for after the payment data is authorized.\n\n // @since 4.7.0\n this.on_payment_authorized = this.on_payment_authorized.bind(this);\n // Processes the transaction data.\n\n // @since 4.7.0\n this.process_authorization = this.process_authorization.bind(this);\n // The callback for when the payment card is cancelled/dismissed.\n\n // @since 4.7.0\n this.on_cancel_payment = this.on_cancel_payment.bind(this);\n // Resets the payment request via AJAX.\n\n // Extending handlers can call this on change events to refresh the data.\n\n // @since 4.7.0\n this.reset_payment_request = this.reset_payment_request.bind(this);\n // Gets the payment request via AJAX.\n\n // @since 4.7.0\n this.get_payment_request = this.get_payment_request.bind(this);\n this.gateway_id = args.gateway_id;\n this.gateway_slug = args.gateway_slug;\n this.merchant_id = args.merchant_id;\n this.ajax_url = args.ajax_url;\n this.validate_nonce = args.validate_nonce;\n this.recalculate_totals_nonce = args.recalculate_totals_nonce;\n this.process_nonce = args.process_nonce;\n this.payment_request = args.payment_request;\n this.generic_error = args.generic_error;\n this.wrapper = '.sv-wc-external-checkout';\n this.container = '.buttons-container';\n this.button = '.sv-wc-apple-pay-button';\n }\n\n // Determines if Apple Pay is available.\n\n // @since 4.7.0\n // @return bool\n is_available() {\n if (!window.ApplePaySession) {\n return false;\n }\n return ApplePaySession.canMakePaymentsWithActiveCard(this.merchant_id).then((canMakePayments) => {\n return canMakePayments;\n });\n }\n\n // Initializes the handler.\n\n // @since 4.7.0\n init() {\n // hide the wrapper if Apple Pay is the only button\n if ($(this.container).children().length === 1) {\n $(this.wrapper).hide();\n }\n if (!this.is_available()) {\n return;\n }\n // initialize for the various pages\n if ($('form.cart').length) {\n this.init_product_page();\n } else if ($('form.woocommerce-cart-form').length) {\n this.init_cart_page();\n } else if ($('form.woocommerce-checkout').length) {\n this.init_checkout_page();\n }\n // bail if no UI was initialized\n if (!this.ui_element) {\n return;\n }\n if (this.payment_request) {\n $(this.button).show();\n $(this.wrapper).show();\n }\n return $(document.body).on('click', '.sv-wc-apple-pay-button', (e) => {\n var error;\n e.preventDefault();\n this.block_ui();\n try {\n this.session = this.get_new_session(this.payment_request);\n // set the payment card events\n this.session.onvalidatemerchant = (event) => {\n return this.on_validate_merchant(event);\n };\n this.session.onpaymentmethodselected = (event) => {\n return this.on_payment_method_selected(event);\n };\n this.session.onshippingcontactselected = (event) => {\n return this.on_shipping_contact_selected(event);\n };\n this.session.onshippingmethodselected = (event) => {\n return this.on_shipping_method_selected(event);\n };\n this.session.onpaymentauthorized = (event) => {\n return this.on_payment_authorized(event);\n };\n this.session.oncancel = (event) => {\n return this.on_cancel_payment(event);\n };\n return this.session.begin();\n } catch (error1) {\n error = error1;\n return this.fail_payment(error);\n }\n });\n }\n\n init_product_page() {\n return this.ui_element = $('form.cart');\n }\n\n init_cart_page() {\n this.ui_element = $('form.woocommerce-cart-form').parents('div.woocommerce');\n // re-init if the cart totals are updated\n return $(document.body).on('updated_cart_totals', () => {\n return this.reset_payment_request();\n });\n }\n\n init_checkout_page() {\n this.ui_element = $('form.woocommerce-checkout');\n return $(document.body).on('updated_checkout', () => {\n // re-init if the checkout is updated\n return this.reset_payment_request();\n });\n }\n\n // Gets a new Apple Pay session.\n\n // @since 5.6.0\n\n // @param [Object] payment_request payment request object\n // @return ApplePaySession\n get_new_session(payment_request) {\n return new ApplePaySession(this.get_sdk_version(), payment_request);\n }\n\n // Gets the Apple SDK version to use.\n\n // @since 5.6.0\n // @return int\n get_sdk_version() {\n return 2;\n }\n\n on_validate_merchant(event) {\n return this.validate_merchant(event.validationURL).then((merchant_session) => {\n merchant_session = JSON.parse(merchant_session);\n return this.session.completeMerchantValidation(merchant_session);\n }, (response) => {\n this.session.abort();\n return this.fail_payment('Merchant could no be validated. ' + response.message);\n });\n }\n\n validate_merchant(url) {\n return new Promise((resolve, reject) => {\n var data;\n data = {\n 'action': `wc_${this.gateway_id}_apple_pay_validate_merchant`,\n 'nonce': this.validate_nonce,\n 'merchant_id': this.merchant_id,\n 'url': url\n };\n // retrieve a payment request object\n return $.post(this.ajax_url, data, (response) => {\n if (response.success) {\n return resolve(response.data);\n } else {\n return reject(response.data);\n }\n });\n });\n }\n\n on_payment_method_selected(event) {\n return new Promise((resolve, reject) => {\n var data;\n data = {\n 'action': `wc_${this.gateway_id}_apple_pay_recalculate_totals`,\n 'nonce': this.recalculate_totals_nonce\n };\n // retrieve a payment request object\n return $.post(this.ajax_url, data, (response) => {\n if (response.success) {\n data = response.data;\n return resolve(this.session.completePaymentMethodSelection(data.total, data.line_items));\n } else {\n console.error('[Apple Pay] Error selecting a shipping contact. ' + response.data.message);\n return reject(this.session.completePaymentMethodSelection(this.payment_request.total, this.payment_request.lineItems));\n }\n });\n });\n }\n\n on_shipping_contact_selected(event) {\n return new Promise((resolve, reject) => {\n var data;\n data = {\n 'action': `wc_${this.gateway_id}_apple_pay_recalculate_totals`,\n 'nonce': this.recalculate_totals_nonce,\n 'contact': event.shippingContact\n };\n // retrieve a payment request object\n return $.post(this.ajax_url, data, (response) => {\n if (response.success) {\n data = response.data;\n return resolve(this.session.completeShippingContactSelection(ApplePaySession.STATUS_SUCCESS, data.shipping_methods, data.total, data.line_items));\n } else {\n console.error('[Apple Pay] Error selecting a shipping contact. ' + response.data.message);\n return reject(this.session.completeShippingContactSelection(ApplePaySession.STATUS_FAILURE, [], this.payment_request.total, this.payment_request.lineItems));\n }\n });\n });\n }\n\n on_shipping_method_selected(event) {\n return new Promise((resolve, reject) => {\n var data;\n data = {\n 'action': `wc_${this.gateway_id}_apple_pay_recalculate_totals`,\n 'nonce': this.recalculate_totals_nonce,\n 'method': event.shippingMethod.identifier\n };\n // retrieve a payment request object\n return $.post(this.ajax_url, data, (response) => {\n if (response.success) {\n data = response.data;\n return resolve(this.session.completeShippingMethodSelection(ApplePaySession.STATUS_SUCCESS, data.total, data.line_items));\n } else {\n console.error('[Apple Pay] Error selecting a shipping method. ' + response.data.message);\n return reject(this.session.completeShippingMethodSelection(ApplePaySession.STATUS_FAILURE, this.payment_request.total, this.payment_request.lineItems));\n }\n });\n });\n }\n\n on_payment_authorized(event) {\n return this.process_authorization(event.payment).then((response) => {\n this.set_payment_status(true);\n return this.complete_purchase(response);\n }, (response) => {\n this.set_payment_status(false);\n return this.fail_payment('Payment could no be processed. ' + response.message);\n });\n }\n\n process_authorization(payment) {\n return new Promise((resolve, reject) => {\n var data;\n data = {\n action: `wc_${this.gateway_id}_apple_pay_process_payment`,\n nonce: this.process_nonce,\n payment: JSON.stringify(payment)\n };\n return $.post(this.ajax_url, data, (response) => {\n if (response.success) {\n return resolve(response.data);\n } else {\n return reject(response.data);\n }\n });\n });\n }\n\n on_cancel_payment(event) {\n return this.unblock_ui();\n }\n\n // Completes the purchase based on the gateway result.\n\n // @since 4.7.0\n complete_purchase(response) {\n return window.location = response.redirect;\n }\n\n // Fails the purchase based on the gateway result.\n\n // @since 4.7.0\n fail_payment(error) {\n console.error('[Apple Pay] ' + error);\n this.unblock_ui();\n return this.render_errors([this.generic_error]);\n }\n\n // Sets the Apple Pay payment status depending on the gateway result.\n\n // @since 4.7.0\n set_payment_status(success) {\n var status;\n if (success) {\n status = ApplePaySession.STATUS_SUCCESS;\n } else {\n status = ApplePaySession.STATUS_FAILURE;\n }\n return this.session.completePayment(status);\n }\n\n reset_payment_request(data = {}) {\n this.block_ui();\n return this.get_payment_request(data).then((response) => {\n $(this.button).show();\n $(this.wrapper).show();\n this.payment_request = JSON.parse(response);\n return this.unblock_ui();\n }, (response) => {\n console.error('[Apple Pay] Could not build payment request. ' + response.message);\n $(this.button).hide();\n // hide the wrapper if Apple Pay is the only button\n if ($(this.container).children().length === 1) {\n $(this.wrapper).hide();\n }\n return this.unblock_ui();\n });\n }\n\n get_payment_request(data) {\n return new Promise((resolve, reject) => {\n var base_data;\n base_data = {\n 'action': `wc_${this.gateway_id}_apple_pay_get_payment_request`\n };\n $.extend(data, base_data);\n // retrieve a payment request object\n return $.post(this.ajax_url, data, (response) => {\n if (response.success) {\n return resolve(response.data);\n } else {\n return reject(response.data);\n }\n });\n });\n }\n\n // Renders any new errors and bring them into the viewport.\n\n // @since 4.7.0\n render_errors(errors) {\n // hide and remove any previous errors\n $('.woocommerce-error, .woocommerce-message').remove();\n // add errors\n this.ui_element.prepend('
  • ' + errors.join('
  • ') + '
');\n // unblock UI\n this.ui_element.removeClass('processing').unblock();\n // scroll to top\n return $('html, body').animate({\n scrollTop: this.ui_element.offset().top - 100\n }, 1000);\n }\n\n // Blocks the payment form UI.\n\n // @since 4.7.0\n block_ui() {\n return this.ui_element.block({\n message: null,\n overlayCSS: {\n background: '#fff',\n opacity: 0.6\n }\n });\n }\n\n // Unblocks the payment form UI.\n\n // @since 4.7.0\n unblock_ui() {\n return this.ui_element.unblock();\n }\n\n };\n // dispatch loaded event\n return $(document.body).trigger('sv_wc_apple_pay_handler_v5_13_0_loaded');\n });\n\n}).call(this);\n"]} \ No newline at end of file +{"version":3,"sources":["frontend/sv-wc-payment-gateway-apple-pay.coffee"],"names":["jQuery","$","window","SV_WC_Apple_Pay_Handler_v5_14_0","args","init_product_page","bind","init_cart_page","init_checkout_page","on_validate_merchant","validate_merchant","on_payment_method_selected","on_shipping_contact_selected","on_shipping_method_selected","on_payment_authorized","process_authorization","on_cancel_payment","reset_payment_request","get_payment_request","gateway_id","gateway_slug","merchant_id","ajax_url","validate_nonce","recalculate_totals_nonce","process_nonce","payment_request","generic_error","wrapper","container","button","ApplePaySession","canMakePaymentsWithActiveCard","then","canMakePayments","children","length","hide","is_available","ui_element","show","document","body","on","e","error","preventDefault","block_ui","session","get_new_session","onvalidatemerchant","event","onpaymentmethodselected","onshippingcontactselected","onshippingmethodselected","onpaymentauthorized","oncancel","begin","error1","fail_payment","parents","get_sdk_version","validationURL","merchant_session","JSON","parse","completeMerchantValidation","response","abort","message","url","Promise","resolve","reject","data","post","success","completePaymentMethodSelection","total","line_items","console","lineItems","shippingContact","completeShippingContactSelection","STATUS_SUCCESS","shipping_methods","STATUS_FAILURE","shippingMethod","identifier","completeShippingMethodSelection","payment","set_payment_status","complete_purchase","action","nonce","stringify","unblock_ui","location","redirect","render_errors","status","completePayment","base_data","extend","errors","remove","prepend","join","removeClass","unblock","animate","scrollTop","offset","top","block","overlayCSS","background","opacity","trigger","call"],"mappings":"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","file":"sv-wc-payment-gateway-apple-pay.js","sourceRoot":"../js","sourcesContent":["(function() {\n /*\n WooCommerce Apple Pay Handler\n Version 4.7.0\n\n Copyright (c) 2016, SkyVerge, Inc.\n Licensed under the GNU General Public License v3.0\n http://www.gnu.org/licenses/gpl-3.0.html\n */\n jQuery(function($) {\n \"use strict\";\n // The WooCommerce Apple Pay handler base class.\n\n // @since 4.7.0\n window.SV_WC_Apple_Pay_Handler_v5_14_0 = class SV_WC_Apple_Pay_Handler_v5_14_0 {\n // Constructs the handler.\n\n // @since 4.7.0\n constructor(args) {\n // Initializes the product page.\n\n // @since 5.6.0\n this.init_product_page = this.init_product_page.bind(this);\n // Initializes the cart page.\n\n // @since 5.6.0\n this.init_cart_page = this.init_cart_page.bind(this);\n // Initializes the checkout page.\n\n // @since 5.6.0\n this.init_checkout_page = this.init_checkout_page.bind(this);\n // The callback for after the merchant data is validated.\n\n // @since 4.7.0\n this.on_validate_merchant = this.on_validate_merchant.bind(this);\n // Validates the merchant data.\n\n // @since 4.7.0\n // @return object\n this.validate_merchant = this.validate_merchant.bind(this);\n // Fires after a payment method has been selected.\n\n // @since 4.7.0\n this.on_payment_method_selected = this.on_payment_method_selected.bind(this);\n // Fires after a shipping contact has been selected.\n\n // @since 4.7.0\n this.on_shipping_contact_selected = this.on_shipping_contact_selected.bind(this);\n // Fires after a shipping method has been selected.\n\n // @since 4.7.0\n this.on_shipping_method_selected = this.on_shipping_method_selected.bind(this);\n // The callback for after the payment data is authorized.\n\n // @since 4.7.0\n this.on_payment_authorized = this.on_payment_authorized.bind(this);\n // Processes the transaction data.\n\n // @since 4.7.0\n this.process_authorization = this.process_authorization.bind(this);\n // The callback for when the payment card is cancelled/dismissed.\n\n // @since 4.7.0\n this.on_cancel_payment = this.on_cancel_payment.bind(this);\n // Resets the payment request via AJAX.\n\n // Extending handlers can call this on change events to refresh the data.\n\n // @since 4.7.0\n this.reset_payment_request = this.reset_payment_request.bind(this);\n // Gets the payment request via AJAX.\n\n // @since 4.7.0\n this.get_payment_request = this.get_payment_request.bind(this);\n this.gateway_id = args.gateway_id;\n this.gateway_slug = args.gateway_slug;\n this.merchant_id = args.merchant_id;\n this.ajax_url = args.ajax_url;\n this.validate_nonce = args.validate_nonce;\n this.recalculate_totals_nonce = args.recalculate_totals_nonce;\n this.process_nonce = args.process_nonce;\n this.payment_request = args.payment_request;\n this.generic_error = args.generic_error;\n this.wrapper = '.sv-wc-external-checkout';\n this.container = '.buttons-container';\n this.button = '.sv-wc-apple-pay-button';\n }\n\n // Determines if Apple Pay is available.\n\n // @since 4.7.0\n // @return bool\n is_available() {\n if (!window.ApplePaySession) {\n return false;\n }\n return ApplePaySession.canMakePaymentsWithActiveCard(this.merchant_id).then((canMakePayments) => {\n return canMakePayments;\n });\n }\n\n // Initializes the handler.\n\n // @since 4.7.0\n init() {\n // hide the wrapper if Apple Pay is the only button\n if ($(this.container).children().length === 1) {\n $(this.wrapper).hide();\n }\n if (!this.is_available()) {\n return;\n }\n // initialize for the various pages\n if ($('form.cart').length) {\n this.init_product_page();\n } else if ($('form.woocommerce-cart-form').length) {\n this.init_cart_page();\n } else if ($('form.woocommerce-checkout').length) {\n this.init_checkout_page();\n }\n // bail if no UI was initialized\n if (!this.ui_element) {\n return;\n }\n if (this.payment_request) {\n $(this.button).show();\n $(this.wrapper).show();\n }\n return $(document.body).on('click', '.sv-wc-apple-pay-button', (e) => {\n var error;\n e.preventDefault();\n this.block_ui();\n try {\n this.session = this.get_new_session(this.payment_request);\n // set the payment card events\n this.session.onvalidatemerchant = (event) => {\n return this.on_validate_merchant(event);\n };\n this.session.onpaymentmethodselected = (event) => {\n return this.on_payment_method_selected(event);\n };\n this.session.onshippingcontactselected = (event) => {\n return this.on_shipping_contact_selected(event);\n };\n this.session.onshippingmethodselected = (event) => {\n return this.on_shipping_method_selected(event);\n };\n this.session.onpaymentauthorized = (event) => {\n return this.on_payment_authorized(event);\n };\n this.session.oncancel = (event) => {\n return this.on_cancel_payment(event);\n };\n return this.session.begin();\n } catch (error1) {\n error = error1;\n return this.fail_payment(error);\n }\n });\n }\n\n init_product_page() {\n return this.ui_element = $('form.cart');\n }\n\n init_cart_page() {\n this.ui_element = $('form.woocommerce-cart-form').parents('div.woocommerce');\n // re-init if the cart totals are updated\n return $(document.body).on('updated_cart_totals', () => {\n return this.reset_payment_request();\n });\n }\n\n init_checkout_page() {\n this.ui_element = $('form.woocommerce-checkout');\n return $(document.body).on('updated_checkout', () => {\n // re-init if the checkout is updated\n return this.reset_payment_request();\n });\n }\n\n // Gets a new Apple Pay session.\n\n // @since 5.6.0\n\n // @param [Object] payment_request payment request object\n // @return ApplePaySession\n get_new_session(payment_request) {\n return new ApplePaySession(this.get_sdk_version(), payment_request);\n }\n\n // Gets the Apple SDK version to use.\n\n // @since 5.6.0\n // @return int\n get_sdk_version() {\n return 2;\n }\n\n on_validate_merchant(event) {\n return this.validate_merchant(event.validationURL).then((merchant_session) => {\n merchant_session = JSON.parse(merchant_session);\n return this.session.completeMerchantValidation(merchant_session);\n }, (response) => {\n this.session.abort();\n return this.fail_payment('Merchant could no be validated. ' + response.message);\n });\n }\n\n validate_merchant(url) {\n return new Promise((resolve, reject) => {\n var data;\n data = {\n 'action': `wc_${this.gateway_id}_apple_pay_validate_merchant`,\n 'nonce': this.validate_nonce,\n 'merchant_id': this.merchant_id,\n 'url': url\n };\n // retrieve a payment request object\n return $.post(this.ajax_url, data, (response) => {\n if (response.success) {\n return resolve(response.data);\n } else {\n return reject(response.data);\n }\n });\n });\n }\n\n on_payment_method_selected(event) {\n return new Promise((resolve, reject) => {\n var data;\n data = {\n 'action': `wc_${this.gateway_id}_apple_pay_recalculate_totals`,\n 'nonce': this.recalculate_totals_nonce\n };\n // retrieve a payment request object\n return $.post(this.ajax_url, data, (response) => {\n if (response.success) {\n data = response.data;\n return resolve(this.session.completePaymentMethodSelection(data.total, data.line_items));\n } else {\n console.error('[Apple Pay] Error selecting a shipping contact. ' + response.data.message);\n return reject(this.session.completePaymentMethodSelection(this.payment_request.total, this.payment_request.lineItems));\n }\n });\n });\n }\n\n on_shipping_contact_selected(event) {\n return new Promise((resolve, reject) => {\n var data;\n data = {\n 'action': `wc_${this.gateway_id}_apple_pay_recalculate_totals`,\n 'nonce': this.recalculate_totals_nonce,\n 'contact': event.shippingContact\n };\n // retrieve a payment request object\n return $.post(this.ajax_url, data, (response) => {\n if (response.success) {\n data = response.data;\n return resolve(this.session.completeShippingContactSelection(ApplePaySession.STATUS_SUCCESS, data.shipping_methods, data.total, data.line_items));\n } else {\n console.error('[Apple Pay] Error selecting a shipping contact. ' + response.data.message);\n return reject(this.session.completeShippingContactSelection(ApplePaySession.STATUS_FAILURE, [], this.payment_request.total, this.payment_request.lineItems));\n }\n });\n });\n }\n\n on_shipping_method_selected(event) {\n return new Promise((resolve, reject) => {\n var data;\n data = {\n 'action': `wc_${this.gateway_id}_apple_pay_recalculate_totals`,\n 'nonce': this.recalculate_totals_nonce,\n 'method': event.shippingMethod.identifier\n };\n // retrieve a payment request object\n return $.post(this.ajax_url, data, (response) => {\n if (response.success) {\n data = response.data;\n return resolve(this.session.completeShippingMethodSelection(ApplePaySession.STATUS_SUCCESS, data.total, data.line_items));\n } else {\n console.error('[Apple Pay] Error selecting a shipping method. ' + response.data.message);\n return reject(this.session.completeShippingMethodSelection(ApplePaySession.STATUS_FAILURE, this.payment_request.total, this.payment_request.lineItems));\n }\n });\n });\n }\n\n on_payment_authorized(event) {\n return this.process_authorization(event.payment).then((response) => {\n this.set_payment_status(true);\n return this.complete_purchase(response);\n }, (response) => {\n this.set_payment_status(false);\n return this.fail_payment('Payment could no be processed. ' + response.message);\n });\n }\n\n process_authorization(payment) {\n return new Promise((resolve, reject) => {\n var data;\n data = {\n action: `wc_${this.gateway_id}_apple_pay_process_payment`,\n nonce: this.process_nonce,\n payment: JSON.stringify(payment)\n };\n return $.post(this.ajax_url, data, (response) => {\n if (response.success) {\n return resolve(response.data);\n } else {\n return reject(response.data);\n }\n });\n });\n }\n\n on_cancel_payment(event) {\n return this.unblock_ui();\n }\n\n // Completes the purchase based on the gateway result.\n\n // @since 4.7.0\n complete_purchase(response) {\n return window.location = response.redirect;\n }\n\n // Fails the purchase based on the gateway result.\n\n // @since 4.7.0\n fail_payment(error) {\n console.error('[Apple Pay] ' + error);\n this.unblock_ui();\n return this.render_errors([this.generic_error]);\n }\n\n // Sets the Apple Pay payment status depending on the gateway result.\n\n // @since 4.7.0\n set_payment_status(success) {\n var status;\n if (success) {\n status = ApplePaySession.STATUS_SUCCESS;\n } else {\n status = ApplePaySession.STATUS_FAILURE;\n }\n return this.session.completePayment(status);\n }\n\n reset_payment_request(data = {}) {\n this.block_ui();\n return this.get_payment_request(data).then((response) => {\n $(this.button).show();\n $(this.wrapper).show();\n this.payment_request = JSON.parse(response);\n return this.unblock_ui();\n }, (response) => {\n console.error('[Apple Pay] Could not build payment request. ' + response.message);\n $(this.button).hide();\n // hide the wrapper if Apple Pay is the only button\n if ($(this.container).children().length === 1) {\n $(this.wrapper).hide();\n }\n return this.unblock_ui();\n });\n }\n\n get_payment_request(data) {\n return new Promise((resolve, reject) => {\n var base_data;\n base_data = {\n 'action': `wc_${this.gateway_id}_apple_pay_get_payment_request`\n };\n $.extend(data, base_data);\n // retrieve a payment request object\n return $.post(this.ajax_url, data, (response) => {\n if (response.success) {\n return resolve(response.data);\n } else {\n return reject(response.data);\n }\n });\n });\n }\n\n // Renders any new errors and bring them into the viewport.\n\n // @since 4.7.0\n render_errors(errors) {\n // hide and remove any previous errors\n $('.woocommerce-error, .woocommerce-message').remove();\n // add errors\n this.ui_element.prepend('
  • ' + errors.join('
  • ') + '
');\n // unblock UI\n this.ui_element.removeClass('processing').unblock();\n // scroll to top\n return $('html, body').animate({\n scrollTop: this.ui_element.offset().top - 100\n }, 1000);\n }\n\n // Blocks the payment form UI.\n\n // @since 4.7.0\n block_ui() {\n return this.ui_element.block({\n message: null,\n overlayCSS: {\n background: '#fff',\n opacity: 0.6\n }\n });\n }\n\n // Unblocks the payment form UI.\n\n // @since 4.7.0\n unblock_ui() {\n return this.ui_element.unblock();\n }\n\n };\n // dispatch loaded event\n return $(document.body).trigger('sv_wc_apple_pay_handler_v5_14_0_loaded');\n });\n\n}).call(this);\n"]} diff --git a/woocommerce/payment-gateway/assets/dist/frontend/sv-wc-payment-gateway-google-pay.js b/woocommerce/payment-gateway/assets/dist/frontend/sv-wc-payment-gateway-google-pay.js index 4153b26ee..fe2d1bb11 100644 --- a/woocommerce/payment-gateway/assets/dist/frontend/sv-wc-payment-gateway-google-pay.js +++ b/woocommerce/payment-gateway/assets/dist/frontend/sv-wc-payment-gateway-google-pay.js @@ -1,4 +1,4 @@ parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcelRequire,u="function"==typeof require&&require;function f(t,n){if(!r[t]){if(!e[t]){var i="function"==typeof parcelRequire&&parcelRequire;if(!n&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=new Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[t][1][r]||r},p.cache={};var l=r[t]=new f.Module(t);e[t][0].call(l.exports,p,l,l.exports,this)}return r[t].exports;function p(e){return f(p.resolve(e))}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=r,f.parent=o,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]};for(var c=0;c
  • '+t.join("
  • ")+"
  • "),this.uiElement.removeClass("processing").unblock(),e("html, body").animate({scrollTop:this.uiElement.offset().top-100},1e3)}},{key:"blockUI",value:function(){this.uiElement.block({message:null,overlayCSS:{background:"#fff",opacity:.6}})}},{key:"unblockUI",value:function(){this.uiElement.unblock()}}])}(),e(document.body).trigger("sv_wc_google_pay_handler_v5_13_0_loaded")}); +function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(t)}function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){for(var n=0;n
  • '+t.join("
  • ")+"
  • "),this.uiElement.removeClass("processing").unblock(),e("html, body").animate({scrollTop:this.uiElement.offset().top-100},1e3)}},{key:"blockUI",value:function(){this.uiElement.block({message:null,overlayCSS:{background:"#fff",opacity:.6}})}},{key:"unblockUI",value:function(){this.uiElement.unblock()}}])}(),e(document.body).trigger("sv_wc_google_pay_handler_v5_14_0_loaded")}); },{}]},{},["O8A1"], null) -//# sourceMappingURL=../frontend/sv-wc-payment-gateway-google-pay.js.map \ No newline at end of file +//# sourceMappingURL=../frontend/sv-wc-payment-gateway-google-pay.js.map diff --git a/woocommerce/payment-gateway/assets/dist/frontend/sv-wc-payment-gateway-google-pay.js.map b/woocommerce/payment-gateway/assets/dist/frontend/sv-wc-payment-gateway-google-pay.js.map index 3f89b454f..d48c063f7 100644 --- a/woocommerce/payment-gateway/assets/dist/frontend/sv-wc-payment-gateway-google-pay.js.map +++ b/woocommerce/payment-gateway/assets/dist/frontend/sv-wc-payment-gateway-google-pay.js.map @@ -1 +1 @@ -{"version":3,"sources":["frontend/sv-wc-payment-gateway-google-pay.js"],"names":["jQuery","$","window","SV_WC_Google_Pay_Handler_v5_13_0","params","plugin_id","merchant_id","merchant_name","gateway_id","environment","gateway_id_dasherized","ajax_url","recalculate_totals_nonce","process_nonce","button_style","card_types","available_countries","currency_code","needs_shipping","generic_error","gatewayID","merchantID","merchantName","ajaxURL","recalculateTotalsNonce","processNonce","buttonStyle","availableCountries","currencyCode","needsShipping","genericError","product_id","productID","allowedCardNetworks","baseRequest","apiVersion","apiVersionMinor","allowedCardAuthMethods","tokenizationSpecification","type","parameters","baseCardPaymentMethod","allowedAuthMethods","billingAddressRequired","billingAddressParameters","format","phoneNumberRequired","cardPaymentMethod","Object","assign","paymentsClient","allowedPaymentMethods","resolve","getGoogleTransactionInfo","transactionInfo","paymentDataRequest","merchantInfo","merchantId","emailRequired","callbackIntents","shippingAddressRequired","shippingAddressParameters","getGoogleShippingAddressParameters","shippingOptionRequired","args","paymentDataCallbacks","onPaymentAuthorized","paymentData","onPaymentDataChanged","google","payments","api","PaymentsClient","blockUI","Promise","reject","processPayment","err","transactionState","error","intent","message","reason","unblockUI","intermediatePaymentData","shippingAddress","shippingOptionData","chosenShippingMethod","callbackTrigger","id","getUpdatedTotals","paymentDataRequestUpdate","newShippingOptionParameters","shippingOptions","length","getGoogleUnserviceableAddressError","failPayment","data","action","post","response","success","JSON","parse","shippingMethod","allowedCountryCodes","button","getGooglePaymentsClient","createButton","onClick","event","onGooglePaymentButtonClicked","buttonColor","buttonSizeMode","document","getElementById","appendChild","getGooglePaymentDataRequest","totalPriceStatus","prefetchPaymentData","nonce","stringify","location","redirect","preventDefault","loadPaymentData","initProductPage","initCartPage","initCheckoutPage","initGooglePay","isReadyToPay","getGoogleIsReadyToPayRequest","then","result","addGooglePayButton","prefetchGooglePaymentData","catch","uiElement","parents","body","on","console","renderErrors","errors","remove","prepend","join","removeClass","unblock","animate","scrollTop","offset","top","block","overlayCSS","background","opacity","trigger"],"mappings":"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","file":"sv-wc-payment-gateway-google-pay.js","sourceRoot":"../js","sourcesContent":["jQuery( function( $ ) {\n\n\t\"use strict\"\n\n\t/**\n\t * Google Pay handler.\n\t *\n\t * @since 5.10.0\n\t *\n\t * @type {SV_WC_Google_Pay_Handler_v5_13_0} object\n\t */\n\twindow.SV_WC_Google_Pay_Handler_v5_13_0 = class SV_WC_Google_Pay_Handler_v5_13_0 {\n\n\t\t/**\n\t\t * Handler constructor.\n\t\t *\n\t\t * @since 5.10.0\n\t\t *\n\t\t * @param {Object} params The plugin ID\n\t\t * @param {string} params.plugin_id The plugin ID\n\t\t * @param {string} params.merchant_id The merchant ID\n\t\t * @param {string} params.merchant_name The site name\n\t\t * @param {string} params.gateway_id The gateway ID\n\t\t * @param {string} params.gateway_id_dasherized The gateway ID dasherized\n\t\t * @param {string} params.environment The gateway environment (PRODUCTION or TEST)\n\t\t * @param {string} params.ajax_url The AJAX URL\n\t\t * @param {string} params.recalculate_totals_nonce Nonce for the recalculate_totals AJAX action\n\t\t * @param {string} params.process_nonce Nonce for the process AJAX action\n\t\t * @param {string} params.button_style The button style\n\t\t * @param {string[]} params.card_types The supported card types\n\t\t * @param {string[]} params.available_countries Array of two-letter country codes the gateway is available for\n\t\t * @param {string[]} params.currency_code WC configured currency\n\t\t * @param {boolean} params.needs_shipping Whether or not the cart or product needs shipping\n\t\t * @param {string} params.generic_error The generic error message\n\t\t * @param {string} params.product_id The product ID if we are on a Product page\n\t\t */\n\t\tconstructor( params ) {\n\n\t\t\tlet {\n\t\t\t\tplugin_id,\n\t\t\t\tmerchant_id,\n\t\t\t\tmerchant_name,\n\t\t\t\tgateway_id,\n\t\t\t\tgateway_id_dasherized,\n\t\t\t\tenvironment,\n\t\t\t\tajax_url,\n\t\t\t\trecalculate_totals_nonce,\n\t\t\t\tprocess_nonce,\n\t\t\t\tbutton_style,\n\t\t\t\tcard_types,\n\t\t\t\tavailable_countries,\n\t\t\t\tcurrency_code,\n\t\t\t\tneeds_shipping,\n\t\t\t\tgeneric_error\n\t\t\t} = params;\n\n\t\t\tthis.gatewayID = gateway_id;\n\t\t\tthis.merchantID = merchant_id;\n\t\t\tthis.merchantName = merchant_name;\n\t\t\tthis.environment = environment;\n\t\t\tthis.ajaxURL = ajax_url;\n\t\t\tthis.recalculateTotalsNonce = recalculate_totals_nonce;\n\t\t\tthis.processNonce = process_nonce;\n\t\t\tthis.buttonStyle = button_style;\n\t\t\tthis.availableCountries = available_countries;\n\t\t\tthis.currencyCode = currency_code;\n\t\t\tthis.needsShipping = needs_shipping;\n\t\t\tthis.genericError = generic_error;\n\n\t\t\tif ( params.product_id ) {\n\t\t\t\tthis.productID = params.product_id;\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Card networks supported by your site and your gateway\n\t\t\t *\n\t\t\t * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#CardParameters|CardParameters}\n\t\t\t */\n\t\t\tconst allowedCardNetworks = card_types;\n\n\t\t\t/**\n\t\t\t * Define the version of the Google Pay API referenced when creating your configuration\n\t\t\t *\n\t\t\t * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#PaymentDataRequest|apiVersion in PaymentDataRequest}\n\t\t\t */\n\t\t\tthis.baseRequest = {\n\t\t\t\tapiVersion: 2,\n\t\t\t\tapiVersionMinor: 0\n\t\t\t};\n\n\t\t\t/**\n\t\t\t * Card authentication methods supported by your site and your gateway\n\t\t\t *\n\t\t\t * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#CardParameters|CardParameters}\n\t\t\t *\n\t\t\t * @todo confirm your processor supports Android device tokens for your supported card networks\n\t\t\t */\n\t\t\tconst allowedCardAuthMethods = [ 'PAN_ONLY', 'CRYPTOGRAM_3DS' ];\n\n\t\t\t/**\n\t\t\t * Identify your gateway and your site's gateway merchant identifier\n\t\t\t *\n\t\t\t * The Google Pay API response will return an encrypted payment method capable\n\t\t\t * of being charged by a supported gateway after payer authorization\n\t\t\t *\n\t\t\t * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#gateway|PaymentMethodTokenizationSpecification}\n\t\t\t */\n\t\t\tconst tokenizationSpecification = {\n\t\t\t\ttype: 'PAYMENT_GATEWAY',\n\t\t\t\tparameters: {\n\t\t\t\t\t'gateway': plugin_id,\n\t\t\t\t\t'gatewayMerchantId': this.merchantID\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t/**\n\t\t\t * Describe your site's support for the CARD payment method and its required fields\n\t\t\t *\n\t\t\t * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#CardParameters|CardParameters}\n\t\t\t */\n\t\t\tthis.baseCardPaymentMethod = {\n\t\t\t\ttype: 'CARD',\n\t\t\t\tparameters: {\n\t\t\t\t\tallowedAuthMethods: allowedCardAuthMethods,\n\t\t\t\t\tallowedCardNetworks: allowedCardNetworks,\n\t\t\t\t\tbillingAddressRequired: true,\n\t\t\t\t\tbillingAddressParameters: {\n\t\t\t\t\t\tformat: 'FULL',\n\t\t\t\t\t\tphoneNumberRequired: true\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t/**\n\t\t\t * Describe your site's support for the CARD payment method including optional fields\n\t\t\t *\n\t\t\t * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#CardParameters|CardParameters}\n\t\t\t */\n\t\t\tthis.cardPaymentMethod = Object.assign(\n\t\t\t\t{},\n\t\t\t\tthis.baseCardPaymentMethod,\n\t\t\t\t{\n\t\t\t\t\ttokenizationSpecification: tokenizationSpecification\n\t\t\t\t}\n\t\t\t);\n\n\t\t\t/**\n\t\t\t * An initialized google.payments.api.PaymentsClient object or null if not yet set\n\t\t\t *\n\t\t\t * @see {@link getGooglePaymentsClient}\n\t\t\t */\n\t\t\tthis.paymentsClient = null;\n\t\t}\n\n\t\t/**\n\t\t * Configure your site's support for payment methods supported by the Google Pay\n\t\t * API.\n\t\t *\n\t\t * Each member of allowedPaymentMethods should contain only the required fields,\n\t\t * allowing reuse of this base request when determining a viewer's ability\n\t\t * to pay and later requesting a supported payment method\n\t\t *\n\t\t * @returns {object} Google Pay API version, payment methods supported by the site\n\t\t */\n\t\tgetGoogleIsReadyToPayRequest() {\n\n\t\t\treturn Object.assign(\n\t\t\t\t{},\n\t\t\t\tthis.baseRequest,\n\t\t\t\t{\n\t\t\t\t\tallowedPaymentMethods: [ this.baseCardPaymentMethod ]\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Configure support for the Google Pay API\n\t\t *\n\t\t * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#PaymentDataRequest|PaymentDataRequest}\n\t\t *\n\t\t * @param {function} resolve callback\n\t\t * @returns {object} PaymentDataRequest fields\n\t\t */\n\t\tgetGooglePaymentDataRequest( resolve ) {\n\n\t\t\treturn this.getGoogleTransactionInfo( ( transactionInfo ) => {\n\n\t\t\t\tconst paymentDataRequest = Object.assign( {}, this.baseRequest );\n\t\t\t\tpaymentDataRequest.allowedPaymentMethods = [ this.cardPaymentMethod ];\n\t\t\t\tpaymentDataRequest.transactionInfo = transactionInfo;\n\t\t\t\tpaymentDataRequest.merchantInfo = {\n\t\t\t\t\tmerchantId: this.merchantID,\n\t\t\t\t\tmerchantName: this.merchantName\n\t\t\t\t};\n\n\t\t\t\tpaymentDataRequest.emailRequired = true;\n\t\t\t\tpaymentDataRequest.callbackIntents = [ 'PAYMENT_AUTHORIZATION' ];\n\n\t\t\t\tif ( this.needsShipping ) {\n\t\t\t\t\tpaymentDataRequest.callbackIntents = [ 'SHIPPING_ADDRESS', 'SHIPPING_OPTION', 'PAYMENT_AUTHORIZATION' ];\n\t\t\t\t\tpaymentDataRequest.shippingAddressRequired = true;\n\t\t\t\t\tpaymentDataRequest.shippingAddressParameters = this.getGoogleShippingAddressParameters();\n\t\t\t\t\tpaymentDataRequest.shippingOptionRequired = true;\n\t\t\t\t}\n\n\t\t\t\tresolve( paymentDataRequest );\n\t\t\t} );\n\t\t}\n\n\t\t/**\n\t\t * Return an active PaymentsClient or initialize\n\t\t *\n\t\t * @see {@link https://developers.google.com/pay/api/web/reference/client#PaymentsClient|PaymentsClient constructor}\n\t\t * @returns {google.payments.api.PaymentsClient} Google Pay API client\n\t\t */\n\t\tgetGooglePaymentsClient() {\n\t\t\tif ( this.paymentsClient === null ) {\n\t\t\t\tlet args = {\n\t\t\t\t\tenvironment: this.environment,\n\t\t\t\t\tmerchantInfo: {\n\t\t\t\t\t\tmerchantName: this.merchantName,\n\t\t\t\t\t\tmerchantId: this.merchantID\n\t\t\t\t\t},\n\t\t\t\t\tpaymentDataCallbacks: {\n\t\t\t\t\t\tonPaymentAuthorized: ( paymentData ) => this.onPaymentAuthorized( paymentData ),\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tif ( this.needsShipping ) {\n\t\t\t\t\targs.paymentDataCallbacks.onPaymentDataChanged = ( paymentData ) => this.onPaymentDataChanged( paymentData );\n\t\t\t\t}\n\n\t\t\t\tthis.paymentsClient = new google.payments.api.PaymentsClient( args );\n\t\t\t}\n\t\t\treturn this.paymentsClient;\n\t\t}\n\n\t\t/**\n\t\t * Handles payment authorization callback intent.\n\t\t *\n\t\t * @param {object} paymentData response from Google Pay API after a payer approves payment.\n\t\t * @see {@link https://developers.google.com/pay/api/web/reference/response-objects#PaymentData|PaymentData object reference}\n\t\t *\n\t\t * @returns Promise<{object}> Promise object to complete or fail the transaction.\n\t\t */\n\t\tonPaymentAuthorized( paymentData ) {\n\n\t\t\tthis.blockUI();\n\n\t\t\treturn new Promise( (resolve, reject) => {\n\n\t\t\t\t// handle the response\n\t\t\t\ttry {\n\t\t\t\t\tthis.processPayment( paymentData, resolve );\n\t\t\t\t}\tcatch( err ) {\n\t\t\t\t\treject( {\n\t\t\t\t\t\ttransactionState: 'ERROR',\n\t\t\t\t\t\terror: {\n\t\t\t\t\t\t\tintent: 'PAYMENT_AUTHORIZATION',\n\t\t\t\t\t\t\tmessage: 'Payment could not be processed',\n\t\t\t\t\t\t\treason: 'PAYMENT_DATA_INVALID'\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\tthis.unblockUI();\n\t\t\t} );\n\t\t}\n\n\t\t/**\n\t\t * Handles dynamic buy flow shipping address and shipping options callback intents.\n\t\t *\n\t\t * @param {object} intermediatePaymentData response from Google Pay API a shipping address or shipping option is selected in the payment sheet.\n\t\t * @see {@link https://developers.google.com/pay/api/web/reference/response-objects#IntermediatePaymentData|IntermediatePaymentData object reference}\n\t\t *\n\t\t * @see {@link https://developers.google.com/pay/api/web/reference/response-objects#PaymentDataRequestUpdate|PaymentDataRequestUpdate}\n\t\t * @returns Promise<{object}> Promise of PaymentDataRequestUpdate object to update the payment sheet.\n\t\t */\n\t\tonPaymentDataChanged( intermediatePaymentData ) {\n\n\t\t\tthis.blockUI();\n\n\t\t\treturn new Promise(( resolve, reject ) => {\n\n\t\t\t\ttry {\n\t\t\t\t\tlet shippingAddress = intermediatePaymentData.shippingAddress;\n\t\t\t\t\tlet shippingOptionData = intermediatePaymentData.shippingOptionData;\n\t\t\t\t\tlet chosenShippingMethod = '';\n\n\t\t\t\t\tif ( intermediatePaymentData.callbackTrigger == 'SHIPPING_OPTION' ) {\n\t\t\t\t\t\tchosenShippingMethod = shippingOptionData.id;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.getUpdatedTotals( shippingAddress, chosenShippingMethod, ( paymentDataRequestUpdate ) => {\n\n\t\t\t\t\t\tif ( paymentDataRequestUpdate.newShippingOptionParameters.shippingOptions.length == 0 ) {\n\t\t\t\t\t\t\tpaymentDataRequestUpdate = {\n\t\t\t\t\t\t\t\terror: this.getGoogleUnserviceableAddressError()\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresolve( paymentDataRequestUpdate );\n\t\t\t\t\t} );\n\n\t\t\t\t}\tcatch( err ) {\n\t\t\t\t\tthis.failPayment( 'Could not load updated totals or process payment data request update. ' + err );\n\t\t\t\t}\n\n\t\t\t\tthis.unblockUI();\n\t\t\t} );\n\t\t}\n\n\t\t/**\n\t\t * Provide Google Pay API with a payment amount, currency, and amount status\n\t\t *\n\t\t * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#TransactionInfo|TransactionInfo}\n\t\t *\n\t\t * @param {function} resolve callback\n\t\t * @returns {object} transaction info, suitable for use as transactionInfo property of PaymentDataRequest\n\t\t */\n\t\tgetGoogleTransactionInfo( resolve ) {\n\n\t\t\t// get transaction info from cart\n\t\t\tconst data = {\n\t\t\t\taction: `wc_${this.gatewayID}_google_pay_get_transaction_info`,\n\t\t\t}\n\n\t\t\tif ( this.productID ) {\n\t\t\t\tdata.productID = this.productID;\n\t\t\t}\n\n\t\t\t$.post( this.ajaxURL, data, ( response ) => {\n\n\t\t\t\tif ( response.success ) {\n\t\t\t\t\tresolve( JSON.parse( response.data ) )\n\t\t\t\t} else {\n\t\t\t\t\tthis.failPayment( 'Could not build transaction info. ' + response.data.message );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t/**\n\t\t * Get updated totals and shipping options via AJAX for use in the PaymentDataRequest\n\t\t *\n\t\t * @see {@link https://developers.google.com/pay/api/web/reference/response-objects#PaymentDataRequestUpdate|PaymentDataRequestUpdate}\n\t\t *\n\t\t * @param {object} shippingAddress shipping address\n\t\t * @param {object} shippingMethod chosen shipping method\n\t\t * @param {function} resolve callback\n\t\t */\n\t\tgetUpdatedTotals( shippingAddress, shippingMethod, resolve ) {\n\n\t\t\tconst data = {\n\t\t\t\taction: `wc_${this.gatewayID}_google_pay_recalculate_totals`,\n\t\t\t\t'nonce': this.recalculateTotalsNonce,\n\t\t\t\tshippingAddress,\n\t\t\t\tshippingMethod\n\t\t\t}\n\n\t\t\tif ( this.productID ) {\n\t\t\t\tdata.productID = this.productID;\n\t\t\t}\n\n\t\t\t$.post( this.ajaxURL, data, ( response ) => {\n\n\t\t\t\tif ( response.success ) {\n\t\t\t\t\tresolve( JSON.parse( response.data ) )\n\t\t\t\t} else {\n\t\t\t\t\tthis.failPayment( 'Could not recalculate totals. ' + response.data.message );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t/**\n\t\t * Provide Google Pay API with shipping address parameters when using dynamic buy flow.\n\t\t *\n\t\t * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#ShippingAddressParameters|ShippingAddressParameters}\n\t\t * @returns {object} shipping address details, suitable for use as shippingAddressParameters property of PaymentDataRequest\n\t\t */\n\t\tgetGoogleShippingAddressParameters() {\n\n\t\t\treturn {\n\t\t\t\tallowedCountryCodes: this.availableCountries\n\t\t\t};\n\t\t}\n\n\t\t/**\n\t\t * Provide Google Pay API with a payment data error.\n\t\t *\n\t\t * @see {@link https://developers.google.com/pay/api/web/reference/response-objects#PaymentDataError|PaymentDataError}\n\t\t * @returns {object} payment data error, suitable for use as error property of PaymentDataRequestUpdate\n\t\t */\n\t\tgetGoogleUnserviceableAddressError() {\n\t\t\treturn {\n\t\t\t\treason: 'SHIPPING_ADDRESS_UNSERVICEABLE',\n\t\t\t\tmessage: 'Cannot ship to the selected address',\n\t\t\t\tintent: 'SHIPPING_ADDRESS'\n\t\t\t};\n\t\t}\n\n\t\t/**\n\t\t * Add a Google Pay purchase button alongside an existing checkout button\n\t\t *\n\t\t * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#ButtonOptions|Button options}\n\t\t * @see {@link https://developers.google.com/pay/api/web/guides/brand-guidelines|Google Pay brand guidelines}\n\t\t */\n\t\taddGooglePayButton() {\n\n\t\t\tconst paymentsClient = this.getGooglePaymentsClient();\n\t\t\tconst button = paymentsClient.createButton( {\n\t\t\t\tonClick: ( event ) => this.onGooglePaymentButtonClicked( event ),\n\t\t\t\tbuttonColor: this.buttonStyle,\n\t\t\t\tbuttonSizeMode: 'fill'\n\t\t\t} );\n\t\t\tdocument.getElementById( 'sv-wc-google-pay-button-container' ).appendChild( button );\n\t\t}\n\n\t\t/**\n\t\t * Prefetch payment data to improve performance\n\t\t *\n\t\t * @see {@link https://developers.google.com/pay/api/web/reference/client#prefetchPaymentData|prefetchPaymentData()}\n\t\t */\n\t\tprefetchGooglePaymentData() {\n\n\t\t\tthis.getGooglePaymentDataRequest( ( paymentDataRequest ) => {\n\n\t\t\t\t// transactionInfo must be set but does not affect cache\n\t\t\t\tpaymentDataRequest.transactionInfo = {\n\t\t\t\t\ttotalPriceStatus: 'NOT_CURRENTLY_KNOWN',\n\t\t\t\t\tcurrencyCode: this.currencyCode\n\t\t\t\t};\n\t\t\t\tconst paymentsClient = this.getGooglePaymentsClient();\n\t\t\t\tpaymentsClient.prefetchPaymentData( paymentDataRequest );\n\t\t\t} );\n\t\t}\n\n\t\t/**\n\t\t * Process payment data returned by the Google Pay API\n\t\t *\n\t\t * @see {@link https://developers.google.com/pay/api/web/reference/response-objects#PaymentData|PaymentData object reference}\n\t\t *\n\t\t * @param {object} paymentData response from Google Pay API after user approves payment\n\t\t * @param {function} resolve callback\n\t\t */\n\t\tprocessPayment( paymentData, resolve ) {\n\n\t\t\t// pass payment token to your gateway to process payment\n\t\t\tconst data = {\n\t\t\t\taction: `wc_${this.gatewayID}_google_pay_process_payment`,\n\t\t\t\tnonce: this.processNonce,\n\t\t\t\tpaymentData: JSON.stringify( paymentData ),\n\t\t\t}\n\n\t\t\tif ( this.productID && ! this.needsShipping ) {\n\t\t\t\tdata.productID = this.productID;\n\t\t\t}\n\n\t\t\treturn $.post( this.ajaxURL, data, ( response ) => {\n\t\t\t\tif ( response.success ) {\n\t\t\t\t\tresolve( {\n\t\t\t\t\t\ttransactionState: 'SUCCESS'\n\t\t\t\t\t} );\n\t\t\t\t\twindow.location = response.data.redirect;\n\t\t\t\t} else {\n\t\t\t\t\tresolve( {\n\t\t\t\t\t\ttransactionState: 'ERROR',\n\t\t\t\t\t\terror: {\n\t\t\t\t\t\t\tintent: 'SHIPPING_ADDRESS',\n\t\t\t\t\t\t\tmessage: 'Invalid data',\n\t\t\t\t\t\t\treason: 'PAYMENT_DATA_INVALID'\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t\tthis.failPayment( 'Payment could not be processed. ' + response.data.message );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t/**\n\t\t * Show Google Pay payment sheet when Google Pay payment button is clicked\n\t\t */\n\t\tonGooglePaymentButtonClicked( event ) {\n\n\t\t\tevent.preventDefault();\n\n\t\t\tthis.blockUI();\n\n\t\t\tthis.getGooglePaymentDataRequest( ( paymentDataRequest ) => {\n\n\t\t\t\tconst paymentsClient = this.getGooglePaymentsClient();\n\t\t\t\ttry {\n\t\t\t\t\tpaymentsClient.loadPaymentData( paymentDataRequest );\n\t\t\t\t} catch ( err ) {\n\t\t\t\t\tthis.failPayment( 'Could not load payment data. ' + err );\n\t\t\t\t}\n\n\t\t\t\tthis.unblockUI();\n\t\t\t} );\n\t\t}\n\n\t\t/**\n\t\t * Initialize Google PaymentsClient after Google-hosted JavaScript has loaded\n\t\t *\n\t\t * Display a Google Pay payment button after confirmation of the viewer's\n\t\t * ability to pay.\n\t\t */\n\t\tinit() {\n\n\t\t\t// initialize for the various pages\n\t\t\tif ( $( 'form.cart' ).length ) {\n\t\t\t\tthis.initProductPage();\n\t\t\t} else if ( $( 'form.woocommerce-cart-form' ).length ) {\n\t\t\t\tthis.initCartPage();\n\t\t\t} else if ( $( 'form.woocommerce-checkout' ).length) {\n\t\t\t\tthis.initCheckoutPage()\n\t\t\t} else {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.initGooglePay();\n\t\t}\n\n\t\t/**\n\t\t * Initializes Google Pay.\n\t\t */\n\t\tinitGooglePay() {\n\n\t\t\tconst paymentsClient = this.getGooglePaymentsClient();\n\t\t\tpaymentsClient.isReadyToPay( this.getGoogleIsReadyToPayRequest() )\n\t\t\t\t.then( ( response ) => {\n\t\t\t\t\tif ( response.result ) {\n\t\t\t\t\t\tthis.addGooglePayButton();\n\t\t\t\t\t\t// prefetch payment data to improve performance\n\t\t\t\t\t\tthis.prefetchGooglePaymentData();\n\t\t\t\t\t}\n\t\t\t\t} )\n\t\t\t\t.catch( ( err ) => {\n\t\t\t\t\tthis.failPayment( 'Google Pay is not ready. ' + err );\n\t\t\t\t} );\n\t\t}\n\n\t\t/**\n\t\t * Initializes the product page.\n\t\t */\n\t\tinitProductPage() {\n\t\t\tthis.uiElement = $( 'form.cart' );\n\t\t}\n\n\t\t/**\n\t\t * Initializes the cart page.\n\t\t */\n\t\tinitCartPage() {\n\t\t\tthis.uiElement = $( 'form.woocommerce-cart-form' ).parents( 'div.woocommerce' );\n\n\t\t\t// re-init if the cart totals are updated\n\t\t\t$( document.body ).on( 'updated_cart_totals', () => {\n\t\t\t\tthis.initGooglePay();\n\t\t\t} );\n\t\t}\n\n\t\t/**\n\t\t * Initializes the checkout page.\n\t\t */\n\t\tinitCheckoutPage() {\n\t\t\tthis.uiElement = $( 'form.woocommerce-checkout' );\n\t\t}\n\n\t\t/**\n\t\t * Fails the purchase based on the gateway result.\n\t\t */\n\t\tfailPayment( error ) {\n\n\t\t\tconsole.error( '[Google Pay] ' + error );\n\n\t\t\tthis.unblockUI();\n\n\t\t\tthis.renderErrors( [ this.genericError ] );\n\t\t}\n\n\t\t/**\n\t\t * Renders any new errors and bring them into the viewport.\n \t\t */\n\t\trenderErrors( errors ) {\n\n\t\t\t// hide and remove any previous errors\n\t\t\t$( '.woocommerce-error, .woocommerce-message' ).remove();\n\n\t\t\t// add errors\n\t\t\tthis.uiElement.prepend( '
    • ' + errors.join( '
    • ' ) + '
    ' );\n\n\t\t\t// unblock UI\n\t\t\tthis.uiElement.removeClass( 'processing' ).unblock();\n\n\t\t\t// scroll to top\n\t\t\t$( 'html, body' ).animate( { scrollTop: this.uiElement.offset().top - 100 }, 1000 );\n\t\t}\n\n\t\t/**\n\t\t * Blocks the payment form UI.\n\t\t */\n\t\tblockUI() {\n\t\t\tthis.uiElement.block( { message: null, overlayCSS: { background: '#fff', opacity: 0.6 } } );\n\t\t}\n\n\t\t/**\n\t\t * Unblocks the payment form UI.\n\t\t */\n\t\tunblockUI() {\n\t\t\tthis.uiElement.unblock();\n\t\t}\n\t}\n\n\t$( document.body ).trigger( 'sv_wc_google_pay_handler_v5_13_0_loaded' );\n\n} );\n"]} \ No newline at end of file +{"version":3,"sources":["frontend/sv-wc-payment-gateway-google-pay.js"],"names":["jQuery","$","window","SV_WC_Google_Pay_Handler_v5_14_0","params","plugin_id","merchant_id","merchant_name","gateway_id","environment","gateway_id_dasherized","ajax_url","recalculate_totals_nonce","process_nonce","button_style","card_types","available_countries","currency_code","needs_shipping","generic_error","gatewayID","merchantID","merchantName","ajaxURL","recalculateTotalsNonce","processNonce","buttonStyle","availableCountries","currencyCode","needsShipping","genericError","product_id","productID","allowedCardNetworks","baseRequest","apiVersion","apiVersionMinor","allowedCardAuthMethods","tokenizationSpecification","type","parameters","baseCardPaymentMethod","allowedAuthMethods","billingAddressRequired","billingAddressParameters","format","phoneNumberRequired","cardPaymentMethod","Object","assign","paymentsClient","allowedPaymentMethods","resolve","getGoogleTransactionInfo","transactionInfo","paymentDataRequest","merchantInfo","merchantId","emailRequired","callbackIntents","shippingAddressRequired","shippingAddressParameters","getGoogleShippingAddressParameters","shippingOptionRequired","args","paymentDataCallbacks","onPaymentAuthorized","paymentData","onPaymentDataChanged","google","payments","api","PaymentsClient","blockUI","Promise","reject","processPayment","err","transactionState","error","intent","message","reason","unblockUI","intermediatePaymentData","shippingAddress","shippingOptionData","chosenShippingMethod","callbackTrigger","id","getUpdatedTotals","paymentDataRequestUpdate","newShippingOptionParameters","shippingOptions","length","getGoogleUnserviceableAddressError","failPayment","data","action","post","response","success","JSON","parse","shippingMethod","allowedCountryCodes","button","getGooglePaymentsClient","createButton","onClick","event","onGooglePaymentButtonClicked","buttonColor","buttonSizeMode","document","getElementById","appendChild","getGooglePaymentDataRequest","totalPriceStatus","prefetchPaymentData","nonce","stringify","location","redirect","preventDefault","loadPaymentData","initProductPage","initCartPage","initCheckoutPage","initGooglePay","isReadyToPay","getGoogleIsReadyToPayRequest","then","result","addGooglePayButton","prefetchGooglePaymentData","catch","uiElement","parents","body","on","console","renderErrors","errors","remove","prepend","join","removeClass","unblock","animate","scrollTop","offset","top","block","overlayCSS","background","opacity","trigger"],"mappings":"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","file":"sv-wc-payment-gateway-google-pay.js","sourceRoot":"../js","sourcesContent":["jQuery( function( $ ) {\n\n\t\"use strict\"\n\n\t/**\n\t * Google Pay handler.\n\t *\n\t * @since 5.10.0\n\t *\n\t * @type {SV_WC_Google_Pay_Handler_v5_14_0} object\n\t */\n\twindow.SV_WC_Google_Pay_Handler_v5_14_0 = class SV_WC_Google_Pay_Handler_v5_14_0 {\n\n\t\t/**\n\t\t * Handler constructor.\n\t\t *\n\t\t * @since 5.10.0\n\t\t *\n\t\t * @param {Object} params The plugin ID\n\t\t * @param {string} params.plugin_id The plugin ID\n\t\t * @param {string} params.merchant_id The merchant ID\n\t\t * @param {string} params.merchant_name The site name\n\t\t * @param {string} params.gateway_id The gateway ID\n\t\t * @param {string} params.gateway_id_dasherized The gateway ID dasherized\n\t\t * @param {string} params.environment The gateway environment (PRODUCTION or TEST)\n\t\t * @param {string} params.ajax_url The AJAX URL\n\t\t * @param {string} params.recalculate_totals_nonce Nonce for the recalculate_totals AJAX action\n\t\t * @param {string} params.process_nonce Nonce for the process AJAX action\n\t\t * @param {string} params.button_style The button style\n\t\t * @param {string[]} params.card_types The supported card types\n\t\t * @param {string[]} params.available_countries Array of two-letter country codes the gateway is available for\n\t\t * @param {string[]} params.currency_code WC configured currency\n\t\t * @param {boolean} params.needs_shipping Whether or not the cart or product needs shipping\n\t\t * @param {string} params.generic_error The generic error message\n\t\t * @param {string} params.product_id The product ID if we are on a Product page\n\t\t */\n\t\tconstructor( params ) {\n\n\t\t\tlet {\n\t\t\t\tplugin_id,\n\t\t\t\tmerchant_id,\n\t\t\t\tmerchant_name,\n\t\t\t\tgateway_id,\n\t\t\t\tgateway_id_dasherized,\n\t\t\t\tenvironment,\n\t\t\t\tajax_url,\n\t\t\t\trecalculate_totals_nonce,\n\t\t\t\tprocess_nonce,\n\t\t\t\tbutton_style,\n\t\t\t\tcard_types,\n\t\t\t\tavailable_countries,\n\t\t\t\tcurrency_code,\n\t\t\t\tneeds_shipping,\n\t\t\t\tgeneric_error\n\t\t\t} = params;\n\n\t\t\tthis.gatewayID = gateway_id;\n\t\t\tthis.merchantID = merchant_id;\n\t\t\tthis.merchantName = merchant_name;\n\t\t\tthis.environment = environment;\n\t\t\tthis.ajaxURL = ajax_url;\n\t\t\tthis.recalculateTotalsNonce = recalculate_totals_nonce;\n\t\t\tthis.processNonce = process_nonce;\n\t\t\tthis.buttonStyle = button_style;\n\t\t\tthis.availableCountries = available_countries;\n\t\t\tthis.currencyCode = currency_code;\n\t\t\tthis.needsShipping = needs_shipping;\n\t\t\tthis.genericError = generic_error;\n\n\t\t\tif ( params.product_id ) {\n\t\t\t\tthis.productID = params.product_id;\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Card networks supported by your site and your gateway\n\t\t\t *\n\t\t\t * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#CardParameters|CardParameters}\n\t\t\t */\n\t\t\tconst allowedCardNetworks = card_types;\n\n\t\t\t/**\n\t\t\t * Define the version of the Google Pay API referenced when creating your configuration\n\t\t\t *\n\t\t\t * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#PaymentDataRequest|apiVersion in PaymentDataRequest}\n\t\t\t */\n\t\t\tthis.baseRequest = {\n\t\t\t\tapiVersion: 2,\n\t\t\t\tapiVersionMinor: 0\n\t\t\t};\n\n\t\t\t/**\n\t\t\t * Card authentication methods supported by your site and your gateway\n\t\t\t *\n\t\t\t * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#CardParameters|CardParameters}\n\t\t\t *\n\t\t\t * @todo confirm your processor supports Android device tokens for your supported card networks\n\t\t\t */\n\t\t\tconst allowedCardAuthMethods = [ 'PAN_ONLY', 'CRYPTOGRAM_3DS' ];\n\n\t\t\t/**\n\t\t\t * Identify your gateway and your site's gateway merchant identifier\n\t\t\t *\n\t\t\t * The Google Pay API response will return an encrypted payment method capable\n\t\t\t * of being charged by a supported gateway after payer authorization\n\t\t\t *\n\t\t\t * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#gateway|PaymentMethodTokenizationSpecification}\n\t\t\t */\n\t\t\tconst tokenizationSpecification = {\n\t\t\t\ttype: 'PAYMENT_GATEWAY',\n\t\t\t\tparameters: {\n\t\t\t\t\t'gateway': plugin_id,\n\t\t\t\t\t'gatewayMerchantId': this.merchantID\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t/**\n\t\t\t * Describe your site's support for the CARD payment method and its required fields\n\t\t\t *\n\t\t\t * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#CardParameters|CardParameters}\n\t\t\t */\n\t\t\tthis.baseCardPaymentMethod = {\n\t\t\t\ttype: 'CARD',\n\t\t\t\tparameters: {\n\t\t\t\t\tallowedAuthMethods: allowedCardAuthMethods,\n\t\t\t\t\tallowedCardNetworks: allowedCardNetworks,\n\t\t\t\t\tbillingAddressRequired: true,\n\t\t\t\t\tbillingAddressParameters: {\n\t\t\t\t\t\tformat: 'FULL',\n\t\t\t\t\t\tphoneNumberRequired: true\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t/**\n\t\t\t * Describe your site's support for the CARD payment method including optional fields\n\t\t\t *\n\t\t\t * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#CardParameters|CardParameters}\n\t\t\t */\n\t\t\tthis.cardPaymentMethod = Object.assign(\n\t\t\t\t{},\n\t\t\t\tthis.baseCardPaymentMethod,\n\t\t\t\t{\n\t\t\t\t\ttokenizationSpecification: tokenizationSpecification\n\t\t\t\t}\n\t\t\t);\n\n\t\t\t/**\n\t\t\t * An initialized google.payments.api.PaymentsClient object or null if not yet set\n\t\t\t *\n\t\t\t * @see {@link getGooglePaymentsClient}\n\t\t\t */\n\t\t\tthis.paymentsClient = null;\n\t\t}\n\n\t\t/**\n\t\t * Configure your site's support for payment methods supported by the Google Pay\n\t\t * API.\n\t\t *\n\t\t * Each member of allowedPaymentMethods should contain only the required fields,\n\t\t * allowing reuse of this base request when determining a viewer's ability\n\t\t * to pay and later requesting a supported payment method\n\t\t *\n\t\t * @returns {object} Google Pay API version, payment methods supported by the site\n\t\t */\n\t\tgetGoogleIsReadyToPayRequest() {\n\n\t\t\treturn Object.assign(\n\t\t\t\t{},\n\t\t\t\tthis.baseRequest,\n\t\t\t\t{\n\t\t\t\t\tallowedPaymentMethods: [ this.baseCardPaymentMethod ]\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Configure support for the Google Pay API\n\t\t *\n\t\t * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#PaymentDataRequest|PaymentDataRequest}\n\t\t *\n\t\t * @param {function} resolve callback\n\t\t * @returns {object} PaymentDataRequest fields\n\t\t */\n\t\tgetGooglePaymentDataRequest( resolve ) {\n\n\t\t\treturn this.getGoogleTransactionInfo( ( transactionInfo ) => {\n\n\t\t\t\tconst paymentDataRequest = Object.assign( {}, this.baseRequest );\n\t\t\t\tpaymentDataRequest.allowedPaymentMethods = [ this.cardPaymentMethod ];\n\t\t\t\tpaymentDataRequest.transactionInfo = transactionInfo;\n\t\t\t\tpaymentDataRequest.merchantInfo = {\n\t\t\t\t\tmerchantId: this.merchantID,\n\t\t\t\t\tmerchantName: this.merchantName\n\t\t\t\t};\n\n\t\t\t\tpaymentDataRequest.emailRequired = true;\n\t\t\t\tpaymentDataRequest.callbackIntents = [ 'PAYMENT_AUTHORIZATION' ];\n\n\t\t\t\tif ( this.needsShipping ) {\n\t\t\t\t\tpaymentDataRequest.callbackIntents = [ 'SHIPPING_ADDRESS', 'SHIPPING_OPTION', 'PAYMENT_AUTHORIZATION' ];\n\t\t\t\t\tpaymentDataRequest.shippingAddressRequired = true;\n\t\t\t\t\tpaymentDataRequest.shippingAddressParameters = this.getGoogleShippingAddressParameters();\n\t\t\t\t\tpaymentDataRequest.shippingOptionRequired = true;\n\t\t\t\t}\n\n\t\t\t\tresolve( paymentDataRequest );\n\t\t\t} );\n\t\t}\n\n\t\t/**\n\t\t * Return an active PaymentsClient or initialize\n\t\t *\n\t\t * @see {@link https://developers.google.com/pay/api/web/reference/client#PaymentsClient|PaymentsClient constructor}\n\t\t * @returns {google.payments.api.PaymentsClient} Google Pay API client\n\t\t */\n\t\tgetGooglePaymentsClient() {\n\t\t\tif ( this.paymentsClient === null ) {\n\t\t\t\tlet args = {\n\t\t\t\t\tenvironment: this.environment,\n\t\t\t\t\tmerchantInfo: {\n\t\t\t\t\t\tmerchantName: this.merchantName,\n\t\t\t\t\t\tmerchantId: this.merchantID\n\t\t\t\t\t},\n\t\t\t\t\tpaymentDataCallbacks: {\n\t\t\t\t\t\tonPaymentAuthorized: ( paymentData ) => this.onPaymentAuthorized( paymentData ),\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tif ( this.needsShipping ) {\n\t\t\t\t\targs.paymentDataCallbacks.onPaymentDataChanged = ( paymentData ) => this.onPaymentDataChanged( paymentData );\n\t\t\t\t}\n\n\t\t\t\tthis.paymentsClient = new google.payments.api.PaymentsClient( args );\n\t\t\t}\n\t\t\treturn this.paymentsClient;\n\t\t}\n\n\t\t/**\n\t\t * Handles payment authorization callback intent.\n\t\t *\n\t\t * @param {object} paymentData response from Google Pay API after a payer approves payment.\n\t\t * @see {@link https://developers.google.com/pay/api/web/reference/response-objects#PaymentData|PaymentData object reference}\n\t\t *\n\t\t * @returns Promise<{object}> Promise object to complete or fail the transaction.\n\t\t */\n\t\tonPaymentAuthorized( paymentData ) {\n\n\t\t\tthis.blockUI();\n\n\t\t\treturn new Promise( (resolve, reject) => {\n\n\t\t\t\t// handle the response\n\t\t\t\ttry {\n\t\t\t\t\tthis.processPayment( paymentData, resolve );\n\t\t\t\t}\tcatch( err ) {\n\t\t\t\t\treject( {\n\t\t\t\t\t\ttransactionState: 'ERROR',\n\t\t\t\t\t\terror: {\n\t\t\t\t\t\t\tintent: 'PAYMENT_AUTHORIZATION',\n\t\t\t\t\t\t\tmessage: 'Payment could not be processed',\n\t\t\t\t\t\t\treason: 'PAYMENT_DATA_INVALID'\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\tthis.unblockUI();\n\t\t\t} );\n\t\t}\n\n\t\t/**\n\t\t * Handles dynamic buy flow shipping address and shipping options callback intents.\n\t\t *\n\t\t * @param {object} intermediatePaymentData response from Google Pay API a shipping address or shipping option is selected in the payment sheet.\n\t\t * @see {@link https://developers.google.com/pay/api/web/reference/response-objects#IntermediatePaymentData|IntermediatePaymentData object reference}\n\t\t *\n\t\t * @see {@link https://developers.google.com/pay/api/web/reference/response-objects#PaymentDataRequestUpdate|PaymentDataRequestUpdate}\n\t\t * @returns Promise<{object}> Promise of PaymentDataRequestUpdate object to update the payment sheet.\n\t\t */\n\t\tonPaymentDataChanged( intermediatePaymentData ) {\n\n\t\t\tthis.blockUI();\n\n\t\t\treturn new Promise(( resolve, reject ) => {\n\n\t\t\t\ttry {\n\t\t\t\t\tlet shippingAddress = intermediatePaymentData.shippingAddress;\n\t\t\t\t\tlet shippingOptionData = intermediatePaymentData.shippingOptionData;\n\t\t\t\t\tlet chosenShippingMethod = '';\n\n\t\t\t\t\tif ( intermediatePaymentData.callbackTrigger == 'SHIPPING_OPTION' ) {\n\t\t\t\t\t\tchosenShippingMethod = shippingOptionData.id;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.getUpdatedTotals( shippingAddress, chosenShippingMethod, ( paymentDataRequestUpdate ) => {\n\n\t\t\t\t\t\tif ( paymentDataRequestUpdate.newShippingOptionParameters.shippingOptions.length == 0 ) {\n\t\t\t\t\t\t\tpaymentDataRequestUpdate = {\n\t\t\t\t\t\t\t\terror: this.getGoogleUnserviceableAddressError()\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresolve( paymentDataRequestUpdate );\n\t\t\t\t\t} );\n\n\t\t\t\t}\tcatch( err ) {\n\t\t\t\t\tthis.failPayment( 'Could not load updated totals or process payment data request update. ' + err );\n\t\t\t\t}\n\n\t\t\t\tthis.unblockUI();\n\t\t\t} );\n\t\t}\n\n\t\t/**\n\t\t * Provide Google Pay API with a payment amount, currency, and amount status\n\t\t *\n\t\t * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#TransactionInfo|TransactionInfo}\n\t\t *\n\t\t * @param {function} resolve callback\n\t\t * @returns {object} transaction info, suitable for use as transactionInfo property of PaymentDataRequest\n\t\t */\n\t\tgetGoogleTransactionInfo( resolve ) {\n\n\t\t\t// get transaction info from cart\n\t\t\tconst data = {\n\t\t\t\taction: `wc_${this.gatewayID}_google_pay_get_transaction_info`,\n\t\t\t}\n\n\t\t\tif ( this.productID ) {\n\t\t\t\tdata.productID = this.productID;\n\t\t\t}\n\n\t\t\t$.post( this.ajaxURL, data, ( response ) => {\n\n\t\t\t\tif ( response.success ) {\n\t\t\t\t\tresolve( JSON.parse( response.data ) )\n\t\t\t\t} else {\n\t\t\t\t\tthis.failPayment( 'Could not build transaction info. ' + response.data.message );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t/**\n\t\t * Get updated totals and shipping options via AJAX for use in the PaymentDataRequest\n\t\t *\n\t\t * @see {@link https://developers.google.com/pay/api/web/reference/response-objects#PaymentDataRequestUpdate|PaymentDataRequestUpdate}\n\t\t *\n\t\t * @param {object} shippingAddress shipping address\n\t\t * @param {object} shippingMethod chosen shipping method\n\t\t * @param {function} resolve callback\n\t\t */\n\t\tgetUpdatedTotals( shippingAddress, shippingMethod, resolve ) {\n\n\t\t\tconst data = {\n\t\t\t\taction: `wc_${this.gatewayID}_google_pay_recalculate_totals`,\n\t\t\t\t'nonce': this.recalculateTotalsNonce,\n\t\t\t\tshippingAddress,\n\t\t\t\tshippingMethod\n\t\t\t}\n\n\t\t\tif ( this.productID ) {\n\t\t\t\tdata.productID = this.productID;\n\t\t\t}\n\n\t\t\t$.post( this.ajaxURL, data, ( response ) => {\n\n\t\t\t\tif ( response.success ) {\n\t\t\t\t\tresolve( JSON.parse( response.data ) )\n\t\t\t\t} else {\n\t\t\t\t\tthis.failPayment( 'Could not recalculate totals. ' + response.data.message );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t/**\n\t\t * Provide Google Pay API with shipping address parameters when using dynamic buy flow.\n\t\t *\n\t\t * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#ShippingAddressParameters|ShippingAddressParameters}\n\t\t * @returns {object} shipping address details, suitable for use as shippingAddressParameters property of PaymentDataRequest\n\t\t */\n\t\tgetGoogleShippingAddressParameters() {\n\n\t\t\treturn {\n\t\t\t\tallowedCountryCodes: this.availableCountries\n\t\t\t};\n\t\t}\n\n\t\t/**\n\t\t * Provide Google Pay API with a payment data error.\n\t\t *\n\t\t * @see {@link https://developers.google.com/pay/api/web/reference/response-objects#PaymentDataError|PaymentDataError}\n\t\t * @returns {object} payment data error, suitable for use as error property of PaymentDataRequestUpdate\n\t\t */\n\t\tgetGoogleUnserviceableAddressError() {\n\t\t\treturn {\n\t\t\t\treason: 'SHIPPING_ADDRESS_UNSERVICEABLE',\n\t\t\t\tmessage: 'Cannot ship to the selected address',\n\t\t\t\tintent: 'SHIPPING_ADDRESS'\n\t\t\t};\n\t\t}\n\n\t\t/**\n\t\t * Add a Google Pay purchase button alongside an existing checkout button\n\t\t *\n\t\t * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#ButtonOptions|Button options}\n\t\t * @see {@link https://developers.google.com/pay/api/web/guides/brand-guidelines|Google Pay brand guidelines}\n\t\t */\n\t\taddGooglePayButton() {\n\n\t\t\tconst paymentsClient = this.getGooglePaymentsClient();\n\t\t\tconst button = paymentsClient.createButton( {\n\t\t\t\tonClick: ( event ) => this.onGooglePaymentButtonClicked( event ),\n\t\t\t\tbuttonColor: this.buttonStyle,\n\t\t\t\tbuttonSizeMode: 'fill'\n\t\t\t} );\n\t\t\tdocument.getElementById( 'sv-wc-google-pay-button-container' ).appendChild( button );\n\t\t}\n\n\t\t/**\n\t\t * Prefetch payment data to improve performance\n\t\t *\n\t\t * @see {@link https://developers.google.com/pay/api/web/reference/client#prefetchPaymentData|prefetchPaymentData()}\n\t\t */\n\t\tprefetchGooglePaymentData() {\n\n\t\t\tthis.getGooglePaymentDataRequest( ( paymentDataRequest ) => {\n\n\t\t\t\t// transactionInfo must be set but does not affect cache\n\t\t\t\tpaymentDataRequest.transactionInfo = {\n\t\t\t\t\ttotalPriceStatus: 'NOT_CURRENTLY_KNOWN',\n\t\t\t\t\tcurrencyCode: this.currencyCode\n\t\t\t\t};\n\t\t\t\tconst paymentsClient = this.getGooglePaymentsClient();\n\t\t\t\tpaymentsClient.prefetchPaymentData( paymentDataRequest );\n\t\t\t} );\n\t\t}\n\n\t\t/**\n\t\t * Process payment data returned by the Google Pay API\n\t\t *\n\t\t * @see {@link https://developers.google.com/pay/api/web/reference/response-objects#PaymentData|PaymentData object reference}\n\t\t *\n\t\t * @param {object} paymentData response from Google Pay API after user approves payment\n\t\t * @param {function} resolve callback\n\t\t */\n\t\tprocessPayment( paymentData, resolve ) {\n\n\t\t\t// pass payment token to your gateway to process payment\n\t\t\tconst data = {\n\t\t\t\taction: `wc_${this.gatewayID}_google_pay_process_payment`,\n\t\t\t\tnonce: this.processNonce,\n\t\t\t\tpaymentData: JSON.stringify( paymentData ),\n\t\t\t}\n\n\t\t\tif ( this.productID && ! this.needsShipping ) {\n\t\t\t\tdata.productID = this.productID;\n\t\t\t}\n\n\t\t\treturn $.post( this.ajaxURL, data, ( response ) => {\n\t\t\t\tif ( response.success ) {\n\t\t\t\t\tresolve( {\n\t\t\t\t\t\ttransactionState: 'SUCCESS'\n\t\t\t\t\t} );\n\t\t\t\t\twindow.location = response.data.redirect;\n\t\t\t\t} else {\n\t\t\t\t\tresolve( {\n\t\t\t\t\t\ttransactionState: 'ERROR',\n\t\t\t\t\t\terror: {\n\t\t\t\t\t\t\tintent: 'SHIPPING_ADDRESS',\n\t\t\t\t\t\t\tmessage: 'Invalid data',\n\t\t\t\t\t\t\treason: 'PAYMENT_DATA_INVALID'\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t\tthis.failPayment( 'Payment could not be processed. ' + response.data.message );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t/**\n\t\t * Show Google Pay payment sheet when Google Pay payment button is clicked\n\t\t */\n\t\tonGooglePaymentButtonClicked( event ) {\n\n\t\t\tevent.preventDefault();\n\n\t\t\tthis.blockUI();\n\n\t\t\tthis.getGooglePaymentDataRequest( ( paymentDataRequest ) => {\n\n\t\t\t\tconst paymentsClient = this.getGooglePaymentsClient();\n\t\t\t\ttry {\n\t\t\t\t\tpaymentsClient.loadPaymentData( paymentDataRequest );\n\t\t\t\t} catch ( err ) {\n\t\t\t\t\tthis.failPayment( 'Could not load payment data. ' + err );\n\t\t\t\t}\n\n\t\t\t\tthis.unblockUI();\n\t\t\t} );\n\t\t}\n\n\t\t/**\n\t\t * Initialize Google PaymentsClient after Google-hosted JavaScript has loaded\n\t\t *\n\t\t * Display a Google Pay payment button after confirmation of the viewer's\n\t\t * ability to pay.\n\t\t */\n\t\tinit() {\n\n\t\t\t// initialize for the various pages\n\t\t\tif ( $( 'form.cart' ).length ) {\n\t\t\t\tthis.initProductPage();\n\t\t\t} else if ( $( 'form.woocommerce-cart-form' ).length ) {\n\t\t\t\tthis.initCartPage();\n\t\t\t} else if ( $( 'form.woocommerce-checkout' ).length) {\n\t\t\t\tthis.initCheckoutPage()\n\t\t\t} else {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.initGooglePay();\n\t\t}\n\n\t\t/**\n\t\t * Initializes Google Pay.\n\t\t */\n\t\tinitGooglePay() {\n\n\t\t\tconst paymentsClient = this.getGooglePaymentsClient();\n\t\t\tpaymentsClient.isReadyToPay( this.getGoogleIsReadyToPayRequest() )\n\t\t\t\t.then( ( response ) => {\n\t\t\t\t\tif ( response.result ) {\n\t\t\t\t\t\tthis.addGooglePayButton();\n\t\t\t\t\t\t// prefetch payment data to improve performance\n\t\t\t\t\t\tthis.prefetchGooglePaymentData();\n\t\t\t\t\t}\n\t\t\t\t} )\n\t\t\t\t.catch( ( err ) => {\n\t\t\t\t\tthis.failPayment( 'Google Pay is not ready. ' + err );\n\t\t\t\t} );\n\t\t}\n\n\t\t/**\n\t\t * Initializes the product page.\n\t\t */\n\t\tinitProductPage() {\n\t\t\tthis.uiElement = $( 'form.cart' );\n\t\t}\n\n\t\t/**\n\t\t * Initializes the cart page.\n\t\t */\n\t\tinitCartPage() {\n\t\t\tthis.uiElement = $( 'form.woocommerce-cart-form' ).parents( 'div.woocommerce' );\n\n\t\t\t// re-init if the cart totals are updated\n\t\t\t$( document.body ).on( 'updated_cart_totals', () => {\n\t\t\t\tthis.initGooglePay();\n\t\t\t} );\n\t\t}\n\n\t\t/**\n\t\t * Initializes the checkout page.\n\t\t */\n\t\tinitCheckoutPage() {\n\t\t\tthis.uiElement = $( 'form.woocommerce-checkout' );\n\t\t}\n\n\t\t/**\n\t\t * Fails the purchase based on the gateway result.\n\t\t */\n\t\tfailPayment( error ) {\n\n\t\t\tconsole.error( '[Google Pay] ' + error );\n\n\t\t\tthis.unblockUI();\n\n\t\t\tthis.renderErrors( [ this.genericError ] );\n\t\t}\n\n\t\t/**\n\t\t * Renders any new errors and bring them into the viewport.\n \t\t */\n\t\trenderErrors( errors ) {\n\n\t\t\t// hide and remove any previous errors\n\t\t\t$( '.woocommerce-error, .woocommerce-message' ).remove();\n\n\t\t\t// add errors\n\t\t\tthis.uiElement.prepend( '
    • ' + errors.join( '
    • ' ) + '
    ' );\n\n\t\t\t// unblock UI\n\t\t\tthis.uiElement.removeClass( 'processing' ).unblock();\n\n\t\t\t// scroll to top\n\t\t\t$( 'html, body' ).animate( { scrollTop: this.uiElement.offset().top - 100 }, 1000 );\n\t\t}\n\n\t\t/**\n\t\t * Blocks the payment form UI.\n\t\t */\n\t\tblockUI() {\n\t\t\tthis.uiElement.block( { message: null, overlayCSS: { background: '#fff', opacity: 0.6 } } );\n\t\t}\n\n\t\t/**\n\t\t * Unblocks the payment form UI.\n\t\t */\n\t\tunblockUI() {\n\t\t\tthis.uiElement.unblock();\n\t\t}\n\t}\n\n\t$( document.body ).trigger( 'sv_wc_google_pay_handler_v5_14_0_loaded' );\n\n} );\n"]} diff --git a/woocommerce/payment-gateway/assets/dist/frontend/sv-wc-payment-gateway-my-payment-methods.js b/woocommerce/payment-gateway/assets/dist/frontend/sv-wc-payment-gateway-my-payment-methods.js index fbc015ca9..6519bba92 100644 --- a/woocommerce/payment-gateway/assets/dist/frontend/sv-wc-payment-gateway-my-payment-methods.js +++ b/woocommerce/payment-gateway/assets/dist/frontend/sv-wc-payment-gateway-my-payment-methods.js @@ -1,4 +1,4 @@ parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcelRequire,u="function"==typeof require&&require;function f(t,n){if(!r[t]){if(!e[t]){var i="function"==typeof parcelRequire&&parcelRequire;if(!n&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=new Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[t][1][r]||r},p.cache={};var l=r[t]=new f.Module(t);e[t][0].call(l.exports,p,l,l.exports,this)}return r[t].exports;function p(e){return f(p.resolve(e))}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=r,f.parent=o,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]};for(var c=0;c0&&e(o).find("td.woocommerce-PaymentMethod--method").html(i.html()),e(o).find("td.woocommerce-PaymentMethod--title").remove()})}},{key:"remove_duplicate_default_marks",value:function(){return e(".woocommerce-MyAccount-paymentMethods").find("tr").each(function(t,n){return e(n).find("td.woocommerce-PaymentMethod--default").find("mark.default:not(:first-child)").remove()})}},{key:"edit_method",value:function(t){var n,o;if(t.preventDefault(),0!==(o=(n=e(t.currentTarget)).parents("tr")).find("input[name=plugin-id][value=".concat(this.slug,"]")).length)return o.find("div.view").hide(),o.find("div.edit").show(),o.addClass("editing"),n.text(this.i18n.cancel_button).removeClass("edit").addClass("cancel-edit").removeClass("button"),this.enable_editing_ui()}},{key:"save_method",value:function(t){var n,o,i,a=this;if(t.preventDefault(),n=e(t.currentTarget),0!==(i=n.parents("tr")).find("input[name=plugin-id][value=".concat(this.slug,"]")).length)return this.block_ui(),i.next(".error").remove(),o={action:"wc_".concat(this.id,"_save_payment_method"),nonce:this.ajax_nonce,token_id:i.find("input[name=token-id]").val(),data:i.find("input[name]").serialize()},e.post(this.ajax_url,o).done(function(e){return e.success?(null!=e.data.title&&i.find(".woocommerce-PaymentMethod--method").html(e.data.title),null!=e.data.nonce&&(a.ajax_nonce=e.data.nonce),n.siblings(".cancel-edit").removeClass("cancel-edit").addClass("edit").text(a.i18n.edit_button).addClass("button"),i.removeClass("editing"),a.disable_editing_ui()):a.display_error(i,e.data)}).fail(function(e,t,n){return a.display_error(i,n)}).always(function(){return a.unblock_ui()})}},{key:"cancel_edit",value:function(t){var n,o;if(t.preventDefault(),0!==(o=(n=e(t.currentTarget)).parents("tr")).find("input[name=plugin-id][value=".concat(this.slug,"]")).length)return o.find("div.view").show(),o.find("div.edit").hide(),o.removeClass("editing"),n.removeClass("cancel-edit").addClass("edit").text(this.i18n.edit_button).addClass("button"),this.disable_editing_ui()}},{key:"enable_editing_ui",value:function(){return e(".woocommerce-MyAccount-paymentMethods").addClass("editing"),e('.button[href*="add-payment-method"]').addClass("disabled")}},{key:"disable_editing_ui",value:function(){return e(".woocommerce-MyAccount-paymentMethods").removeClass("editing"),e('.button[href*="add-payment-method"]').removeClass("disabled")}},{key:"block_ui",value:function(){return e(".woocommerce-MyAccount-paymentMethods").parent("div").block({message:null,overlayCSS:{background:"#fff",opacity:.6}})}},{key:"unblock_ui",value:function(){return e(".woocommerce-MyAccount-paymentMethods").parent("div").unblock()}},{key:"display_error",value:function(t,n){var o,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return console.error(n),i||(i=this.i18n.save_error),o=e(".woocommerce-MyAccount-paymentMethods thead tr th").length,e(''+i+"").insertAfter(t).find("td").delay(8e3).slideUp(200)}}])}(),e(document.body).trigger("sv_wc_payment_methods_handler_v5_13_0_loaded")})}).call(this); +function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(t)}function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){for(var n=0;n0&&e(o).find("td.woocommerce-PaymentMethod--method").html(i.html()),e(o).find("td.woocommerce-PaymentMethod--title").remove()})}},{key:"remove_duplicate_default_marks",value:function(){return e(".woocommerce-MyAccount-paymentMethods").find("tr").each(function(t,n){return e(n).find("td.woocommerce-PaymentMethod--default").find("mark.default:not(:first-child)").remove()})}},{key:"edit_method",value:function(t){var n,o;if(t.preventDefault(),0!==(o=(n=e(t.currentTarget)).parents("tr")).find("input[name=plugin-id][value=".concat(this.slug,"]")).length)return o.find("div.view").hide(),o.find("div.edit").show(),o.addClass("editing"),n.text(this.i18n.cancel_button).removeClass("edit").addClass("cancel-edit").removeClass("button"),this.enable_editing_ui()}},{key:"save_method",value:function(t){var n,o,i,a=this;if(t.preventDefault(),n=e(t.currentTarget),0!==(i=n.parents("tr")).find("input[name=plugin-id][value=".concat(this.slug,"]")).length)return this.block_ui(),i.next(".error").remove(),o={action:"wc_".concat(this.id,"_save_payment_method"),nonce:this.ajax_nonce,token_id:i.find("input[name=token-id]").val(),data:i.find("input[name]").serialize()},e.post(this.ajax_url,o).done(function(e){return e.success?(null!=e.data.title&&i.find(".woocommerce-PaymentMethod--method").html(e.data.title),null!=e.data.nonce&&(a.ajax_nonce=e.data.nonce),n.siblings(".cancel-edit").removeClass("cancel-edit").addClass("edit").text(a.i18n.edit_button).addClass("button"),i.removeClass("editing"),a.disable_editing_ui()):a.display_error(i,e.data)}).fail(function(e,t,n){return a.display_error(i,n)}).always(function(){return a.unblock_ui()})}},{key:"cancel_edit",value:function(t){var n,o;if(t.preventDefault(),0!==(o=(n=e(t.currentTarget)).parents("tr")).find("input[name=plugin-id][value=".concat(this.slug,"]")).length)return o.find("div.view").show(),o.find("div.edit").hide(),o.removeClass("editing"),n.removeClass("cancel-edit").addClass("edit").text(this.i18n.edit_button).addClass("button"),this.disable_editing_ui()}},{key:"enable_editing_ui",value:function(){return e(".woocommerce-MyAccount-paymentMethods").addClass("editing"),e('.button[href*="add-payment-method"]').addClass("disabled")}},{key:"disable_editing_ui",value:function(){return e(".woocommerce-MyAccount-paymentMethods").removeClass("editing"),e('.button[href*="add-payment-method"]').removeClass("disabled")}},{key:"block_ui",value:function(){return e(".woocommerce-MyAccount-paymentMethods").parent("div").block({message:null,overlayCSS:{background:"#fff",opacity:.6}})}},{key:"unblock_ui",value:function(){return e(".woocommerce-MyAccount-paymentMethods").parent("div").unblock()}},{key:"display_error",value:function(t,n){var o,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return console.error(n),i||(i=this.i18n.save_error),o=e(".woocommerce-MyAccount-paymentMethods thead tr th").length,e(''+i+"").insertAfter(t).find("td").delay(8e3).slideUp(200)}}])}(),e(document.body).trigger("sv_wc_payment_methods_handler_v5_14_0_loaded")})}).call(this); },{}]},{},["nDDW"], null) -//# sourceMappingURL=../frontend/sv-wc-payment-gateway-my-payment-methods.js.map \ No newline at end of file +//# sourceMappingURL=../frontend/sv-wc-payment-gateway-my-payment-methods.js.map diff --git a/woocommerce/payment-gateway/assets/dist/frontend/sv-wc-payment-gateway-my-payment-methods.js.map b/woocommerce/payment-gateway/assets/dist/frontend/sv-wc-payment-gateway-my-payment-methods.js.map index ea1e2df90..c852398dc 100644 --- a/woocommerce/payment-gateway/assets/dist/frontend/sv-wc-payment-gateway-my-payment-methods.js.map +++ b/woocommerce/payment-gateway/assets/dist/frontend/sv-wc-payment-gateway-my-payment-methods.js.map @@ -1 +1 @@ -{"version":3,"sources":["frontend/sv-wc-payment-gateway-my-payment-methods.coffee"],"names":["jQuery","$","window","SV_WC_Payment_Methods_Handler_v5_13_0","args","replace_method_column","bind","remove_duplicate_default_marks","edit_method","save_method","cancel_edit","id","slug","i18n","ajax_url","ajax_nonce","on","event","row","currentTarget","parents","find","length","confirm","delete_ays","preventDefault","hasClass","each","index","element","titleColumn","remove","children","html","button","hide","show","addClass","text","cancel_button","removeClass","enable_editing_ui","data","block_ui","next","action","nonce","token_id","val","serialize","post","done","response","success","title","siblings","edit_button","disable_editing_ui","display_error","fail","jqXHR","textStatus","error","always","unblock_ui","parent","block","message","overlayCSS","background","opacity","unblock","columns","console","save_error","insertAfter","delay","slideUp","document","body","trigger","call"],"mappings":"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","file":"sv-wc-payment-gateway-my-payment-methods.js","sourceRoot":"../js","sourcesContent":["(function() {\n /*\n WooCommerce SkyVerge Payment Gateway My Payment Methods CoffeeScript\n Version 5.1.0\n\n Copyright (c) 2014-2024, SkyVerge, Inc.\n Licensed under the GNU General Public License v3.0\n http://www.gnu.org/licenses/gpl-3.0.html\n */\n jQuery(function($) {\n \"use strict\";\n // The My Payment Methods handler.\n\n // @since 5.1.0\n window.SV_WC_Payment_Methods_Handler_v5_13_0 = class SV_WC_Payment_Methods_Handler_v5_13_0 {\n // Constructs the class.\n\n // @since 5.1.0\n\n // @param [Object] args, with the properties:\n // id: [String] plugin ID\n // slug: [String] plugin slug or dasherized ID\n // i18n: [Object] localized text strings\n // ajax_url: [String] URL for AJAX requests\n // ajax_nonce: [String] nonce for AJAX requests\n constructor(args) {\n // Replace Method column content with Title column content, for FW tokens.\n\n // @since 5.8.0\n this.replace_method_column = this.replace_method_column.bind(this);\n // Removes duplicate \"Default\" marks.\n\n // They are already hidden using CSS, but should also be removed for accessibility.\n\n // @since 5.8.0\n this.remove_duplicate_default_marks = this.remove_duplicate_default_marks.bind(this);\n // Edits a payment method.\n\n // @since 5.1.0\n\n // @param [Object] event jQuery event object\n this.edit_method = this.edit_method.bind(this);\n // Saves a payment method.\n\n // @since 5.1.0\n\n // @param [Object] event jQuery event object\n this.save_method = this.save_method.bind(this);\n // Cancels/stop editing a payment method.\n\n // @since 5.1.0\n\n // @param [Object] event jQuery event object\n this.cancel_edit = this.cancel_edit.bind(this);\n this.id = args.id;\n this.slug = args.slug;\n this.i18n = args.i18n;\n this.ajax_url = args.ajax_url;\n this.ajax_nonce = args.ajax_nonce;\n // replace the \"Method\" column content for FW tokens\n this.replace_method_column();\n // remove duplicate \"Default\" marks\n this.remove_duplicate_default_marks();\n // handle the edit action\n $(\".woocommerce-MyAccount-paymentMethods\").on('click', \".woocommerce-PaymentMethod--actions .button.edit\", (event) => {\n return this.edit_method(event);\n });\n // handle the save action\n $(\".woocommerce-MyAccount-paymentMethods\").on('click', \".woocommerce-PaymentMethod--actions .button.save\", (event) => {\n return this.save_method(event);\n });\n // handle the cancel action\n $(\".woocommerce-MyAccount-paymentMethods\").on('click', \".woocommerce-PaymentMethod--actions .cancel-edit\", (event) => {\n return this.cancel_edit(event);\n });\n // handle the delete action\n $(\".woocommerce-MyAccount-paymentMethods\").on('click', \".woocommerce-PaymentMethod--actions .button.delete\", (event) => {\n var button, row;\n button = $(event.currentTarget);\n row = button.parents('tr');\n // check if the method belongs to this plugin\n if (row.find(`input[name=plugin-id][value=${this.slug}]`).length === 0) {\n return;\n }\n if (!confirm(this.i18n.delete_ays)) {\n return event.preventDefault();\n }\n });\n // don't follow the Add Payment Method button URL if it's disabled\n $('.button[href*=\"add-payment-method\"]').on('click', event(function() {\n if ($(this).hasClass('disabled')) {\n return event.preventDefault();\n }\n }));\n }\n\n replace_method_column() {\n return $('.woocommerce-MyAccount-paymentMethods').find('tr').each((index, element) => {\n var titleColumn;\n // check if the method belongs to this plugin\n if ($(element).find(`input[name=plugin-id][value=${this.slug}]`).length === 0) {\n return;\n }\n // delete the Title header\n $(element).find('th.woocommerce-PaymentMethod--title').remove();\n titleColumn = $(element).find('td.woocommerce-PaymentMethod--title');\n // Title column is not empty, this is a FW token\n if (titleColumn.children().length > 0) {\n // replace Method column\n $(element).find('td.woocommerce-PaymentMethod--method').html(titleColumn.html());\n }\n // delete Title column\n return $(element).find('td.woocommerce-PaymentMethod--title').remove();\n });\n }\n\n remove_duplicate_default_marks() {\n return $('.woocommerce-MyAccount-paymentMethods').find('tr').each((index, element) => {\n return $(element).find('td.woocommerce-PaymentMethod--default').find('mark.default:not(:first-child)').remove();\n });\n }\n\n edit_method(event) {\n var button, row;\n event.preventDefault();\n button = $(event.currentTarget);\n row = button.parents('tr');\n // check if the method belongs to this plugin\n if (row.find(`input[name=plugin-id][value=${this.slug}]`).length === 0) {\n return;\n }\n row.find('div.view').hide();\n row.find('div.edit').show();\n row.addClass('editing');\n // change the Edit button to \"Cancel\"\n button.text(this.i18n.cancel_button).removeClass('edit').addClass('cancel-edit').removeClass('button');\n return this.enable_editing_ui();\n }\n\n save_method(event) {\n var button, data, row;\n event.preventDefault();\n button = $(event.currentTarget);\n row = button.parents('tr');\n // check if the method belongs to this plugin\n if (row.find(`input[name=plugin-id][value=${this.slug}]`).length === 0) {\n return;\n }\n this.block_ui();\n // remove any previous errors\n row.next('.error').remove();\n data = {\n action: `wc_${this.id}_save_payment_method`,\n nonce: this.ajax_nonce,\n token_id: row.find('input[name=token-id]').val(),\n data: row.find('input[name]').serialize()\n };\n return $.post(this.ajax_url, data).done((response) => {\n if (!response.success) {\n return this.display_error(row, response.data);\n }\n if (response.data.title != null) {\n row.find('.woocommerce-PaymentMethod--method').html(response.data.title);\n }\n if (response.data.nonce != null) {\n this.ajax_nonce = response.data.nonce;\n }\n // change the \"Cancel\" button back to \"Edit\"\n button.siblings('.cancel-edit').removeClass('cancel-edit').addClass('edit').text(this.i18n.edit_button).addClass('button');\n row.removeClass('editing');\n return this.disable_editing_ui();\n }).fail((jqXHR, textStatus, error) => {\n return this.display_error(row, error);\n }).always(() => {\n return this.unblock_ui();\n });\n }\n\n cancel_edit(event) {\n var button, row;\n event.preventDefault();\n button = $(event.currentTarget);\n row = button.parents('tr');\n // check if the method belongs to this plugin\n if (row.find(`input[name=plugin-id][value=${this.slug}]`).length === 0) {\n return;\n }\n row.find('div.view').show();\n row.find('div.edit').hide();\n row.removeClass('editing');\n // change the \"Cancel\" button back to \"Edit\"\n button.removeClass('cancel-edit').addClass('edit').text(this.i18n.edit_button).addClass('button');\n return this.disable_editing_ui();\n }\n\n // Sets the page UI to the \"editing\" state.\n\n // This brings proper focus to the method being edited and prevents\n // other available buttons/actions until the editing is finished or cancelled.\n\n // @since 5.1.1\n enable_editing_ui() {\n // set the methods table as 'editing'\n $(\".woocommerce-MyAccount-paymentMethods\").addClass('editing');\n // disable the Add Payment Method button\n return $('.button[href*=\"add-payment-method\"]').addClass('disabled');\n }\n\n // Sets the page UI back to the default state.\n\n // @since 5.1.1\n disable_editing_ui() {\n // removes the methods table's \"editing\" status\n $(\".woocommerce-MyAccount-paymentMethods\").removeClass('editing');\n // re-enable the Add Payment Method button\n return $('.button[href*=\"add-payment-method\"]').removeClass('disabled');\n }\n\n // Blocks the payment methods table UI.\n\n // @since 5.1.0\n block_ui() {\n return $(\".woocommerce-MyAccount-paymentMethods\").parent('div').block({\n message: null,\n overlayCSS: {\n background: '#fff',\n opacity: 0.6\n }\n });\n }\n\n // Unblocks the payment methods table UI.\n\n // @since 5.1.0\n unblock_ui() {\n return $(\".woocommerce-MyAccount-paymentMethods\").parent('div').unblock();\n }\n\n // Displays an error message to the user.\n\n // @since 5.1.0\n\n // @param [Object] row payment method table row\n // @param [String] error raw error message\n // @param [String] message user error message\n display_error(row, error, message = '') {\n var columns;\n console.error(error);\n if (!message) {\n message = this.i18n.save_error;\n }\n columns = $(\".woocommerce-MyAccount-paymentMethods thead tr th\").length;\n return $('' + message + '').insertAfter(row).find('td').delay(8000).slideUp(200);\n }\n\n };\n // dispatch loaded event\n return $(document.body).trigger('sv_wc_payment_methods_handler_v5_13_0_loaded');\n });\n\n}).call(this);\n"]} \ No newline at end of file +{"version":3,"sources":["frontend/sv-wc-payment-gateway-my-payment-methods.coffee"],"names":["jQuery","$","window","SV_WC_Payment_Methods_Handler_v5_14_0","args","replace_method_column","bind","remove_duplicate_default_marks","edit_method","save_method","cancel_edit","id","slug","i18n","ajax_url","ajax_nonce","on","event","row","currentTarget","parents","find","length","confirm","delete_ays","preventDefault","hasClass","each","index","element","titleColumn","remove","children","html","button","hide","show","addClass","text","cancel_button","removeClass","enable_editing_ui","data","block_ui","next","action","nonce","token_id","val","serialize","post","done","response","success","title","siblings","edit_button","disable_editing_ui","display_error","fail","jqXHR","textStatus","error","always","unblock_ui","parent","block","message","overlayCSS","background","opacity","unblock","columns","console","save_error","insertAfter","delay","slideUp","document","body","trigger","call"],"mappings":"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","file":"sv-wc-payment-gateway-my-payment-methods.js","sourceRoot":"../js","sourcesContent":["(function() {\n /*\n WooCommerce SkyVerge Payment Gateway My Payment Methods CoffeeScript\n Version 5.1.0\n\n Copyright (c) 2014-2024, SkyVerge, Inc.\n Licensed under the GNU General Public License v3.0\n http://www.gnu.org/licenses/gpl-3.0.html\n */\n jQuery(function($) {\n \"use strict\";\n // The My Payment Methods handler.\n\n // @since 5.1.0\n window.SV_WC_Payment_Methods_Handler_v5_14_0 = class SV_WC_Payment_Methods_Handler_v5_14_0 {\n // Constructs the class.\n\n // @since 5.1.0\n\n // @param [Object] args, with the properties:\n // id: [String] plugin ID\n // slug: [String] plugin slug or dasherized ID\n // i18n: [Object] localized text strings\n // ajax_url: [String] URL for AJAX requests\n // ajax_nonce: [String] nonce for AJAX requests\n constructor(args) {\n // Replace Method column content with Title column content, for FW tokens.\n\n // @since 5.8.0\n this.replace_method_column = this.replace_method_column.bind(this);\n // Removes duplicate \"Default\" marks.\n\n // They are already hidden using CSS, but should also be removed for accessibility.\n\n // @since 5.8.0\n this.remove_duplicate_default_marks = this.remove_duplicate_default_marks.bind(this);\n // Edits a payment method.\n\n // @since 5.1.0\n\n // @param [Object] event jQuery event object\n this.edit_method = this.edit_method.bind(this);\n // Saves a payment method.\n\n // @since 5.1.0\n\n // @param [Object] event jQuery event object\n this.save_method = this.save_method.bind(this);\n // Cancels/stop editing a payment method.\n\n // @since 5.1.0\n\n // @param [Object] event jQuery event object\n this.cancel_edit = this.cancel_edit.bind(this);\n this.id = args.id;\n this.slug = args.slug;\n this.i18n = args.i18n;\n this.ajax_url = args.ajax_url;\n this.ajax_nonce = args.ajax_nonce;\n // replace the \"Method\" column content for FW tokens\n this.replace_method_column();\n // remove duplicate \"Default\" marks\n this.remove_duplicate_default_marks();\n // handle the edit action\n $(\".woocommerce-MyAccount-paymentMethods\").on('click', \".woocommerce-PaymentMethod--actions .button.edit\", (event) => {\n return this.edit_method(event);\n });\n // handle the save action\n $(\".woocommerce-MyAccount-paymentMethods\").on('click', \".woocommerce-PaymentMethod--actions .button.save\", (event) => {\n return this.save_method(event);\n });\n // handle the cancel action\n $(\".woocommerce-MyAccount-paymentMethods\").on('click', \".woocommerce-PaymentMethod--actions .cancel-edit\", (event) => {\n return this.cancel_edit(event);\n });\n // handle the delete action\n $(\".woocommerce-MyAccount-paymentMethods\").on('click', \".woocommerce-PaymentMethod--actions .button.delete\", (event) => {\n var button, row;\n button = $(event.currentTarget);\n row = button.parents('tr');\n // check if the method belongs to this plugin\n if (row.find(`input[name=plugin-id][value=${this.slug}]`).length === 0) {\n return;\n }\n if (!confirm(this.i18n.delete_ays)) {\n return event.preventDefault();\n }\n });\n // don't follow the Add Payment Method button URL if it's disabled\n $('.button[href*=\"add-payment-method\"]').on('click', event(function() {\n if ($(this).hasClass('disabled')) {\n return event.preventDefault();\n }\n }));\n }\n\n replace_method_column() {\n return $('.woocommerce-MyAccount-paymentMethods').find('tr').each((index, element) => {\n var titleColumn;\n // check if the method belongs to this plugin\n if ($(element).find(`input[name=plugin-id][value=${this.slug}]`).length === 0) {\n return;\n }\n // delete the Title header\n $(element).find('th.woocommerce-PaymentMethod--title').remove();\n titleColumn = $(element).find('td.woocommerce-PaymentMethod--title');\n // Title column is not empty, this is a FW token\n if (titleColumn.children().length > 0) {\n // replace Method column\n $(element).find('td.woocommerce-PaymentMethod--method').html(titleColumn.html());\n }\n // delete Title column\n return $(element).find('td.woocommerce-PaymentMethod--title').remove();\n });\n }\n\n remove_duplicate_default_marks() {\n return $('.woocommerce-MyAccount-paymentMethods').find('tr').each((index, element) => {\n return $(element).find('td.woocommerce-PaymentMethod--default').find('mark.default:not(:first-child)').remove();\n });\n }\n\n edit_method(event) {\n var button, row;\n event.preventDefault();\n button = $(event.currentTarget);\n row = button.parents('tr');\n // check if the method belongs to this plugin\n if (row.find(`input[name=plugin-id][value=${this.slug}]`).length === 0) {\n return;\n }\n row.find('div.view').hide();\n row.find('div.edit').show();\n row.addClass('editing');\n // change the Edit button to \"Cancel\"\n button.text(this.i18n.cancel_button).removeClass('edit').addClass('cancel-edit').removeClass('button');\n return this.enable_editing_ui();\n }\n\n save_method(event) {\n var button, data, row;\n event.preventDefault();\n button = $(event.currentTarget);\n row = button.parents('tr');\n // check if the method belongs to this plugin\n if (row.find(`input[name=plugin-id][value=${this.slug}]`).length === 0) {\n return;\n }\n this.block_ui();\n // remove any previous errors\n row.next('.error').remove();\n data = {\n action: `wc_${this.id}_save_payment_method`,\n nonce: this.ajax_nonce,\n token_id: row.find('input[name=token-id]').val(),\n data: row.find('input[name]').serialize()\n };\n return $.post(this.ajax_url, data).done((response) => {\n if (!response.success) {\n return this.display_error(row, response.data);\n }\n if (response.data.title != null) {\n row.find('.woocommerce-PaymentMethod--method').html(response.data.title);\n }\n if (response.data.nonce != null) {\n this.ajax_nonce = response.data.nonce;\n }\n // change the \"Cancel\" button back to \"Edit\"\n button.siblings('.cancel-edit').removeClass('cancel-edit').addClass('edit').text(this.i18n.edit_button).addClass('button');\n row.removeClass('editing');\n return this.disable_editing_ui();\n }).fail((jqXHR, textStatus, error) => {\n return this.display_error(row, error);\n }).always(() => {\n return this.unblock_ui();\n });\n }\n\n cancel_edit(event) {\n var button, row;\n event.preventDefault();\n button = $(event.currentTarget);\n row = button.parents('tr');\n // check if the method belongs to this plugin\n if (row.find(`input[name=plugin-id][value=${this.slug}]`).length === 0) {\n return;\n }\n row.find('div.view').show();\n row.find('div.edit').hide();\n row.removeClass('editing');\n // change the \"Cancel\" button back to \"Edit\"\n button.removeClass('cancel-edit').addClass('edit').text(this.i18n.edit_button).addClass('button');\n return this.disable_editing_ui();\n }\n\n // Sets the page UI to the \"editing\" state.\n\n // This brings proper focus to the method being edited and prevents\n // other available buttons/actions until the editing is finished or cancelled.\n\n // @since 5.1.1\n enable_editing_ui() {\n // set the methods table as 'editing'\n $(\".woocommerce-MyAccount-paymentMethods\").addClass('editing');\n // disable the Add Payment Method button\n return $('.button[href*=\"add-payment-method\"]').addClass('disabled');\n }\n\n // Sets the page UI back to the default state.\n\n // @since 5.1.1\n disable_editing_ui() {\n // removes the methods table's \"editing\" status\n $(\".woocommerce-MyAccount-paymentMethods\").removeClass('editing');\n // re-enable the Add Payment Method button\n return $('.button[href*=\"add-payment-method\"]').removeClass('disabled');\n }\n\n // Blocks the payment methods table UI.\n\n // @since 5.1.0\n block_ui() {\n return $(\".woocommerce-MyAccount-paymentMethods\").parent('div').block({\n message: null,\n overlayCSS: {\n background: '#fff',\n opacity: 0.6\n }\n });\n }\n\n // Unblocks the payment methods table UI.\n\n // @since 5.1.0\n unblock_ui() {\n return $(\".woocommerce-MyAccount-paymentMethods\").parent('div').unblock();\n }\n\n // Displays an error message to the user.\n\n // @since 5.1.0\n\n // @param [Object] row payment method table row\n // @param [String] error raw error message\n // @param [String] message user error message\n display_error(row, error, message = '') {\n var columns;\n console.error(error);\n if (!message) {\n message = this.i18n.save_error;\n }\n columns = $(\".woocommerce-MyAccount-paymentMethods thead tr th\").length;\n return $('' + message + '').insertAfter(row).find('td').delay(8000).slideUp(200);\n }\n\n };\n // dispatch loaded event\n return $(document.body).trigger('sv_wc_payment_methods_handler_v5_14_0_loaded');\n });\n\n}).call(this);\n"]} diff --git a/woocommerce/payment-gateway/assets/dist/frontend/sv-wc-payment-gateway-payment-form.js b/woocommerce/payment-gateway/assets/dist/frontend/sv-wc-payment-gateway-payment-form.js index 3d6522020..e81a177e5 100644 --- a/woocommerce/payment-gateway/assets/dist/frontend/sv-wc-payment-gateway-payment-form.js +++ b/woocommerce/payment-gateway/assets/dist/frontend/sv-wc-payment-gateway-payment-form.js @@ -1,4 +1,4 @@ parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcelRequire,u="function"==typeof require&&require;function f(t,n){if(!r[t]){if(!e[t]){var i="function"==typeof parcelRequire&&parcelRequire;if(!n&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=new Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[t][1][r]||r},p.cache={};var l=r[t]=new f.Module(t);e[t][0].call(l.exports,p,l,l.exports,this)}return r[t].exports;function p(e){return f(p.resolve(e))}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=r,f.parent=o,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]};for(var c=0;c0&&e.trigger("change"),r.val()&&r.val().length>0&&r.trigger("change"),t.val()&&t.val().length>0&&t.trigger("change"),a(".js-sv-wc-payment-gateway-credit-card-form-input").on("change paste keyup",function(){return n.do_inline_credit_card_validation()})}},{key:"do_inline_credit_card_validation",value:function(){var t,r,n,i;return t=a(".js-sv-wc-payment-gateway-credit-card-form-account-number"),i=a(".js-sv-wc-payment-gateway-credit-card-form-expiry"),n=a(".js-sv-wc-payment-gateway-credit-card-form-csc"),r=a.payment.cardType(t.val()),e.call(this.enabled_card_types,r)<0?t.addClass("invalid-card-type"):t.removeClass("invalid-card-type"),a.payment.validateCardExpiry(i.payment("cardExpiryVal"))?i.addClass("identified"):i.removeClass("identified"),a.payment.validateCardCVC(n.val())?n.addClass("identified"):n.removeClass("identified")}},{key:"validate_card_data",value:function(){var e,t,r,n;return r=[],null!=(t=this.payment_fields.find(".js-sv-wc-payment-gateway-credit-card-form-csc").val())&&(t?(/\D/.test(t)&&r.push(this.params.cvv_digits_invalid),(t.length<3||t.length>4)&&r.push(this.params.cvv_length_invalid)):this.csc_required&&(this.saved_payment_method_selected&&!this.csc_required_for_tokens||r.push(this.params.cvv_missing))),this.saved_payment_method_selected||(e=this.payment_fields.find(".js-sv-wc-payment-gateway-credit-card-form-account-number").val(),n=a.payment.cardExpiryVal(this.payment_fields.find(".js-sv-wc-payment-gateway-credit-card-form-expiry").val()),(e=e.replace(/-|\s/g,""))?((e.length<12||e.length>19)&&r.push(this.params.card_number_length_invalid),/\D/.test(e)&&r.push(this.params.card_number_digits_invalid),a.payment.validateCardNumber(e)||r.push(this.params.card_number_invalid)):r.push(this.params.card_number_missing),a.payment.validateCardExpiry(n)||r.push(this.params.card_exp_date_invalid)),r.length>0?(this.render_errors(r),!1):(this.payment_fields.find(".js-sv-wc-payment-gateway-credit-card-form-account-number").val(e),!0)}},{key:"validate_account_data",value:function(){var e,t,a;return!!this.saved_payment_method_selected||(t=[],a=this.payment_fields.find(".js-sv-wc-payment-gateway-echeck-form-routing-number").val(),e=this.payment_fields.find(".js-sv-wc-payment-gateway-echeck-form-account-number").val(),a?(9!==a.length&&t.push(this.params.routing_number_length_invalid),/\D/.test(a)&&t.push(this.params.routing_number_digits_invalid)):t.push(this.params.routing_number_missing),e?((e.length<3||e.length>17)&&t.push(this.params.account_number_length_invalid),/\D/.test(e)&&t.push(this.params.account_number_invalid)):t.push(this.params.account_number_missing),t.length>0?(this.render_errors(t),!1):(this.payment_fields.find(".js-sv-wc-payment-gateway-echeck-form-account-number").val(e),!0))}},{key:"render_errors",value:function(e){return a(".woocommerce-error, .woocommerce-message").remove(),this.form.prepend('
    • '+e.join("
    • ")+"
    "),this.form.removeClass("processing").unblock(),this.form.find(".input-text, select").blur(),a("html, body").animate({scrollTop:this.form.offset().top-100},1e3)}},{key:"handle_saved_payment_methods",value:function(){var e,t,r,n;if(n=this.id_dasherized,this.csc_required,r=this.csc_required_for_tokens,t=a("div.js-wc-".concat(n,"-new-payment-method-form")),e=t.find(".js-sv-wc-payment-gateway-credit-card-form-csc").closest(".form-row"),a("input.js-wc-".concat(this.id_dasherized,"-payment-token")).on("change",function(){if(a("input.js-wc-".concat(n,"-payment-token:checked")).val()){if(t.slideUp(200),r)return e.removeClass("form-row-last").addClass("form-row-first"),t.after(e)}else if(t.slideDown(200),r)return e.removeClass("form-row-first").addClass("form-row-last"),t.find(".js-sv-wc-payment-gateway-credit-card-form-expiry").closest(".form-row").after(e)}).change(),a("input#createaccount").on("change",function(){var e;return e=a("input.js-wc-".concat(n,"-tokenize-payment-method")).closest("p.form-row"),a(this).is(":checked")?(e.slideDown(),e.next().show()):(e.hide(),e.next().hide())}),!a("input#createaccount").is(":checked"))return a("input#createaccount").change()}},{key:"handle_sample_check_hint",value:function(){var e;return(e=this.payment_fields.find(".js-sv-wc-payment-gateway-echeck-form-sample-check")).is(":visible")?e.slideUp():e.slideDown()}},{key:"block_ui",value:function(){return this.form.block({message:null,overlayCSS:{background:"#fff",opacity:.6}})}},{key:"unblock_ui",value:function(){return this.form.unblock()}}])}(),a(document.body).trigger("sv_wc_payment_form_handler_v5_13_0_loaded")})}).call(this); +function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(t)}function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){for(var a=0;a0&&e.trigger("change"),r.val()&&r.val().length>0&&r.trigger("change"),t.val()&&t.val().length>0&&t.trigger("change"),a(".js-sv-wc-payment-gateway-credit-card-form-input").on("change paste keyup",function(){return n.do_inline_credit_card_validation()})}},{key:"do_inline_credit_card_validation",value:function(){var t,r,n,i;return t=a(".js-sv-wc-payment-gateway-credit-card-form-account-number"),i=a(".js-sv-wc-payment-gateway-credit-card-form-expiry"),n=a(".js-sv-wc-payment-gateway-credit-card-form-csc"),r=a.payment.cardType(t.val()),e.call(this.enabled_card_types,r)<0?t.addClass("invalid-card-type"):t.removeClass("invalid-card-type"),a.payment.validateCardExpiry(i.payment("cardExpiryVal"))?i.addClass("identified"):i.removeClass("identified"),a.payment.validateCardCVC(n.val())?n.addClass("identified"):n.removeClass("identified")}},{key:"validate_card_data",value:function(){var e,t,r,n;return r=[],null!=(t=this.payment_fields.find(".js-sv-wc-payment-gateway-credit-card-form-csc").val())&&(t?(/\D/.test(t)&&r.push(this.params.cvv_digits_invalid),(t.length<3||t.length>4)&&r.push(this.params.cvv_length_invalid)):this.csc_required&&(this.saved_payment_method_selected&&!this.csc_required_for_tokens||r.push(this.params.cvv_missing))),this.saved_payment_method_selected||(e=this.payment_fields.find(".js-sv-wc-payment-gateway-credit-card-form-account-number").val(),n=a.payment.cardExpiryVal(this.payment_fields.find(".js-sv-wc-payment-gateway-credit-card-form-expiry").val()),(e=e.replace(/-|\s/g,""))?((e.length<12||e.length>19)&&r.push(this.params.card_number_length_invalid),/\D/.test(e)&&r.push(this.params.card_number_digits_invalid),a.payment.validateCardNumber(e)||r.push(this.params.card_number_invalid)):r.push(this.params.card_number_missing),a.payment.validateCardExpiry(n)||r.push(this.params.card_exp_date_invalid)),r.length>0?(this.render_errors(r),!1):(this.payment_fields.find(".js-sv-wc-payment-gateway-credit-card-form-account-number").val(e),!0)}},{key:"validate_account_data",value:function(){var e,t,a;return!!this.saved_payment_method_selected||(t=[],a=this.payment_fields.find(".js-sv-wc-payment-gateway-echeck-form-routing-number").val(),e=this.payment_fields.find(".js-sv-wc-payment-gateway-echeck-form-account-number").val(),a?(9!==a.length&&t.push(this.params.routing_number_length_invalid),/\D/.test(a)&&t.push(this.params.routing_number_digits_invalid)):t.push(this.params.routing_number_missing),e?((e.length<3||e.length>17)&&t.push(this.params.account_number_length_invalid),/\D/.test(e)&&t.push(this.params.account_number_invalid)):t.push(this.params.account_number_missing),t.length>0?(this.render_errors(t),!1):(this.payment_fields.find(".js-sv-wc-payment-gateway-echeck-form-account-number").val(e),!0))}},{key:"render_errors",value:function(e){return a(".woocommerce-error, .woocommerce-message").remove(),this.form.prepend('
    • '+e.join("
    • ")+"
    "),this.form.removeClass("processing").unblock(),this.form.find(".input-text, select").blur(),a("html, body").animate({scrollTop:this.form.offset().top-100},1e3)}},{key:"handle_saved_payment_methods",value:function(){var e,t,r,n;if(n=this.id_dasherized,this.csc_required,r=this.csc_required_for_tokens,t=a("div.js-wc-".concat(n,"-new-payment-method-form")),e=t.find(".js-sv-wc-payment-gateway-credit-card-form-csc").closest(".form-row"),a("input.js-wc-".concat(this.id_dasherized,"-payment-token")).on("change",function(){if(a("input.js-wc-".concat(n,"-payment-token:checked")).val()){if(t.slideUp(200),r)return e.removeClass("form-row-last").addClass("form-row-first"),t.after(e)}else if(t.slideDown(200),r)return e.removeClass("form-row-first").addClass("form-row-last"),t.find(".js-sv-wc-payment-gateway-credit-card-form-expiry").closest(".form-row").after(e)}).change(),a("input#createaccount").on("change",function(){var e;return e=a("input.js-wc-".concat(n,"-tokenize-payment-method")).closest("p.form-row"),a(this).is(":checked")?(e.slideDown(),e.next().show()):(e.hide(),e.next().hide())}),!a("input#createaccount").is(":checked"))return a("input#createaccount").change()}},{key:"handle_sample_check_hint",value:function(){var e;return(e=this.payment_fields.find(".js-sv-wc-payment-gateway-echeck-form-sample-check")).is(":visible")?e.slideUp():e.slideDown()}},{key:"block_ui",value:function(){return this.form.block({message:null,overlayCSS:{background:"#fff",opacity:.6}})}},{key:"unblock_ui",value:function(){return this.form.unblock()}}])}(),a(document.body).trigger("sv_wc_payment_form_handler_v5_14_0_loaded")})}).call(this); },{}]},{},["7JA8"], null) -//# sourceMappingURL=../frontend/sv-wc-payment-gateway-payment-form.js.map \ No newline at end of file +//# sourceMappingURL=../frontend/sv-wc-payment-gateway-payment-form.js.map diff --git a/woocommerce/payment-gateway/assets/dist/frontend/sv-wc-payment-gateway-payment-form.js.map b/woocommerce/payment-gateway/assets/dist/frontend/sv-wc-payment-gateway-payment-form.js.map index 7206dd600..939fc8f84 100644 --- a/woocommerce/payment-gateway/assets/dist/frontend/sv-wc-payment-gateway-payment-form.js.map +++ b/woocommerce/payment-gateway/assets/dist/frontend/sv-wc-payment-gateway-payment-form.js.map @@ -1 +1 @@ -{"version":3,"sources":["frontend/sv-wc-payment-gateway-payment-form.coffee"],"names":["indexOf","jQuery","$","window","SV_WC_Payment_Form_Handler_v5_13_0","args","id","id_dasherized","plugin_id","type","csc_required","csc_required_for_tokens","enabled_card_types","length","form","handle_checkout_page","handle_pay_page","console","log","handle_add_payment_method_page","params","on","handle_sample_check_hint","document","trigger","instance","body","format_credit_card_inputs","set_payment_fields","handle_saved_payment_methods","validate_payment_data","submit","val","$required_fields","payment_fields","find","each","i","input","handler","valid","is","saved_payment_method_selected","validate_card_data","validate_account_data","triggerHandler","payment_form","passed_validation","$card_number","$csc","$expiry","payment","do_inline_credit_card_validation","$card_type","cardType","call","addClass","removeClass","validateCardExpiry","validateCardCVC","account_number","csc","errors","expiry","test","push","cvv_digits_invalid","cvv_length_invalid","cvv_missing","cardExpiryVal","replace","card_number_length_invalid","card_number_digits_invalid","validateCardNumber","card_number_invalid","card_number_missing","card_exp_date_invalid","render_errors","routing_number","routing_number_length_invalid","routing_number_digits_invalid","routing_number_missing","account_number_length_invalid","account_number_invalid","account_number_missing","remove","prepend","join","unblock","blur","animate","scrollTop","offset","top","$csc_field","$new_payment_method_selection","closest","tokenized_payment_method_selected","slideUp","after","slideDown","change","$parent_row","next","show","hide","$sample_check","block","message","overlayCSS","background","opacity"],"mappings":"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","file":"sv-wc-payment-gateway-payment-form.js","sourceRoot":"../js","sourcesContent":["(function() {\n /*\n WooCommerce SkyVerge Payment Gateway Framework Payment Form CoffeeScript\n Version 4.3.0\n\n Copyright (c) 2014-2024, SkyVerge, Inc.\n Licensed under the GNU General Public License v3.0\n http://www.gnu.org/licenses/gpl-3.0.html\n */\n var indexOf = [].indexOf;\n\n jQuery(function($) {\n \"use strict\";\n window.SV_WC_Payment_Form_Handler_v5_13_0 = class SV_WC_Payment_Form_Handler_v5_13_0 {\n // Public: Instantiate Payment Form Handler\n\n // args - object with properties:\n // id - gateway ID\n // id_dasherized - gateway ID dasherized\n // plugin_id - plugin ID\n // type - gateway type, either `credit-card` or `echeck`\n // csc_required - true if the gateway requires the CSC field to be displayed\n\n // Returns SV_WC_Payment_Form_Handler_v5_13_0 instance\n constructor(args) {\n this.id = args.id;\n this.id_dasherized = args.id_dasherized;\n this.plugin_id = args.plugin_id;\n this.type = args.type;\n this.csc_required = args.csc_required;\n this.csc_required_for_tokens = args.csc_required_for_tokens;\n this.enabled_card_types = args.enabled_card_types;\n // which payment form?\n if ($('form.checkout').length) {\n this.form = $('form.checkout');\n this.handle_checkout_page();\n } else if ($('form#order_review').length) {\n this.form = $('form#order_review');\n this.handle_pay_page();\n } else if ($('form#add_payment_method').length) {\n this.form = $('form#add_payment_method');\n this.handle_add_payment_method_page();\n } else {\n console.log('No payment form found!');\n return;\n }\n // localized error messages\n this.params = window[\"sv_wc_payment_gateway_payment_form_params\"];\n if (this.type === 'echeck') {\n // handle sample check image hint\n this.form.on('click', '.js-sv-wc-payment-gateway-echeck-form-check-hint, .js-sv-wc-payment-gateway-echeck-form-sample-check', () => {\n return this.handle_sample_check_hint();\n });\n }\n $(document).trigger('sv_wc_payment_form_handler_init', {\n id: this.id,\n instance: this\n });\n }\n\n // Public: Handle required actions on the checkout page\n\n // Returns nothing.\n handle_checkout_page() {\n if (this.type === 'credit-card') {\n // format/validate credit card inputs using jQuery.payment\n $(document.body).on('updated_checkout', () => {\n return this.format_credit_card_inputs();\n });\n }\n // updated payment fields jQuery object on each checkout update (prevents stale data)\n $(document.body).on('updated_checkout', () => {\n return this.set_payment_fields();\n });\n // handle saved payment methods\n // note on the checkout page, this is bound to `updated_checkout` so it\n // fires even when other parts of the checkout are changed\n $(document.body).on('updated_checkout', () => {\n return this.handle_saved_payment_methods();\n });\n // validate payment data before order is submitted\n return this.form.on(`checkout_place_order_${this.id}`, () => {\n return this.validate_payment_data();\n });\n }\n\n // Public: Handle required actions on the Order > Pay page\n\n // Returns nothing.\n handle_pay_page() {\n this.set_payment_fields();\n // format/validate credit card inputs using jQuery.payment\n if (this.type === 'credit-card') {\n this.format_credit_card_inputs();\n }\n // handle saved payment methods\n this.handle_saved_payment_methods();\n // validate payment data before order is submitted\n return this.form.submit(() => {\n if ($('#order_review input[name=payment_method]:checked').val() === this.id) {\n // but only when one of our payment gateways is selected\n return this.validate_payment_data();\n }\n });\n }\n\n // Public: Handle required actions on the Add Payment Method page\n\n // Returns nothing.\n handle_add_payment_method_page() {\n this.set_payment_fields();\n // format/validate credit card inputs using jQuery.payment\n if (this.type === 'credit-card') {\n this.format_credit_card_inputs();\n }\n // validate payment data before order is submitted\n return this.form.submit(() => {\n if ($('#add_payment_method input[name=payment_method]:checked').val() === this.id) {\n // but only when one of our payment gateways is selected\n return this.validate_payment_data();\n }\n });\n }\n\n // Public: Set payment fields class variable, this is done\n // during the updated_checkout event as otherwise the reference to\n // the checkout fields becomes stale (somehow ¯\\_(ツ)_/¯)\n\n // This ensures payment fields are not marked as \"invalid\" before the customer has interacted with them.\n\n // Returns nothing.\n set_payment_fields() {\n var $required_fields;\n this.payment_fields = $(`.payment_method_${this.id}`);\n $required_fields = this.payment_fields.find('.validate-required .input-text');\n return $required_fields.each((i, input) => {\n // if any of the required fields have a value, bail this loop and proceed with WooCommerce validation\n if ($(input).val()) {\n return false;\n }\n // otherwise remove all validation result classes from the inputs, since the form is freshly loaded\n return $(input).trigger('input');\n });\n }\n\n // Public: Validate Payment data when order is placed\n\n // Returns boolean, true if payment data is valid, false otherwise\n validate_payment_data() {\n var handler, valid;\n if (this.form.is('.processing')) {\n // bail when already processing\n return false;\n }\n this.saved_payment_method_selected = this.payment_fields.find('.js-sv-wc-payment-gateway-payment-token:checked').val();\n // perform internal validations (all fields present & valid, etc)\n valid = this.type === 'credit-card' ? this.validate_card_data() : this.validate_account_data();\n // let gateways perform their own validation prior to form submission\n handler = $(document.body).triggerHandler('sv_wc_payment_form_valid_payment_data', {\n payment_form: this,\n passed_validation: valid\n }) !== false;\n return valid && handler;\n }\n\n // Public: format card data using jQuery.Payment\n\n // Returns nothing.\n format_credit_card_inputs() {\n var $card_number, $csc, $expiry;\n $card_number = $('.js-sv-wc-payment-gateway-credit-card-form-account-number').payment('formatCardNumber');\n $expiry = $('.js-sv-wc-payment-gateway-credit-card-form-expiry').payment('formatCardExpiry');\n $csc = $('.js-sv-wc-payment-gateway-credit-card-form-csc').payment('formatCardCVC');\n if ($card_number.val() && $card_number.val().length > 0) {\n $card_number.trigger('change');\n }\n if ($expiry.val() && $expiry.val().length > 0) {\n $expiry.trigger('change');\n }\n if ($csc.val() && $csc.val().length > 0) {\n $csc.trigger('change');\n }\n // perform inline validation on credit card inputs\n return $('.js-sv-wc-payment-gateway-credit-card-form-input').on('change paste keyup', () => {\n return this.do_inline_credit_card_validation();\n });\n }\n\n // Public: perform inline validation on credit card fields\n\n // Returns nothing.\n do_inline_credit_card_validation() {\n var $card_number, $card_type, $csc, $expiry;\n $card_number = $('.js-sv-wc-payment-gateway-credit-card-form-account-number');\n $expiry = $('.js-sv-wc-payment-gateway-credit-card-form-expiry');\n $csc = $('.js-sv-wc-payment-gateway-credit-card-form-csc');\n $card_type = $.payment.cardType($card_number.val());\n if (indexOf.call(this.enabled_card_types, $card_type) < 0) {\n $card_number.addClass('invalid-card-type');\n } else {\n $card_number.removeClass('invalid-card-type');\n }\n if ($.payment.validateCardExpiry($expiry.payment('cardExpiryVal'))) {\n $expiry.addClass('identified');\n } else {\n $expiry.removeClass('identified');\n }\n if ($.payment.validateCardCVC($csc.val())) {\n return $csc.addClass('identified');\n } else {\n return $csc.removeClass('identified');\n }\n }\n\n // Public: Perform validation on the credit card info entered\n\n // Return boolean, true if credit card info is valid, false otherwise\n validate_card_data() {\n var account_number, csc, errors, expiry;\n errors = [];\n csc = this.payment_fields.find('.js-sv-wc-payment-gateway-credit-card-form-csc').val();\n // always validate the CSC if present\n if (csc != null) {\n if (csc) {\n if (/\\D/.test(csc)) {\n errors.push(this.params.cvv_digits_invalid);\n }\n if (csc.length < 3 || csc.length > 4) {\n errors.push(this.params.cvv_length_invalid);\n }\n } else if (this.csc_required) {\n if (!this.saved_payment_method_selected || this.csc_required_for_tokens) {\n errors.push(this.params.cvv_missing);\n }\n }\n }\n // Only validate the other CC fields if necessary\n if (!this.saved_payment_method_selected) {\n account_number = this.payment_fields.find('.js-sv-wc-payment-gateway-credit-card-form-account-number').val();\n expiry = $.payment.cardExpiryVal(this.payment_fields.find('.js-sv-wc-payment-gateway-credit-card-form-expiry').val());\n // replace any dashes or spaces in the card number\n account_number = account_number.replace(/-|\\s/g, '');\n // validate card number\n if (!account_number) {\n errors.push(this.params.card_number_missing);\n } else {\n if (account_number.length < 12 || account_number.length > 19) {\n errors.push(this.params.card_number_length_invalid);\n }\n if (/\\D/.test(account_number)) {\n errors.push(this.params.card_number_digits_invalid);\n }\n if (!$.payment.validateCardNumber(account_number)) { // performs luhn check\n errors.push(this.params.card_number_invalid);\n }\n }\n if (!$.payment.validateCardExpiry(expiry)) { // validates future date\n \n // validate expiration date\n errors.push(this.params.card_exp_date_invalid);\n }\n }\n if (errors.length > 0) {\n this.render_errors(errors);\n return false;\n } else {\n // get rid of any space/dash characters\n this.payment_fields.find('.js-sv-wc-payment-gateway-credit-card-form-account-number').val(account_number);\n return true;\n }\n }\n\n // Public: Perform validation on the eCheck info entered\n\n // Return boolean, true if eCheck info is valid, false otherwise\n validate_account_data() {\n var account_number, errors, routing_number;\n if (this.saved_payment_method_selected) {\n return true;\n }\n errors = [];\n routing_number = this.payment_fields.find('.js-sv-wc-payment-gateway-echeck-form-routing-number').val();\n account_number = this.payment_fields.find('.js-sv-wc-payment-gateway-echeck-form-account-number').val();\n // validate routing number\n if (!routing_number) {\n errors.push(this.params.routing_number_missing);\n } else {\n if (9 !== routing_number.length) {\n errors.push(this.params.routing_number_length_invalid);\n }\n if (/\\D/.test(routing_number)) {\n errors.push(this.params.routing_number_digits_invalid);\n }\n }\n // validate account number\n if (!account_number) {\n errors.push(this.params.account_number_missing);\n } else {\n if (account_number.length < 3 || account_number.length > 17) {\n errors.push(this.params.account_number_length_invalid);\n }\n if (/\\D/.test(account_number)) {\n errors.push(this.params.account_number_invalid);\n }\n }\n if (errors.length > 0) {\n this.render_errors(errors);\n return false;\n } else {\n // get rid of any space/dash characters\n this.payment_fields.find('.js-sv-wc-payment-gateway-echeck-form-account-number').val(account_number);\n return true;\n }\n }\n\n // Public: Render any new errors and bring them into the viewport\n\n // Returns nothing.\n render_errors(errors) {\n // hide and remove any previous errors\n $('.woocommerce-error, .woocommerce-message').remove();\n // add errors\n this.form.prepend('
    • ' + errors.join('
    • ') + '
    ');\n // unblock UI\n this.form.removeClass('processing').unblock();\n this.form.find('.input-text, select').blur();\n // scroll to top\n return $('html, body').animate({\n scrollTop: this.form.offset().top - 100\n }, 1000);\n }\n\n // Public: Handle associated actions for saved payment methods\n\n // Returns nothing.\n handle_saved_payment_methods() {\n var $csc_field, $new_payment_method_selection, csc_required, csc_required_for_tokens, id_dasherized;\n // make available inside change events\n id_dasherized = this.id_dasherized;\n csc_required = this.csc_required;\n csc_required_for_tokens = this.csc_required_for_tokens;\n $new_payment_method_selection = $(`div.js-wc-${id_dasherized}-new-payment-method-form`);\n $csc_field = $new_payment_method_selection.find('.js-sv-wc-payment-gateway-credit-card-form-csc').closest('.form-row');\n // show/hide the saved payment methods when a saved payment method is de-selected/selected\n $(`input.js-wc-${this.id_dasherized}-payment-token`).on('change', function() {\n var tokenized_payment_method_selected;\n tokenized_payment_method_selected = $(`input.js-wc-${id_dasherized}-payment-token:checked`).val();\n if (tokenized_payment_method_selected) {\n // using an existing tokenized payment method, hide the 'new method' fields\n $new_payment_method_selection.slideUp(200);\n // move the CSC field out of the 'new method' fields so it can be used with the tokenized transaction\n if (csc_required_for_tokens) {\n $csc_field.removeClass('form-row-last').addClass('form-row-first');\n return $new_payment_method_selection.after($csc_field);\n }\n } else {\n // use new payment method, display the 'new method' fields\n $new_payment_method_selection.slideDown(200);\n // move the CSC field back into its regular spot\n if (csc_required_for_tokens) {\n $csc_field.removeClass('form-row-first').addClass('form-row-last');\n return $new_payment_method_selection.find('.js-sv-wc-payment-gateway-credit-card-form-expiry').closest('.form-row').after($csc_field);\n }\n }\n }).change();\n // display the 'save payment method' option for guest checkouts if the 'create account' option is checked\n // but only hide the input if there is a 'create account' checkbox (some themes just display the password)\n $('input#createaccount').on('change', function() {\n var $parent_row;\n $parent_row = $(`input.js-wc-${id_dasherized}-tokenize-payment-method`).closest('p.form-row');\n if ($(this).is(':checked')) {\n $parent_row.slideDown();\n return $parent_row.next().show();\n } else {\n $parent_row.hide();\n return $parent_row.next().hide();\n }\n });\n if (!$('input#createaccount').is(':checked')) {\n return $('input#createaccount').change();\n }\n }\n\n // Public: Handle showing/hiding the sample check image\n\n // Returns nothing.\n handle_sample_check_hint() {\n var $sample_check;\n $sample_check = this.payment_fields.find('.js-sv-wc-payment-gateway-echeck-form-sample-check');\n if ($sample_check.is(\":visible\")) {\n return $sample_check.slideUp();\n } else {\n return $sample_check.slideDown();\n }\n }\n\n // Blocks the payment form UI\n\n // @since 3.0.0\n block_ui() {\n return this.form.block({\n message: null,\n overlayCSS: {\n background: '#fff',\n opacity: 0.6\n }\n });\n }\n\n // Unblocks the payment form UI\n\n // @since 3.0.0\n unblock_ui() {\n return this.form.unblock();\n }\n\n };\n // dispatch loaded event\n return $(document.body).trigger(\"sv_wc_payment_form_handler_v5_13_0_loaded\");\n });\n\n}).call(this);\n"]} \ No newline at end of file +{"version":3,"sources":["frontend/sv-wc-payment-gateway-payment-form.coffee"],"names":["indexOf","jQuery","$","window","SV_WC_Payment_Form_Handler_v5_14_0","args","id","id_dasherized","plugin_id","type","csc_required","csc_required_for_tokens","enabled_card_types","length","form","handle_checkout_page","handle_pay_page","console","log","handle_add_payment_method_page","params","on","handle_sample_check_hint","document","trigger","instance","body","format_credit_card_inputs","set_payment_fields","handle_saved_payment_methods","validate_payment_data","submit","val","$required_fields","payment_fields","find","each","i","input","handler","valid","is","saved_payment_method_selected","validate_card_data","validate_account_data","triggerHandler","payment_form","passed_validation","$card_number","$csc","$expiry","payment","do_inline_credit_card_validation","$card_type","cardType","call","addClass","removeClass","validateCardExpiry","validateCardCVC","account_number","csc","errors","expiry","test","push","cvv_digits_invalid","cvv_length_invalid","cvv_missing","cardExpiryVal","replace","card_number_length_invalid","card_number_digits_invalid","validateCardNumber","card_number_invalid","card_number_missing","card_exp_date_invalid","render_errors","routing_number","routing_number_length_invalid","routing_number_digits_invalid","routing_number_missing","account_number_length_invalid","account_number_invalid","account_number_missing","remove","prepend","join","unblock","blur","animate","scrollTop","offset","top","$csc_field","$new_payment_method_selection","closest","tokenized_payment_method_selected","slideUp","after","slideDown","change","$parent_row","next","show","hide","$sample_check","block","message","overlayCSS","background","opacity"],"mappings":"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","file":"sv-wc-payment-gateway-payment-form.js","sourceRoot":"../js","sourcesContent":["(function() {\n /*\n WooCommerce SkyVerge Payment Gateway Framework Payment Form CoffeeScript\n Version 4.3.0\n\n Copyright (c) 2014-2024, SkyVerge, Inc.\n Licensed under the GNU General Public License v3.0\n http://www.gnu.org/licenses/gpl-3.0.html\n */\n var indexOf = [].indexOf;\n\n jQuery(function($) {\n \"use strict\";\n window.SV_WC_Payment_Form_Handler_v5_14_0 = class SV_WC_Payment_Form_Handler_v5_14_0 {\n // Public: Instantiate Payment Form Handler\n\n // args - object with properties:\n // id - gateway ID\n // id_dasherized - gateway ID dasherized\n // plugin_id - plugin ID\n // type - gateway type, either `credit-card` or `echeck`\n // csc_required - true if the gateway requires the CSC field to be displayed\n\n // Returns SV_WC_Payment_Form_Handler_v5_14_0 instance\n constructor(args) {\n this.id = args.id;\n this.id_dasherized = args.id_dasherized;\n this.plugin_id = args.plugin_id;\n this.type = args.type;\n this.csc_required = args.csc_required;\n this.csc_required_for_tokens = args.csc_required_for_tokens;\n this.enabled_card_types = args.enabled_card_types;\n // which payment form?\n if ($('form.checkout').length) {\n this.form = $('form.checkout');\n this.handle_checkout_page();\n } else if ($('form#order_review').length) {\n this.form = $('form#order_review');\n this.handle_pay_page();\n } else if ($('form#add_payment_method').length) {\n this.form = $('form#add_payment_method');\n this.handle_add_payment_method_page();\n } else {\n console.log('No payment form found!');\n return;\n }\n // localized error messages\n this.params = window[\"sv_wc_payment_gateway_payment_form_params\"];\n if (this.type === 'echeck') {\n // handle sample check image hint\n this.form.on('click', '.js-sv-wc-payment-gateway-echeck-form-check-hint, .js-sv-wc-payment-gateway-echeck-form-sample-check', () => {\n return this.handle_sample_check_hint();\n });\n }\n $(document).trigger('sv_wc_payment_form_handler_init', {\n id: this.id,\n instance: this\n });\n }\n\n // Public: Handle required actions on the checkout page\n\n // Returns nothing.\n handle_checkout_page() {\n if (this.type === 'credit-card') {\n // format/validate credit card inputs using jQuery.payment\n $(document.body).on('updated_checkout', () => {\n return this.format_credit_card_inputs();\n });\n }\n // updated payment fields jQuery object on each checkout update (prevents stale data)\n $(document.body).on('updated_checkout', () => {\n return this.set_payment_fields();\n });\n // handle saved payment methods\n // note on the checkout page, this is bound to `updated_checkout` so it\n // fires even when other parts of the checkout are changed\n $(document.body).on('updated_checkout', () => {\n return this.handle_saved_payment_methods();\n });\n // validate payment data before order is submitted\n return this.form.on(`checkout_place_order_${this.id}`, () => {\n return this.validate_payment_data();\n });\n }\n\n // Public: Handle required actions on the Order > Pay page\n\n // Returns nothing.\n handle_pay_page() {\n this.set_payment_fields();\n // format/validate credit card inputs using jQuery.payment\n if (this.type === 'credit-card') {\n this.format_credit_card_inputs();\n }\n // handle saved payment methods\n this.handle_saved_payment_methods();\n // validate payment data before order is submitted\n return this.form.submit(() => {\n if ($('#order_review input[name=payment_method]:checked').val() === this.id) {\n // but only when one of our payment gateways is selected\n return this.validate_payment_data();\n }\n });\n }\n\n // Public: Handle required actions on the Add Payment Method page\n\n // Returns nothing.\n handle_add_payment_method_page() {\n this.set_payment_fields();\n // format/validate credit card inputs using jQuery.payment\n if (this.type === 'credit-card') {\n this.format_credit_card_inputs();\n }\n // validate payment data before order is submitted\n return this.form.submit(() => {\n if ($('#add_payment_method input[name=payment_method]:checked').val() === this.id) {\n // but only when one of our payment gateways is selected\n return this.validate_payment_data();\n }\n });\n }\n\n // Public: Set payment fields class variable, this is done\n // during the updated_checkout event as otherwise the reference to\n // the checkout fields becomes stale (somehow ¯\\_(ツ)_/¯)\n\n // This ensures payment fields are not marked as \"invalid\" before the customer has interacted with them.\n\n // Returns nothing.\n set_payment_fields() {\n var $required_fields;\n this.payment_fields = $(`.payment_method_${this.id}`);\n $required_fields = this.payment_fields.find('.validate-required .input-text');\n return $required_fields.each((i, input) => {\n // if any of the required fields have a value, bail this loop and proceed with WooCommerce validation\n if ($(input).val()) {\n return false;\n }\n // otherwise remove all validation result classes from the inputs, since the form is freshly loaded\n return $(input).trigger('input');\n });\n }\n\n // Public: Validate Payment data when order is placed\n\n // Returns boolean, true if payment data is valid, false otherwise\n validate_payment_data() {\n var handler, valid;\n if (this.form.is('.processing')) {\n // bail when already processing\n return false;\n }\n this.saved_payment_method_selected = this.payment_fields.find('.js-sv-wc-payment-gateway-payment-token:checked').val();\n // perform internal validations (all fields present & valid, etc)\n valid = this.type === 'credit-card' ? this.validate_card_data() : this.validate_account_data();\n // let gateways perform their own validation prior to form submission\n handler = $(document.body).triggerHandler('sv_wc_payment_form_valid_payment_data', {\n payment_form: this,\n passed_validation: valid\n }) !== false;\n return valid && handler;\n }\n\n // Public: format card data using jQuery.Payment\n\n // Returns nothing.\n format_credit_card_inputs() {\n var $card_number, $csc, $expiry;\n $card_number = $('.js-sv-wc-payment-gateway-credit-card-form-account-number').payment('formatCardNumber');\n $expiry = $('.js-sv-wc-payment-gateway-credit-card-form-expiry').payment('formatCardExpiry');\n $csc = $('.js-sv-wc-payment-gateway-credit-card-form-csc').payment('formatCardCVC');\n if ($card_number.val() && $card_number.val().length > 0) {\n $card_number.trigger('change');\n }\n if ($expiry.val() && $expiry.val().length > 0) {\n $expiry.trigger('change');\n }\n if ($csc.val() && $csc.val().length > 0) {\n $csc.trigger('change');\n }\n // perform inline validation on credit card inputs\n return $('.js-sv-wc-payment-gateway-credit-card-form-input').on('change paste keyup', () => {\n return this.do_inline_credit_card_validation();\n });\n }\n\n // Public: perform inline validation on credit card fields\n\n // Returns nothing.\n do_inline_credit_card_validation() {\n var $card_number, $card_type, $csc, $expiry;\n $card_number = $('.js-sv-wc-payment-gateway-credit-card-form-account-number');\n $expiry = $('.js-sv-wc-payment-gateway-credit-card-form-expiry');\n $csc = $('.js-sv-wc-payment-gateway-credit-card-form-csc');\n $card_type = $.payment.cardType($card_number.val());\n if (indexOf.call(this.enabled_card_types, $card_type) < 0) {\n $card_number.addClass('invalid-card-type');\n } else {\n $card_number.removeClass('invalid-card-type');\n }\n if ($.payment.validateCardExpiry($expiry.payment('cardExpiryVal'))) {\n $expiry.addClass('identified');\n } else {\n $expiry.removeClass('identified');\n }\n if ($.payment.validateCardCVC($csc.val())) {\n return $csc.addClass('identified');\n } else {\n return $csc.removeClass('identified');\n }\n }\n\n // Public: Perform validation on the credit card info entered\n\n // Return boolean, true if credit card info is valid, false otherwise\n validate_card_data() {\n var account_number, csc, errors, expiry;\n errors = [];\n csc = this.payment_fields.find('.js-sv-wc-payment-gateway-credit-card-form-csc').val();\n // always validate the CSC if present\n if (csc != null) {\n if (csc) {\n if (/\\D/.test(csc)) {\n errors.push(this.params.cvv_digits_invalid);\n }\n if (csc.length < 3 || csc.length > 4) {\n errors.push(this.params.cvv_length_invalid);\n }\n } else if (this.csc_required) {\n if (!this.saved_payment_method_selected || this.csc_required_for_tokens) {\n errors.push(this.params.cvv_missing);\n }\n }\n }\n // Only validate the other CC fields if necessary\n if (!this.saved_payment_method_selected) {\n account_number = this.payment_fields.find('.js-sv-wc-payment-gateway-credit-card-form-account-number').val();\n expiry = $.payment.cardExpiryVal(this.payment_fields.find('.js-sv-wc-payment-gateway-credit-card-form-expiry').val());\n // replace any dashes or spaces in the card number\n account_number = account_number.replace(/-|\\s/g, '');\n // validate card number\n if (!account_number) {\n errors.push(this.params.card_number_missing);\n } else {\n if (account_number.length < 12 || account_number.length > 19) {\n errors.push(this.params.card_number_length_invalid);\n }\n if (/\\D/.test(account_number)) {\n errors.push(this.params.card_number_digits_invalid);\n }\n if (!$.payment.validateCardNumber(account_number)) { // performs luhn check\n errors.push(this.params.card_number_invalid);\n }\n }\n if (!$.payment.validateCardExpiry(expiry)) { // validates future date\n \n // validate expiration date\n errors.push(this.params.card_exp_date_invalid);\n }\n }\n if (errors.length > 0) {\n this.render_errors(errors);\n return false;\n } else {\n // get rid of any space/dash characters\n this.payment_fields.find('.js-sv-wc-payment-gateway-credit-card-form-account-number').val(account_number);\n return true;\n }\n }\n\n // Public: Perform validation on the eCheck info entered\n\n // Return boolean, true if eCheck info is valid, false otherwise\n validate_account_data() {\n var account_number, errors, routing_number;\n if (this.saved_payment_method_selected) {\n return true;\n }\n errors = [];\n routing_number = this.payment_fields.find('.js-sv-wc-payment-gateway-echeck-form-routing-number').val();\n account_number = this.payment_fields.find('.js-sv-wc-payment-gateway-echeck-form-account-number').val();\n // validate routing number\n if (!routing_number) {\n errors.push(this.params.routing_number_missing);\n } else {\n if (9 !== routing_number.length) {\n errors.push(this.params.routing_number_length_invalid);\n }\n if (/\\D/.test(routing_number)) {\n errors.push(this.params.routing_number_digits_invalid);\n }\n }\n // validate account number\n if (!account_number) {\n errors.push(this.params.account_number_missing);\n } else {\n if (account_number.length < 3 || account_number.length > 17) {\n errors.push(this.params.account_number_length_invalid);\n }\n if (/\\D/.test(account_number)) {\n errors.push(this.params.account_number_invalid);\n }\n }\n if (errors.length > 0) {\n this.render_errors(errors);\n return false;\n } else {\n // get rid of any space/dash characters\n this.payment_fields.find('.js-sv-wc-payment-gateway-echeck-form-account-number').val(account_number);\n return true;\n }\n }\n\n // Public: Render any new errors and bring them into the viewport\n\n // Returns nothing.\n render_errors(errors) {\n // hide and remove any previous errors\n $('.woocommerce-error, .woocommerce-message').remove();\n // add errors\n this.form.prepend('
    • ' + errors.join('
    • ') + '
    ');\n // unblock UI\n this.form.removeClass('processing').unblock();\n this.form.find('.input-text, select').blur();\n // scroll to top\n return $('html, body').animate({\n scrollTop: this.form.offset().top - 100\n }, 1000);\n }\n\n // Public: Handle associated actions for saved payment methods\n\n // Returns nothing.\n handle_saved_payment_methods() {\n var $csc_field, $new_payment_method_selection, csc_required, csc_required_for_tokens, id_dasherized;\n // make available inside change events\n id_dasherized = this.id_dasherized;\n csc_required = this.csc_required;\n csc_required_for_tokens = this.csc_required_for_tokens;\n $new_payment_method_selection = $(`div.js-wc-${id_dasherized}-new-payment-method-form`);\n $csc_field = $new_payment_method_selection.find('.js-sv-wc-payment-gateway-credit-card-form-csc').closest('.form-row');\n // show/hide the saved payment methods when a saved payment method is de-selected/selected\n $(`input.js-wc-${this.id_dasherized}-payment-token`).on('change', function() {\n var tokenized_payment_method_selected;\n tokenized_payment_method_selected = $(`input.js-wc-${id_dasherized}-payment-token:checked`).val();\n if (tokenized_payment_method_selected) {\n // using an existing tokenized payment method, hide the 'new method' fields\n $new_payment_method_selection.slideUp(200);\n // move the CSC field out of the 'new method' fields so it can be used with the tokenized transaction\n if (csc_required_for_tokens) {\n $csc_field.removeClass('form-row-last').addClass('form-row-first');\n return $new_payment_method_selection.after($csc_field);\n }\n } else {\n // use new payment method, display the 'new method' fields\n $new_payment_method_selection.slideDown(200);\n // move the CSC field back into its regular spot\n if (csc_required_for_tokens) {\n $csc_field.removeClass('form-row-first').addClass('form-row-last');\n return $new_payment_method_selection.find('.js-sv-wc-payment-gateway-credit-card-form-expiry').closest('.form-row').after($csc_field);\n }\n }\n }).change();\n // display the 'save payment method' option for guest checkouts if the 'create account' option is checked\n // but only hide the input if there is a 'create account' checkbox (some themes just display the password)\n $('input#createaccount').on('change', function() {\n var $parent_row;\n $parent_row = $(`input.js-wc-${id_dasherized}-tokenize-payment-method`).closest('p.form-row');\n if ($(this).is(':checked')) {\n $parent_row.slideDown();\n return $parent_row.next().show();\n } else {\n $parent_row.hide();\n return $parent_row.next().hide();\n }\n });\n if (!$('input#createaccount').is(':checked')) {\n return $('input#createaccount').change();\n }\n }\n\n // Public: Handle showing/hiding the sample check image\n\n // Returns nothing.\n handle_sample_check_hint() {\n var $sample_check;\n $sample_check = this.payment_fields.find('.js-sv-wc-payment-gateway-echeck-form-sample-check');\n if ($sample_check.is(\":visible\")) {\n return $sample_check.slideUp();\n } else {\n return $sample_check.slideDown();\n }\n }\n\n // Blocks the payment form UI\n\n // @since 3.0.0\n block_ui() {\n return this.form.block({\n message: null,\n overlayCSS: {\n background: '#fff',\n opacity: 0.6\n }\n });\n }\n\n // Unblocks the payment form UI\n\n // @since 3.0.0\n unblock_ui() {\n return this.form.unblock();\n }\n\n };\n // dispatch loaded event\n return $(document.body).trigger(\"sv_wc_payment_form_handler_v5_14_0_loaded\");\n });\n\n}).call(this);\n"]} diff --git a/woocommerce/payment-gateway/assets/js/frontend/sv-wc-payment-gateway-apple-pay.coffee b/woocommerce/payment-gateway/assets/js/frontend/sv-wc-payment-gateway-apple-pay.coffee index 5b5d94f5c..7c2918377 100644 --- a/woocommerce/payment-gateway/assets/js/frontend/sv-wc-payment-gateway-apple-pay.coffee +++ b/woocommerce/payment-gateway/assets/js/frontend/sv-wc-payment-gateway-apple-pay.coffee @@ -14,7 +14,7 @@ jQuery ( $ ) -> # The WooCommerce Apple Pay handler base class. # # @since 4.7.0 - class window.SV_WC_Apple_Pay_Handler_v5_13_0 + class window.SV_WC_Apple_Pay_Handler_v5_14_0 # Constructs the handler. @@ -440,4 +440,4 @@ jQuery ( $ ) -> # dispatch loaded event - $( document.body ).trigger( 'sv_wc_apple_pay_handler_v5_13_0_loaded' ) + $( document.body ).trigger( 'sv_wc_apple_pay_handler_v5_14_0_loaded' ) diff --git a/woocommerce/payment-gateway/assets/js/frontend/sv-wc-payment-gateway-google-pay.js b/woocommerce/payment-gateway/assets/js/frontend/sv-wc-payment-gateway-google-pay.js index 61df2b4fc..3248d1b3b 100644 --- a/woocommerce/payment-gateway/assets/js/frontend/sv-wc-payment-gateway-google-pay.js +++ b/woocommerce/payment-gateway/assets/js/frontend/sv-wc-payment-gateway-google-pay.js @@ -7,9 +7,9 @@ jQuery( function( $ ) { * * @since 5.10.0 * - * @type {SV_WC_Google_Pay_Handler_v5_13_0} object + * @type {SV_WC_Google_Pay_Handler_v5_14_0} object */ - window.SV_WC_Google_Pay_Handler_v5_13_0 = class SV_WC_Google_Pay_Handler_v5_13_0 { + window.SV_WC_Google_Pay_Handler_v5_14_0 = class SV_WC_Google_Pay_Handler_v5_14_0 { /** * Handler constructor. @@ -609,6 +609,6 @@ jQuery( function( $ ) { } } - $( document.body ).trigger( 'sv_wc_google_pay_handler_v5_13_0_loaded' ); + $( document.body ).trigger( 'sv_wc_google_pay_handler_v5_14_0_loaded' ); } ); diff --git a/woocommerce/payment-gateway/assets/js/frontend/sv-wc-payment-gateway-my-payment-methods.coffee b/woocommerce/payment-gateway/assets/js/frontend/sv-wc-payment-gateway-my-payment-methods.coffee index c30f1fad3..bcaa9e583 100644 --- a/woocommerce/payment-gateway/assets/js/frontend/sv-wc-payment-gateway-my-payment-methods.coffee +++ b/woocommerce/payment-gateway/assets/js/frontend/sv-wc-payment-gateway-my-payment-methods.coffee @@ -12,7 +12,7 @@ jQuery ( $ ) -> # The My Payment Methods handler. # # @since 5.1.0 - class window.SV_WC_Payment_Methods_Handler_v5_13_0 + class window.SV_WC_Payment_Methods_Handler_v5_14_0 # Constructs the class. @@ -270,4 +270,4 @@ jQuery ( $ ) -> # dispatch loaded event - $( document.body ).trigger( 'sv_wc_payment_methods_handler_v5_13_0_loaded' ) + $( document.body ).trigger( 'sv_wc_payment_methods_handler_v5_14_0_loaded' ) diff --git a/woocommerce/payment-gateway/assets/js/frontend/sv-wc-payment-gateway-payment-form.coffee b/woocommerce/payment-gateway/assets/js/frontend/sv-wc-payment-gateway-payment-form.coffee index d0e552645..d650809fb 100644 --- a/woocommerce/payment-gateway/assets/js/frontend/sv-wc-payment-gateway-payment-form.coffee +++ b/woocommerce/payment-gateway/assets/js/frontend/sv-wc-payment-gateway-payment-form.coffee @@ -10,7 +10,7 @@ jQuery ( $ ) -> "use strict" - class window.SV_WC_Payment_Form_Handler_v5_13_0 + class window.SV_WC_Payment_Form_Handler_v5_14_0 # Public: Instantiate Payment Form Handler @@ -22,7 +22,7 @@ jQuery ( $ ) -> # type - gateway type, either `credit-card` or `echeck` # csc_required - true if the gateway requires the CSC field to be displayed # - # Returns SV_WC_Payment_Form_Handler_v5_13_0 instance + # Returns SV_WC_Payment_Form_Handler_v5_14_0 instance constructor: (args) -> @id = args.id @@ -385,4 +385,4 @@ jQuery ( $ ) -> # dispatch loaded event - $( document.body ).trigger( "sv_wc_payment_form_handler_v5_13_0_loaded" ) + $( document.body ).trigger( "sv_wc_payment_form_handler_v5_14_0_loaded" ) diff --git a/woocommerce/payment-gateway/class-sv-wc-payment-gateway-direct.php b/woocommerce/payment-gateway/class-sv-wc-payment-gateway-direct.php index dcd696b69..f883b6cb2 100644 --- a/woocommerce/payment-gateway/class-sv-wc-payment-gateway-direct.php +++ b/woocommerce/payment-gateway/class-sv-wc-payment-gateway-direct.php @@ -22,13 +22,13 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\Blocks\Blocks_Handler; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\Blocks\Blocks_Handler; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\SV_WC_Payment_Gateway_Direct' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\SV_WC_Payment_Gateway_Direct' ) ) : /** @@ -937,7 +937,7 @@ protected function do_transaction( $order ) { */ public function add_payment_method() { - assert( $this->supports_add_payment_method() ); + $this->get_plugin()->assert( $this->supports_add_payment_method() ); $order = $this->get_order_for_add_payment_method(); diff --git a/woocommerce/payment-gateway/class-sv-wc-payment-gateway-helper.php b/woocommerce/payment-gateway/class-sv-wc-payment-gateway-helper.php index 15ba81687..6c13c1982 100755 --- a/woocommerce/payment-gateway/class-sv-wc-payment-gateway-helper.php +++ b/woocommerce/payment-gateway/class-sv-wc-payment-gateway-helper.php @@ -22,11 +22,11 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\SV_WC_Payment_Gateway_Helper' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\SV_WC_Payment_Gateway_Helper' ) ) : /** diff --git a/woocommerce/payment-gateway/class-sv-wc-payment-gateway-hosted.php b/woocommerce/payment-gateway/class-sv-wc-payment-gateway-hosted.php index 468b3c99b..1f5f0b9c1 100644 --- a/woocommerce/payment-gateway/class-sv-wc-payment-gateway-hosted.php +++ b/woocommerce/payment-gateway/class-sv-wc-payment-gateway-hosted.php @@ -22,11 +22,11 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\SV_WC_Payment_Gateway_Hosted' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\SV_WC_Payment_Gateway_Hosted' ) ) : /** diff --git a/woocommerce/payment-gateway/class-sv-wc-payment-gateway-my-payment-methods.php b/woocommerce/payment-gateway/class-sv-wc-payment-gateway-my-payment-methods.php index 22fd4ef1e..55b1fc630 100644 --- a/woocommerce/payment-gateway/class-sv-wc-payment-gateway-my-payment-methods.php +++ b/woocommerce/payment-gateway/class-sv-wc-payment-gateway-my-payment-methods.php @@ -22,11 +22,11 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\SV_WC_Payment_Gateway_My_Payment_Methods' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\SV_WC_Payment_Gateway_My_Payment_Methods' ) ) : /** @@ -174,9 +174,9 @@ public function maybe_enqueue_styles_scripts() { wp_register_script( 'jquery-tiptip', WC()->plugin_url() . '/assets/js/jquery-tiptip/jquery.tipTip.min.js', [ 'jquery' ], $wc_version ); - wp_enqueue_style( "$handle-v5_13_0", $this->get_plugin()->get_payment_gateway_framework_assets_url() . '/css/frontend/' . $handle . '.min.css', [ 'dashicons' ], $fw_version ); + wp_enqueue_style( "$handle-v5_14_0", $this->get_plugin()->get_payment_gateway_framework_assets_url() . '/css/frontend/' . $handle . '.min.css', [ 'dashicons' ], $fw_version ); - wp_enqueue_script( "$handle-v5_13_0", $this->get_plugin()->get_payment_gateway_framework_assets_url() . '/dist/frontend/' . $handle . '.js', [ 'jquery-tiptip', 'jquery' ], $fw_version ); + wp_enqueue_script( "$handle-v5_14_0", $this->get_plugin()->get_payment_gateway_framework_assets_url() . '/dist/frontend/' . $handle . '.js', [ 'jquery-tiptip', 'jquery' ], $fw_version ); } diff --git a/woocommerce/payment-gateway/class-sv-wc-payment-gateway-payment-form.php b/woocommerce/payment-gateway/class-sv-wc-payment-gateway-payment-form.php index 4ef8b2a15..c0c8b1596 100644 --- a/woocommerce/payment-gateway/class-sv-wc-payment-gateway-payment-form.php +++ b/woocommerce/payment-gateway/class-sv-wc-payment-gateway-payment-form.php @@ -22,15 +22,15 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\Blocks\Blocks_Handler; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\Enums\PaymentFormContext; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\Payment_Gateway\Blocks\Gateway_Checkout_Block_Integration; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\Blocks\Blocks_Handler; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\Enums\PaymentFormContext; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\Payment_Gateway\Blocks\Gateway_Checkout_Block_Integration; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\SV_WC_Payment_Gateway_Payment_Form' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\SV_WC_Payment_Gateway_Payment_Form' ) ) : /** @@ -1180,7 +1180,7 @@ protected function get_js_handler_args() { if ( is_array( $card_types ) && ! empty( $card_types ) ) { - $args['enabled_card_types'] = array_map( [ 'SkyVerge\WooCommerce\PluginFramework\v5_13_0\SV_WC_Payment_Gateway_Helper', 'normalize_card_type' ], $card_types ); + $args['enabled_card_types'] = array_map( [ 'SkyVerge\WooCommerce\PluginFramework\v5_14_0\SV_WC_Payment_Gateway_Helper', 'normalize_card_type' ], $card_types ); } } diff --git a/woocommerce/payment-gateway/class-sv-wc-payment-gateway-plugin.php b/woocommerce/payment-gateway/class-sv-wc-payment-gateway-plugin.php index c41ab4943..822e04593 100644 --- a/woocommerce/payment-gateway/class-sv-wc-payment-gateway-plugin.php +++ b/woocommerce/payment-gateway/class-sv-wc-payment-gateway-plugin.php @@ -22,16 +22,16 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0; use Automattic\WooCommerce\Admin\Notes\WC_Admin_Note; use Automattic\WooCommerce\Admin\Notes\WC_Admin_Notes; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\Payment_Gateway\Blocks\Gateway_Blocks_Handler; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\Payment_Gateway\External_Checkout\Google_Pay\Google_Pay; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\Payment_Gateway\Blocks\Gateway_Blocks_Handler; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\Payment_Gateway\External_Checkout\Google_Pay\Google_Pay; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\SV_WC_Payment_Gateway_Plugin' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\SV_WC_Payment_Gateway_Plugin' ) ) : /** @@ -166,8 +166,6 @@ public function __construct( $id, $version, $args ) { */ protected function init_rest_api_handler() { - require_once( $this->get_payment_gateway_framework_path() . '/rest-api/class-sv-wc-payment-gateway-plugin-rest-api.php' ); - $this->rest_api_handler = new Payment_Gateway\REST_API( $this ); } @@ -181,9 +179,6 @@ protected function init_rest_api_handler() { */ protected function init_blocks_handler() : void { - require_once( $this->get_framework_path() . '/Blocks/Blocks_Handler.php' ); - require_once( $this->get_payment_gateway_framework_path() . '/Blocks/Gateway_Blocks_Handler.php' ); - // individual gateway plugins should initialize their block integrations handler by overriding this method $this->blocks_handler = new Gateway_Blocks_Handler( $this ); } @@ -290,85 +285,8 @@ public function adjust_available_gateways( $available_gateways ) { */ private function includes() { - $payment_gateway_framework_path = $this->get_payment_gateway_framework_path(); - - // interfaces - require_once( $payment_gateway_framework_path . '/api/interface-sv-wc-payment-gateway-api.php' ); - require_once( $payment_gateway_framework_path . '/api/interface-sv-wc-payment-gateway-api-request.php' ); - require_once( $payment_gateway_framework_path . '/api/interface-sv-wc-payment-gateway-api-response.php' ); - require_once( $payment_gateway_framework_path . '/api/interface-sv-wc-payment-gateway-api-authorization-response.php' ); - require_once( $payment_gateway_framework_path . '/api/interface-sv-wc-payment-gateway-api-create-payment-token-response.php' ); - require_once( $payment_gateway_framework_path . '/api/interface-sv-wc-payment-gateway-api-get-tokenized-payment-methods-response.php' ); - require_once( $payment_gateway_framework_path . '/api/interface-sv-wc-payment-gateway-api-payment-notification-response.php' ); - require_once( $payment_gateway_framework_path . '/api/interface-sv-wc-payment-gateway-api-payment-notification-credit-card-response.php' ); - require_once( $payment_gateway_framework_path . '/api/interface-sv-wc-payment-gateway-api-payment-notification-echeck-response.php' ); - require_once( $payment_gateway_framework_path . '/api/interface-sv-wc-payment-gateway-api-payment-notification-tokenization-response.php' ); - require_once( $payment_gateway_framework_path . '/api/interface-sv-wc-payment-gateway-api-customer-response.php' ); - - // exceptions - require_once( $payment_gateway_framework_path . '/exceptions/class-sv-wc-payment-gateway-exception.php' ); - - // gateway - require_once( $payment_gateway_framework_path . '/class-sv-wc-payment-gateway.php' ); - require_once( $payment_gateway_framework_path . '/class-sv-wc-payment-gateway-direct.php' ); - require_once( $payment_gateway_framework_path . '/class-sv-wc-payment-gateway-hosted.php' ); - require_once( $payment_gateway_framework_path . '/class-sv-wc-payment-gateway-payment-form.php' ); - require_once( $payment_gateway_framework_path . '/class-sv-wc-payment-gateway-my-payment-methods.php' ); - - // handlers - require_once( $payment_gateway_framework_path . '/Handlers/Abstract_Payment_Handler.php' ); - require_once( $payment_gateway_framework_path . '/Handlers/Abstract_Hosted_Payment_Handler.php' ); - require_once( $payment_gateway_framework_path . '/Handlers/Capture.php' ); - - // External Checkout - require_once( "{$payment_gateway_framework_path}/External_Checkout/External_Checkout.php" ); - require_once( "{$payment_gateway_framework_path}/External_Checkout/Admin.php" ); - require_once( "{$payment_gateway_framework_path}/External_Checkout/Frontend.php" ); - require_once( "{$payment_gateway_framework_path}/External_Checkout/Orders.php" ); - - // Apple Pay - require_once( "{$payment_gateway_framework_path}/External_Checkout/apple-pay/class-sv-wc-payment-gateway-apple-pay.php" ); - require_once( "{$payment_gateway_framework_path}/External_Checkout/apple-pay/class-sv-wc-payment-gateway-apple-pay-admin.php" ); - require_once( "{$payment_gateway_framework_path}/External_Checkout/apple-pay/class-sv-wc-payment-gateway-apple-pay-frontend.php" ); - require_once( "{$payment_gateway_framework_path}/External_Checkout/apple-pay/class-sv-wc-payment-gateway-apple-pay-ajax.php" ); - require_once( "{$payment_gateway_framework_path}/External_Checkout/apple-pay/api/class-sv-wc-payment-gateway-apple-pay-payment-response.php" ); - - // Google Pay - require_once( "{$payment_gateway_framework_path}/External_Checkout/Google_Pay/Google_Pay.php" ); - require_once( "{$payment_gateway_framework_path}/External_Checkout/Google_Pay/Admin.php" ); - require_once( "{$payment_gateway_framework_path}/External_Checkout/Google_Pay/AJAX.php" ); - require_once( "{$payment_gateway_framework_path}/External_Checkout/Google_Pay/Frontend.php" ); - - // payment tokens - require_once( $payment_gateway_framework_path . '/payment-tokens/class-sv-wc-payment-gateway-payment-token.php' ); - require_once( $payment_gateway_framework_path . '/payment-tokens/class-sv-wc-payment-gateway-payment-tokens-handler.php' ); - - // helpers - require_once( $payment_gateway_framework_path . '/api/class-sv-wc-payment-gateway-api-response-message-helper.php' ); - require_once( $payment_gateway_framework_path . '/class-sv-wc-payment-gateway-helper.php' ); - require_once $payment_gateway_framework_path . '/PaymentFormContextChecker.php'; - - // admin - require_once( $payment_gateway_framework_path . '/admin/class-sv-wc-payment-gateway-admin-order.php' ); - require_once( $payment_gateway_framework_path . '/admin/class-sv-wc-payment-gateway-admin-user-handler.php' ); - require_once( $payment_gateway_framework_path . '/admin/class-sv-wc-payment-gateway-admin-payment-token-editor.php' ); - - // integrations - require_once( $payment_gateway_framework_path . '/integrations/abstract-sv-wc-payment-gateway-integration.php' ); - - // subscriptions - if ( $this->is_subscriptions_active() ) { - require_once( $payment_gateway_framework_path . '/integrations/class-sv-wc-payment-gateway-integration-subscriptions.php' ); - } - - // pre-orders - if ( $this->is_pre_orders_active() ) { - require_once( $payment_gateway_framework_path . '/integrations/class-sv-wc-payment-gateway-integration-pre-orders.php' ); - } - // privacy if ( SV_WC_Plugin_Compatibility::is_wc_version_gte( '3.4' ) ) { - require_once( "{$payment_gateway_framework_path}/class-sv-wc-payment-gateway-privacy.php" ); $this->privacy_handler = new SV_WC_Payment_Gateway_Privacy( $this ); } } @@ -1273,7 +1191,7 @@ public function add_gateway( $gateway_id, $gateway_class_name ) { */ public function get_gateway_class_names() { - assert( ! empty( $this->gateways ) ); + $this->assert( ! empty( $this->gateways ) ); $gateway_class_names = array(); @@ -1295,7 +1213,7 @@ public function get_gateway_class_names() { */ public function get_gateway_class_name( $gateway_id ) { - assert( isset( $this->gateways[ $gateway_id ]['gateway_class_name'] ) ); + $this->assert( isset( $this->gateways[ $gateway_id ]['gateway_class_name'] ) ); return $this->gateways[ $gateway_id ]['gateway_class_name']; } @@ -1311,7 +1229,7 @@ public function get_gateway_class_name( $gateway_id ) { */ public function get_gateways() { - assert( ! empty( $this->gateways ) ); + $this->assert( ! empty( $this->gateways ) ); $gateways = array(); @@ -1385,7 +1303,7 @@ public function has_gateway( $gateway_id ) { */ public function get_gateway_ids() { - assert( ! empty( $this->gateways ) ); + $this->assert( ! empty( $this->gateways ) ); return array_keys( $this->gateways ); } diff --git a/woocommerce/payment-gateway/class-sv-wc-payment-gateway-privacy.php b/woocommerce/payment-gateway/class-sv-wc-payment-gateway-privacy.php index 698cb0f11..60326796c 100644 --- a/woocommerce/payment-gateway/class-sv-wc-payment-gateway-privacy.php +++ b/woocommerce/payment-gateway/class-sv-wc-payment-gateway-privacy.php @@ -22,11 +22,11 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\SV_WC_Payment_Gateway_Privacy' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\SV_WC_Payment_Gateway_Privacy' ) ) : /** diff --git a/woocommerce/payment-gateway/class-sv-wc-payment-gateway.php b/woocommerce/payment-gateway/class-sv-wc-payment-gateway.php index 4e760e4c2..8ac88d728 100755 --- a/woocommerce/payment-gateway/class-sv-wc-payment-gateway.php +++ b/woocommerce/payment-gateway/class-sv-wc-payment-gateway.php @@ -22,16 +22,16 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0; use Automattic\WooCommerce\Blocks\Integrations\IntegrationInterface; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\Blocks\Blocks_Handler; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\Payment_Gateway\Blocks\Gateway_Checkout_Block_Integration; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\Blocks\Blocks_Handler; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\Payment_Gateway\Blocks\Gateway_Checkout_Block_Integration; use stdClass; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\SV_WC_Payment_Gateway' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\SV_WC_Payment_Gateway' ) ) : /** @@ -473,7 +473,7 @@ protected function enqueue_payment_form_assets() { } $handle = 'sv-wc-payment-gateway-payment-form'; - $versioned_handle = $handle . '-v5_13_0'; + $versioned_handle = $handle . '-v5_14_0'; // Frontend JS wp_enqueue_script( $versioned_handle, $this->get_plugin()->get_payment_gateway_framework_assets_url() . '/dist/frontend/' . $handle . '.js', array( 'jquery-payment' ), SV_WC_Plugin::VERSION, true ); @@ -943,7 +943,7 @@ public function get_payment_form_instance() { */ public function get_payment_method_defaults() { - assert( $this->supports_payment_form() ); + $this->get_plugin()->assert( $this->supports_payment_form() ); $defaults = array( 'account-number' => '', @@ -3301,7 +3301,7 @@ public function supports_credit_card_partial_capture() { */ protected function add_authorization_charge_form_fields( $form_fields ) { - assert( $this->supports_credit_card_authorization() && $this->supports_credit_card_charge() ); + $this->get_plugin()->assert( $this->supports_credit_card_authorization() && $this->supports_credit_card_charge() ); $form_fields['transaction_type'] = array( 'title' => esc_html__( 'Transaction Type', 'woocommerce-plugin-framework' ), @@ -3381,7 +3381,7 @@ public function get_authorization_time_window() { */ public function perform_credit_card_charge( \WC_Order $order = null ) { - assert( $this->supports_credit_card_charge() ); + $this->get_plugin()->assert( $this->supports_credit_card_charge() ); $perform = self::TRANSACTION_TYPE_CHARGE === $this->transaction_type; @@ -3412,7 +3412,7 @@ public function perform_credit_card_charge( \WC_Order $order = null ) { */ public function perform_credit_card_authorization( \WC_Order $order = null ) { - assert( $this->supports_credit_card_authorization() ); + $this->get_plugin()->assert( $this->supports_credit_card_authorization() ); $perform = self::TRANSACTION_TYPE_AUTHORIZATION === $this->transaction_type && ! $this->perform_credit_card_charge( $order ); @@ -3437,7 +3437,7 @@ public function perform_credit_card_authorization( \WC_Order $order = null ) { */ public function is_partial_capture_enabled() { - assert( $this->supports_credit_card_partial_capture() ); + $this->get_plugin()->assert( $this->supports_credit_card_partial_capture() ); /** * Filters whether partial capture is enabled. @@ -3516,7 +3516,7 @@ public function supports_card_types() { */ public function get_card_types() { - assert( $this->supports_card_types() ); + $this->get_plugin()->assert( $this->supports_card_types() ); return is_array( $this->card_types ) ? $this->card_types : []; } @@ -3532,7 +3532,7 @@ public function get_card_types() { */ protected function add_card_types_form_fields( $form_fields ) { - assert( $this->supports_card_types() ); + $this->get_plugin()->assert( $this->supports_card_types() ); $form_fields['card_types'] = array( 'title' => esc_html__( 'Accepted Card Logos', 'woocommerce-plugin-framework' ), @@ -3562,7 +3562,7 @@ protected function add_card_types_form_fields( $form_fields ) { */ public function get_available_card_types() { - assert( $this->supports_card_types() ); + $this->get_plugin()->assert( $this->supports_card_types() ); // default available card types if ( ! isset( $this->available_card_types ) ) { @@ -3612,7 +3612,7 @@ public function supports_tokenization() { */ public function tokenization_enabled() { - assert( $this->supports_tokenization() ); + $this->get_plugin()->assert( $this->supports_tokenization() ); return 'yes' == $this->tokenization; } @@ -3627,7 +3627,7 @@ public function tokenization_enabled() { */ protected function add_tokenization_form_fields( $form_fields ) { - assert( $this->supports_tokenization() ); + $this->get_plugin()->assert( $this->supports_tokenization() ); $form_fields['tokenization'] = array( /* translators: http://www.cybersource.com/products/payment_security/payment_tokenization/ and https://en.wikipedia.org/wiki/Tokenization_(data_security) */ @@ -4142,7 +4142,7 @@ public function set_supports( $features ) { */ public function supports_check_field( $field_name ) { - assert( $this->is_echeck_gateway() ); + $this->get_plugin()->assert( $this->is_echeck_gateway() ); return is_array( $this->supported_check_fields ) && in_array( $field_name, $this->supported_check_fields ); @@ -4478,7 +4478,7 @@ protected function is_processing_context( string $context ): bool { public function get_api() { // concrete stub method - assert( false ); + $this->get_plugin()->assert( false ); } diff --git a/woocommerce/payment-gateway/exceptions/class-sv-wc-payment-gateway-exception.php b/woocommerce/payment-gateway/exceptions/class-sv-wc-payment-gateway-exception.php index 76c60d1ce..3b6a12251 100644 --- a/woocommerce/payment-gateway/exceptions/class-sv-wc-payment-gateway-exception.php +++ b/woocommerce/payment-gateway/exceptions/class-sv-wc-payment-gateway-exception.php @@ -22,11 +22,11 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\SV_WC_Payment_Gateway_Exception' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\SV_WC_Payment_Gateway_Exception' ) ) : /** diff --git a/woocommerce/payment-gateway/integrations/abstract-sv-wc-payment-gateway-integration.php b/woocommerce/payment-gateway/integrations/abstract-sv-wc-payment-gateway-integration.php index eb2d3c88b..6299eba52 100644 --- a/woocommerce/payment-gateway/integrations/abstract-sv-wc-payment-gateway-integration.php +++ b/woocommerce/payment-gateway/integrations/abstract-sv-wc-payment-gateway-integration.php @@ -22,11 +22,11 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\SV_WC_Payment_Gateway_Integration' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\SV_WC_Payment_Gateway_Integration' ) ) : /** diff --git a/woocommerce/payment-gateway/integrations/class-sv-wc-payment-gateway-integration-pre-orders.php b/woocommerce/payment-gateway/integrations/class-sv-wc-payment-gateway-integration-pre-orders.php index 2b98202ba..720602294 100644 --- a/woocommerce/payment-gateway/integrations/class-sv-wc-payment-gateway-integration-pre-orders.php +++ b/woocommerce/payment-gateway/integrations/class-sv-wc-payment-gateway-integration-pre-orders.php @@ -22,11 +22,11 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\SV_WC_Payment_Gateway_Integration_Pre_Orders' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\SV_WC_Payment_Gateway_Integration_Pre_Orders' ) ) : /** diff --git a/woocommerce/payment-gateway/integrations/class-sv-wc-payment-gateway-integration-subscriptions.php b/woocommerce/payment-gateway/integrations/class-sv-wc-payment-gateway-integration-subscriptions.php index b844fbfac..d39e66060 100644 --- a/woocommerce/payment-gateway/integrations/class-sv-wc-payment-gateway-integration-subscriptions.php +++ b/woocommerce/payment-gateway/integrations/class-sv-wc-payment-gateway-integration-subscriptions.php @@ -22,11 +22,11 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\SV_WC_Payment_Gateway_Integration_Subscriptions' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\SV_WC_Payment_Gateway_Integration_Subscriptions' ) ) : /** diff --git a/woocommerce/payment-gateway/payment-tokens/class-sv-wc-payment-gateway-payment-token.php b/woocommerce/payment-gateway/payment-tokens/class-sv-wc-payment-gateway-payment-token.php index c9eccc1e6..af396956d 100644 --- a/woocommerce/payment-gateway/payment-tokens/class-sv-wc-payment-gateway-payment-token.php +++ b/woocommerce/payment-gateway/payment-tokens/class-sv-wc-payment-gateway-payment-token.php @@ -22,11 +22,11 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\SV_WC_Payment_Gateway_Payment_Token' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\SV_WC_Payment_Gateway_Payment_Token' ) ) : /** diff --git a/woocommerce/payment-gateway/payment-tokens/class-sv-wc-payment-gateway-payment-tokens-handler.php b/woocommerce/payment-gateway/payment-tokens/class-sv-wc-payment-gateway-payment-tokens-handler.php index 31edefaa5..1af5ab9c6 100644 --- a/woocommerce/payment-gateway/payment-tokens/class-sv-wc-payment-gateway-payment-tokens-handler.php +++ b/woocommerce/payment-gateway/payment-tokens/class-sv-wc-payment-gateway-payment-tokens-handler.php @@ -22,11 +22,11 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\SV_WC_Payment_Gateway_Payment_Tokens_Handler' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\SV_WC_Payment_Gateway_Payment_Tokens_Handler' ) ) : /** diff --git a/woocommerce/payment-gateway/rest-api/class-sv-wc-payment-gateway-plugin-rest-api.php b/woocommerce/payment-gateway/rest-api/class-sv-wc-payment-gateway-plugin-rest-api.php index d80aa70e5..d33a5e585 100644 --- a/woocommerce/payment-gateway/rest-api/class-sv-wc-payment-gateway-plugin-rest-api.php +++ b/woocommerce/payment-gateway/rest-api/class-sv-wc-payment-gateway-plugin-rest-api.php @@ -22,19 +22,19 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0\Payment_Gateway; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0\Payment_Gateway; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\REST_API as Plugin_REST_API; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\REST_API as Plugin_REST_API; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\Payment_Gateway\\REST_API' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\Payment_Gateway\\REST_API' ) ) : /** * The payment gateway plugin REST API handler class. * - * @see \SkyVerge\WooCommerce\PluginFramework\v5_13_0\REST_API + * @see \SkyVerge\WooCommerce\PluginFramework\v5_14_0\REST_API * * @since 5.2.0 */ @@ -47,7 +47,7 @@ class REST_API extends Plugin_REST_API { * * Plugins can override this to add their own data. * - * @see \SkyVerge\WooCommerce\PluginFramework\v5_13_0\REST_API::get_system_status_data() + * @see \SkyVerge\WooCommerce\PluginFramework\v5_14_0\REST_API::get_system_status_data() * * @since 5.2.0 * diff --git a/woocommerce/rest-api/Controllers/Settings.php b/woocommerce/rest-api/Controllers/Settings.php index f0d4fc5e0..50b8abcdf 100644 --- a/woocommerce/rest-api/Controllers/Settings.php +++ b/woocommerce/rest-api/Controllers/Settings.php @@ -22,14 +22,14 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0\REST_API\Controllers; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0\REST_API\Controllers; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\Settings_API\Abstract_Settings; -use SkyVerge\WooCommerce\PluginFramework\v5_13_0\Settings_API\Setting; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\Settings_API\Abstract_Settings; +use SkyVerge\WooCommerce\PluginFramework\v5_14_0\Settings_API\Setting; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\REST_API\\Controllers\\Settings' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\REST_API\\Controllers\\Settings' ) ) : /** diff --git a/woocommerce/rest-api/class-sv-wc-plugin-rest-api.php b/woocommerce/rest-api/class-sv-wc-plugin-rest-api.php index e4a204ae6..354227c0d 100644 --- a/woocommerce/rest-api/class-sv-wc-plugin-rest-api.php +++ b/woocommerce/rest-api/class-sv-wc-plugin-rest-api.php @@ -22,11 +22,11 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\REST_API' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\REST_API' ) ) : /** diff --git a/woocommerce/utilities/class-sv-wp-async-request.php b/woocommerce/utilities/class-sv-wp-async-request.php index 59301f721..7032bdbf3 100644 --- a/woocommerce/utilities/class-sv-wp-async-request.php +++ b/woocommerce/utilities/class-sv-wp-async-request.php @@ -23,11 +23,11 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\SV_WP_Async_Request' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\SV_WP_Async_Request' ) ) : /** diff --git a/woocommerce/utilities/class-sv-wp-background-job-handler.php b/woocommerce/utilities/class-sv-wp-background-job-handler.php index 81b39673f..470ea7472 100644 --- a/woocommerce/utilities/class-sv-wp-background-job-handler.php +++ b/woocommerce/utilities/class-sv-wp-background-job-handler.php @@ -23,11 +23,11 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ -namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0; +namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0; defined( 'ABSPATH' ) or exit; -if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\SV_WP_Background_Job_Handler' ) ) : +if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\SV_WP_Background_Job_Handler' ) ) : /** diff --git a/woocommerce/utilities/class-sv-wp-job-batch-handler.php b/woocommerce/utilities/class-sv-wp-job-batch-handler.php index f9d83814d..f06498fc0 100644 --- a/woocommerce/utilities/class-sv-wp-job-batch-handler.php +++ b/woocommerce/utilities/class-sv-wp-job-batch-handler.php @@ -22,11 +22,11 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 */ - namespace SkyVerge\WooCommerce\PluginFramework\v5_13_0; + namespace SkyVerge\WooCommerce\PluginFramework\v5_14_0; defined( 'ABSPATH' ) or exit; - if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_13_0\\SV_WP_Job_Batch_Handler' ) ) : + if ( ! class_exists( '\\SkyVerge\\WooCommerce\\PluginFramework\\v5_14_0\\SV_WP_Job_Batch_Handler' ) ) : /**