Merge pull request #1924 from woocommerce/PCP-921-paylater-configurator

Use Pay Later Messaging configurator
This commit is contained in:
Emili Castells 2024-02-16 14:50:15 +01:00 committed by GitHub
commit a4f4cec23c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
18 changed files with 3104 additions and 171 deletions

348
composer.lock generated
View file

@ -8,20 +8,20 @@
"packages": [ "packages": [
{ {
"name": "container-interop/service-provider", "name": "container-interop/service-provider",
"version": "v0.4.0", "version": "v0.4.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/container-interop/service-provider.git", "url": "https://github.com/container-interop/service-provider.git",
"reference": "4969b9e49460690b7430b3f1a87cab07be61418a" "reference": "e04441ca21ef03e10dce70b0af29269281eec6dc"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/container-interop/service-provider/zipball/4969b9e49460690b7430b3f1a87cab07be61418a", "url": "https://api.github.com/repos/container-interop/service-provider/zipball/e04441ca21ef03e10dce70b0af29269281eec6dc",
"reference": "4969b9e49460690b7430b3f1a87cab07be61418a", "reference": "e04441ca21ef03e10dce70b0af29269281eec6dc",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"psr/container": "^1.0" "psr/container": "^1.0 || ^2.0"
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
@ -37,9 +37,9 @@
"homepage": "https://github.com/container-interop/service-provider", "homepage": "https://github.com/container-interop/service-provider",
"support": { "support": {
"issues": "https://github.com/container-interop/service-provider/issues", "issues": "https://github.com/container-interop/service-provider/issues",
"source": "https://github.com/container-interop/service-provider/tree/master" "source": "https://github.com/container-interop/service-provider/tree/v0.4.1"
}, },
"time": "2017-09-20T14:13:36+00:00" "time": "2023-12-14T14:50:12+00:00"
}, },
{ {
"name": "dhii/human-readable-interface", "name": "dhii/human-readable-interface",
@ -438,16 +438,16 @@
}, },
{ {
"name": "symfony/polyfill-php80", "name": "symfony/polyfill-php80",
"version": "v1.27.0", "version": "v1.29.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-php80.git", "url": "https://github.com/symfony/polyfill-php80.git",
"reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b",
"reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -455,9 +455,6 @@
}, },
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": {
"dev-main": "1.27-dev"
},
"thanks": { "thanks": {
"name": "symfony/polyfill", "name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill" "url": "https://github.com/symfony/polyfill"
@ -501,7 +498,7 @@
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0"
}, },
"funding": [ "funding": [
{ {
@ -517,7 +514,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-11-03T14:55:06+00:00" "time": "2024-01-29T20:11:03+00:00"
}, },
{ {
"name": "wikimedia/composer-merge-plugin", "name": "wikimedia/composer-merge-plugin",
@ -797,16 +794,16 @@
}, },
{ {
"name": "antecedent/patchwork", "name": "antecedent/patchwork",
"version": "2.1.25", "version": "2.1.28",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/antecedent/patchwork.git", "url": "https://github.com/antecedent/patchwork.git",
"reference": "17314e042d45e0dacb0a494c2d1ef50e7621136a" "reference": "6b30aff81ebadf0f2feb9268d3e08385cebcc08d"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/antecedent/patchwork/zipball/17314e042d45e0dacb0a494c2d1ef50e7621136a", "url": "https://api.github.com/repos/antecedent/patchwork/zipball/6b30aff81ebadf0f2feb9268d3e08385cebcc08d",
"reference": "17314e042d45e0dacb0a494c2d1ef50e7621136a", "reference": "6b30aff81ebadf0f2feb9268d3e08385cebcc08d",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -827,7 +824,7 @@
} }
], ],
"description": "Method redefinition (monkey-patching) functionality for PHP.", "description": "Method redefinition (monkey-patching) functionality for PHP.",
"homepage": "http://patchwork2.org/", "homepage": "https://antecedent.github.io/patchwork/",
"keywords": [ "keywords": [
"aop", "aop",
"aspect", "aspect",
@ -839,9 +836,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/antecedent/patchwork/issues", "issues": "https://github.com/antecedent/patchwork/issues",
"source": "https://github.com/antecedent/patchwork/tree/2.1.25" "source": "https://github.com/antecedent/patchwork/tree/2.1.28"
}, },
"time": "2023-02-19T12:51:24+00:00" "time": "2024-02-06T09:26:11+00:00"
}, },
{ {
"name": "brain/monkey", "name": "brain/monkey",
@ -988,16 +985,16 @@
}, },
{ {
"name": "composer/pcre", "name": "composer/pcre",
"version": "2.1.0", "version": "2.1.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/composer/pcre.git", "url": "https://github.com/composer/pcre.git",
"reference": "3fdb2807b31a78a40ad89570e30ec77466c98717" "reference": "b439557066cd445732fa57cbc8d905394b4db8a0"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/composer/pcre/zipball/3fdb2807b31a78a40ad89570e30ec77466c98717", "url": "https://api.github.com/repos/composer/pcre/zipball/b439557066cd445732fa57cbc8d905394b4db8a0",
"reference": "3fdb2807b31a78a40ad89570e30ec77466c98717", "reference": "b439557066cd445732fa57cbc8d905394b4db8a0",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1039,7 +1036,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/composer/pcre/issues", "issues": "https://github.com/composer/pcre/issues",
"source": "https://github.com/composer/pcre/tree/2.1.0" "source": "https://github.com/composer/pcre/tree/2.1.1"
}, },
"funding": [ "funding": [
{ {
@ -1055,20 +1052,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-11-16T18:32:04+00:00" "time": "2023-10-11T07:10:55+00:00"
}, },
{ {
"name": "composer/semver", "name": "composer/semver",
"version": "3.3.2", "version": "3.4.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/composer/semver.git", "url": "https://github.com/composer/semver.git",
"reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32",
"reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1118,9 +1115,9 @@
"versioning" "versioning"
], ],
"support": { "support": {
"irc": "irc://irc.freenode.org/composer", "irc": "ircs://irc.libera.chat:6697/composer",
"issues": "https://github.com/composer/semver/issues", "issues": "https://github.com/composer/semver/issues",
"source": "https://github.com/composer/semver/tree/3.3.2" "source": "https://github.com/composer/semver/tree/3.4.0"
}, },
"funding": [ "funding": [
{ {
@ -1136,7 +1133,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-04-01T19:23:25+00:00" "time": "2023-08-31T09:50:34+00:00"
}, },
{ {
"name": "composer/xdebug-handler", "name": "composer/xdebug-handler",
@ -1604,24 +1601,24 @@
}, },
{ {
"name": "graham-campbell/result-type", "name": "graham-campbell/result-type",
"version": "v1.1.1", "version": "v1.1.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/GrahamCampbell/Result-Type.git", "url": "https://github.com/GrahamCampbell/Result-Type.git",
"reference": "672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831" "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831", "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/fbd48bce38f73f8a4ec8583362e732e4095e5862",
"reference": "672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831", "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": "^7.2.5 || ^8.0", "php": "^7.2.5 || ^8.0",
"phpoption/phpoption": "^1.9.1" "phpoption/phpoption": "^1.9.2"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12" "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2"
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
@ -1650,7 +1647,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/GrahamCampbell/Result-Type/issues", "issues": "https://github.com/GrahamCampbell/Result-Type/issues",
"source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.1" "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.2"
}, },
"funding": [ "funding": [
{ {
@ -1662,7 +1659,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2023-02-25T20:23:15+00:00" "time": "2023-11-12T22:16:48+00:00"
}, },
{ {
"name": "hamcrest/hamcrest-php", "name": "hamcrest/hamcrest-php",
@ -1845,16 +1842,16 @@
}, },
{ {
"name": "netresearch/jsonmapper", "name": "netresearch/jsonmapper",
"version": "v4.2.0", "version": "v4.4.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/cweiske/jsonmapper.git", "url": "https://github.com/cweiske/jsonmapper.git",
"reference": "f60565f8c0566a31acf06884cdaa591867ecc956" "reference": "132c75c7dd83e45353ebb9c6c9f591952995bbf0"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/f60565f8c0566a31acf06884cdaa591867ecc956", "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/132c75c7dd83e45353ebb9c6c9f591952995bbf0",
"reference": "f60565f8c0566a31acf06884cdaa591867ecc956", "reference": "132c75c7dd83e45353ebb9c6c9f591952995bbf0",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1865,7 +1862,7 @@
"php": ">=7.1" "php": ">=7.1"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "~7.5 || ~8.0 || ~9.0", "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0 || ~10.0",
"squizlabs/php_codesniffer": "~3.5" "squizlabs/php_codesniffer": "~3.5"
}, },
"type": "library", "type": "library",
@ -1890,22 +1887,22 @@
"support": { "support": {
"email": "cweiske@cweiske.de", "email": "cweiske@cweiske.de",
"issues": "https://github.com/cweiske/jsonmapper/issues", "issues": "https://github.com/cweiske/jsonmapper/issues",
"source": "https://github.com/cweiske/jsonmapper/tree/v4.2.0" "source": "https://github.com/cweiske/jsonmapper/tree/v4.4.1"
}, },
"time": "2023-04-09T17:37:40+00:00" "time": "2024-01-31T06:18:54+00:00"
}, },
{ {
"name": "nikic/php-parser", "name": "nikic/php-parser",
"version": "v4.16.0", "version": "v4.18.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/nikic/PHP-Parser.git", "url": "https://github.com/nikic/PHP-Parser.git",
"reference": "19526a33fb561ef417e822e85f08a00db4059c17" "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/19526a33fb561ef417e822e85f08a00db4059c17", "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bcbb2179f97633e98bbbc87044ee2611c7d7999",
"reference": "19526a33fb561ef417e822e85f08a00db4059c17", "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1946,9 +1943,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/nikic/PHP-Parser/issues", "issues": "https://github.com/nikic/PHP-Parser/issues",
"source": "https://github.com/nikic/PHP-Parser/tree/v4.16.0" "source": "https://github.com/nikic/PHP-Parser/tree/v4.18.0"
}, },
"time": "2023-06-25T14:52:30+00:00" "time": "2023-12-10T21:03:43+00:00"
}, },
{ {
"name": "openlss/lib-array2xml", "name": "openlss/lib-array2xml",
@ -2539,16 +2536,16 @@
}, },
{ {
"name": "phpoption/phpoption", "name": "phpoption/phpoption",
"version": "1.9.1", "version": "1.9.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/schmittjoh/php-option.git", "url": "https://github.com/schmittjoh/php-option.git",
"reference": "dd3a383e599f49777d8b628dadbb90cae435b87e" "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/schmittjoh/php-option/zipball/dd3a383e599f49777d8b628dadbb90cae435b87e", "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/80735db690fe4fc5c76dfa7f9b770634285fa820",
"reference": "dd3a383e599f49777d8b628dadbb90cae435b87e", "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -2556,7 +2553,7 @@
}, },
"require-dev": { "require-dev": {
"bamarni/composer-bin-plugin": "^1.8.2", "bamarni/composer-bin-plugin": "^1.8.2",
"phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12" "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2"
}, },
"type": "library", "type": "library",
"extra": { "extra": {
@ -2598,7 +2595,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/schmittjoh/php-option/issues", "issues": "https://github.com/schmittjoh/php-option/issues",
"source": "https://github.com/schmittjoh/php-option/tree/1.9.1" "source": "https://github.com/schmittjoh/php-option/tree/1.9.2"
}, },
"funding": [ "funding": [
{ {
@ -2610,7 +2607,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2023-02-25T19:38:58+00:00" "time": "2023-11-12T21:59:55+00:00"
}, },
{ {
"name": "phpunit/php-code-coverage", "name": "phpunit/php-code-coverage",
@ -2911,16 +2908,16 @@
}, },
{ {
"name": "phpunit/phpunit", "name": "phpunit/phpunit",
"version": "8.5.33", "version": "8.5.36",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git", "url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "7d1ff0e8c6b35db78ff13e3e05517d7cbf7aa32e" "reference": "9652df58e06a681429d8cfdaec3c43d6de581d5a"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/7d1ff0e8c6b35db78ff13e3e05517d7cbf7aa32e", "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9652df58e06a681429d8cfdaec3c43d6de581d5a",
"reference": "7d1ff0e8c6b35db78ff13e3e05517d7cbf7aa32e", "reference": "9652df58e06a681429d8cfdaec3c43d6de581d5a",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -2950,9 +2947,9 @@
"sebastian/version": "^2.0.1" "sebastian/version": "^2.0.1"
}, },
"suggest": { "suggest": {
"ext-soap": "*", "ext-soap": "To be able to generate mocks based on WSDL files",
"ext-xdebug": "*", "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage",
"phpunit/php-invoker": "^2.0.0" "phpunit/php-invoker": "To allow enforcing time limits"
}, },
"bin": [ "bin": [
"phpunit" "phpunit"
@ -2988,7 +2985,8 @@
], ],
"support": { "support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues", "issues": "https://github.com/sebastianbergmann/phpunit/issues",
"source": "https://github.com/sebastianbergmann/phpunit/tree/8.5.33" "security": "https://github.com/sebastianbergmann/phpunit/security/policy",
"source": "https://github.com/sebastianbergmann/phpunit/tree/8.5.36"
}, },
"funding": [ "funding": [
{ {
@ -3004,7 +3002,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2023-02-27T13:04:50+00:00" "time": "2023-12-01T16:52:15+00:00"
}, },
{ {
"name": "sebastian/code-unit-reverse-lookup", "name": "sebastian/code-unit-reverse-lookup",
@ -3343,16 +3341,16 @@
}, },
{ {
"name": "sebastian/global-state", "name": "sebastian/global-state",
"version": "3.0.2", "version": "3.0.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sebastianbergmann/global-state.git", "url": "https://github.com/sebastianbergmann/global-state.git",
"reference": "de036ec91d55d2a9e0db2ba975b512cdb1c23921" "reference": "66783ce213de415b451b904bfef9dda0cf9aeae0"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/de036ec91d55d2a9e0db2ba975b512cdb1c23921", "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/66783ce213de415b451b904bfef9dda0cf9aeae0",
"reference": "de036ec91d55d2a9e0db2ba975b512cdb1c23921", "reference": "66783ce213de415b451b904bfef9dda0cf9aeae0",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -3395,7 +3393,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/sebastianbergmann/global-state/issues", "issues": "https://github.com/sebastianbergmann/global-state/issues",
"source": "https://github.com/sebastianbergmann/global-state/tree/3.0.2" "source": "https://github.com/sebastianbergmann/global-state/tree/3.0.3"
}, },
"funding": [ "funding": [
{ {
@ -3403,7 +3401,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2022-02-10T06:55:38+00:00" "time": "2023-08-02T09:23:32+00:00"
}, },
{ {
"name": "sebastian/object-enumerator", "name": "sebastian/object-enumerator",
@ -3737,16 +3735,16 @@
}, },
{ {
"name": "squizlabs/php_codesniffer", "name": "squizlabs/php_codesniffer",
"version": "3.7.2", "version": "3.8.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/squizlabs/PHP_CodeSniffer.git", "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git",
"reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879" "reference": "14f5fff1e64118595db5408e946f3a22c75807f7"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ed8e00df0a83aa96acf703f8c2979ff33341f879", "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/14f5fff1e64118595db5408e946f3a22c75807f7",
"reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879", "reference": "14f5fff1e64118595db5408e946f3a22c75807f7",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -3756,11 +3754,11 @@
"php": ">=5.4.0" "php": ">=5.4.0"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4"
}, },
"bin": [ "bin": [
"bin/phpcs", "bin/phpcbf",
"bin/phpcbf" "bin/phpcs"
], ],
"type": "library", "type": "library",
"extra": { "extra": {
@ -3775,35 +3773,58 @@
"authors": [ "authors": [
{ {
"name": "Greg Sherwood", "name": "Greg Sherwood",
"role": "lead" "role": "Former lead"
},
{
"name": "Juliette Reinders Folmer",
"role": "Current lead"
},
{
"name": "Contributors",
"homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors"
} }
], ],
"description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
"homepage": "https://github.com/squizlabs/PHP_CodeSniffer", "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer",
"keywords": [ "keywords": [
"phpcs", "phpcs",
"standards", "standards",
"static analysis" "static analysis"
], ],
"support": { "support": {
"issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", "issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues",
"source": "https://github.com/squizlabs/PHP_CodeSniffer", "security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy",
"wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" "source": "https://github.com/PHPCSStandards/PHP_CodeSniffer",
"wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki"
}, },
"time": "2023-02-22T23:07:41+00:00" "funding": [
{
"url": "https://github.com/PHPCSStandards",
"type": "github"
},
{
"url": "https://github.com/jrfnl",
"type": "github"
},
{
"url": "https://opencollective.com/php_codesniffer",
"type": "open_collective"
}
],
"time": "2024-01-11T20:47:48+00:00"
}, },
{ {
"name": "symfony/console", "name": "symfony/console",
"version": "v5.4.26", "version": "v5.4.35",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/console.git", "url": "https://github.com/symfony/console.git",
"reference": "b504a3d266ad2bb632f196c0936ef2af5ff6e273" "reference": "dbdf6adcb88d5f83790e1efb57ef4074309d3931"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/b504a3d266ad2bb632f196c0936ef2af5ff6e273", "url": "https://api.github.com/repos/symfony/console/zipball/dbdf6adcb88d5f83790e1efb57ef4074309d3931",
"reference": "b504a3d266ad2bb632f196c0936ef2af5ff6e273", "reference": "dbdf6adcb88d5f83790e1efb57ef4074309d3931",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -3873,7 +3894,7 @@
"terminal" "terminal"
], ],
"support": { "support": {
"source": "https://github.com/symfony/console/tree/v5.4.26" "source": "https://github.com/symfony/console/tree/v5.4.35"
}, },
"funding": [ "funding": [
{ {
@ -3889,7 +3910,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2023-07-19T20:11:33+00:00" "time": "2024-01-23T14:28:09+00:00"
}, },
{ {
"name": "symfony/deprecation-contracts", "name": "symfony/deprecation-contracts",
@ -3960,16 +3981,16 @@
}, },
{ {
"name": "symfony/polyfill-ctype", "name": "symfony/polyfill-ctype",
"version": "v1.27.0", "version": "v1.29.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git", "url": "https://github.com/symfony/polyfill-ctype.git",
"reference": "5bbc823adecdae860bb64756d639ecfec17b050a" "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4",
"reference": "5bbc823adecdae860bb64756d639ecfec17b050a", "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -3983,9 +4004,6 @@
}, },
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": {
"dev-main": "1.27-dev"
},
"thanks": { "thanks": {
"name": "symfony/polyfill", "name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill" "url": "https://github.com/symfony/polyfill"
@ -4022,7 +4040,7 @@
"portable" "portable"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0"
}, },
"funding": [ "funding": [
{ {
@ -4038,20 +4056,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-11-03T14:55:06+00:00" "time": "2024-01-29T20:11:03+00:00"
}, },
{ {
"name": "symfony/polyfill-intl-grapheme", "name": "symfony/polyfill-intl-grapheme",
"version": "v1.27.0", "version": "v1.29.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-intl-grapheme.git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
"reference": "511a08c03c1960e08a883f4cffcacd219b758354" "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/32a9da87d7b3245e09ac426c83d334ae9f06f80f",
"reference": "511a08c03c1960e08a883f4cffcacd219b758354", "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -4062,9 +4080,6 @@
}, },
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": {
"dev-main": "1.27-dev"
},
"thanks": { "thanks": {
"name": "symfony/polyfill", "name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill" "url": "https://github.com/symfony/polyfill"
@ -4103,7 +4118,7 @@
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.29.0"
}, },
"funding": [ "funding": [
{ {
@ -4119,20 +4134,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-11-03T14:55:06+00:00" "time": "2024-01-29T20:11:03+00:00"
}, },
{ {
"name": "symfony/polyfill-intl-normalizer", "name": "symfony/polyfill-intl-normalizer",
"version": "v1.27.0", "version": "v1.29.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
"reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" "reference": "bc45c394692b948b4d383a08d7753968bed9a83d"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d",
"reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", "reference": "bc45c394692b948b4d383a08d7753968bed9a83d",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -4143,9 +4158,6 @@
}, },
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": {
"dev-main": "1.27-dev"
},
"thanks": { "thanks": {
"name": "symfony/polyfill", "name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill" "url": "https://github.com/symfony/polyfill"
@ -4187,7 +4199,7 @@
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0"
}, },
"funding": [ "funding": [
{ {
@ -4203,20 +4215,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-11-03T14:55:06+00:00" "time": "2024-01-29T20:11:03+00:00"
}, },
{ {
"name": "symfony/polyfill-mbstring", "name": "symfony/polyfill-mbstring",
"version": "v1.27.0", "version": "v1.29.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git", "url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
"reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -4230,9 +4242,6 @@
}, },
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": {
"dev-main": "1.27-dev"
},
"thanks": { "thanks": {
"name": "symfony/polyfill", "name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill" "url": "https://github.com/symfony/polyfill"
@ -4270,7 +4279,7 @@
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0"
}, },
"funding": [ "funding": [
{ {
@ -4286,20 +4295,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-11-03T14:55:06+00:00" "time": "2024-01-29T20:11:03+00:00"
}, },
{ {
"name": "symfony/polyfill-php73", "name": "symfony/polyfill-php73",
"version": "v1.27.0", "version": "v1.29.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-php73.git", "url": "https://github.com/symfony/polyfill-php73.git",
"reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9" "reference": "21bd091060673a1177ae842c0ef8fe30893114d2"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/9e8ecb5f92152187c4799efd3c96b78ccab18ff9", "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/21bd091060673a1177ae842c0ef8fe30893114d2",
"reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9", "reference": "21bd091060673a1177ae842c0ef8fe30893114d2",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -4307,9 +4316,6 @@
}, },
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": {
"dev-main": "1.27-dev"
},
"thanks": { "thanks": {
"name": "symfony/polyfill", "name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill" "url": "https://github.com/symfony/polyfill"
@ -4349,7 +4355,7 @@
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-php73/tree/v1.27.0" "source": "https://github.com/symfony/polyfill-php73/tree/v1.29.0"
}, },
"funding": [ "funding": [
{ {
@ -4365,7 +4371,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-11-03T14:55:06+00:00" "time": "2024-01-29T20:11:03+00:00"
}, },
{ {
"name": "symfony/service-contracts", "name": "symfony/service-contracts",
@ -4452,16 +4458,16 @@
}, },
{ {
"name": "symfony/string", "name": "symfony/string",
"version": "v5.4.26", "version": "v5.4.35",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/string.git", "url": "https://github.com/symfony/string.git",
"reference": "1181fe9270e373537475e826873b5867b863883c" "reference": "c209c4d0559acce1c9a2067612cfb5d35756edc2"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/string/zipball/1181fe9270e373537475e826873b5867b863883c", "url": "https://api.github.com/repos/symfony/string/zipball/c209c4d0559acce1c9a2067612cfb5d35756edc2",
"reference": "1181fe9270e373537475e826873b5867b863883c", "reference": "c209c4d0559acce1c9a2067612cfb5d35756edc2",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -4518,7 +4524,7 @@
"utf8" "utf8"
], ],
"support": { "support": {
"source": "https://github.com/symfony/string/tree/v5.4.26" "source": "https://github.com/symfony/string/tree/v5.4.35"
}, },
"funding": [ "funding": [
{ {
@ -4534,20 +4540,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2023-06-28T12:46:07+00:00" "time": "2024-01-23T13:51:25+00:00"
}, },
{ {
"name": "theseer/tokenizer", "name": "theseer/tokenizer",
"version": "1.2.1", "version": "1.2.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/theseer/tokenizer.git", "url": "https://github.com/theseer/tokenizer.git",
"reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b2ad5003ca10d4ee50a12da31de12a5774ba6b96",
"reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -4576,7 +4582,7 @@
"description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
"support": { "support": {
"issues": "https://github.com/theseer/tokenizer/issues", "issues": "https://github.com/theseer/tokenizer/issues",
"source": "https://github.com/theseer/tokenizer/tree/1.2.1" "source": "https://github.com/theseer/tokenizer/tree/1.2.2"
}, },
"funding": [ "funding": [
{ {
@ -4584,7 +4590,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2021-07-28T10:34:58+00:00" "time": "2023-11-20T00:12:19+00:00"
}, },
{ {
"name": "vimeo/psalm", "name": "vimeo/psalm",
@ -4696,31 +4702,31 @@
}, },
{ {
"name": "vlucas/phpdotenv", "name": "vlucas/phpdotenv",
"version": "v5.5.0", "version": "v5.6.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/vlucas/phpdotenv.git", "url": "https://github.com/vlucas/phpdotenv.git",
"reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7" "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4",
"reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"ext-pcre": "*", "ext-pcre": "*",
"graham-campbell/result-type": "^1.0.2", "graham-campbell/result-type": "^1.1.2",
"php": "^7.1.3 || ^8.0", "php": "^7.2.5 || ^8.0",
"phpoption/phpoption": "^1.8", "phpoption/phpoption": "^1.9.2",
"symfony/polyfill-ctype": "^1.23", "symfony/polyfill-ctype": "^1.24",
"symfony/polyfill-mbstring": "^1.23.1", "symfony/polyfill-mbstring": "^1.24",
"symfony/polyfill-php80": "^1.23.1" "symfony/polyfill-php80": "^1.24"
}, },
"require-dev": { "require-dev": {
"bamarni/composer-bin-plugin": "^1.4.1", "bamarni/composer-bin-plugin": "^1.8.2",
"ext-filter": "*", "ext-filter": "*",
"phpunit/phpunit": "^7.5.20 || ^8.5.30 || ^9.5.25" "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2"
}, },
"suggest": { "suggest": {
"ext-filter": "Required to use the boolean validator." "ext-filter": "Required to use the boolean validator."
@ -4732,7 +4738,7 @@
"forward-command": true "forward-command": true
}, },
"branch-alias": { "branch-alias": {
"dev-master": "5.5-dev" "dev-master": "5.6-dev"
} }
}, },
"autoload": { "autoload": {
@ -4764,7 +4770,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/vlucas/phpdotenv/issues", "issues": "https://github.com/vlucas/phpdotenv/issues",
"source": "https://github.com/vlucas/phpdotenv/tree/v5.5.0" "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.0"
}, },
"funding": [ "funding": [
{ {
@ -4776,7 +4782,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-10-16T01:01:54+00:00" "time": "2023-11-12T22:43:29+00:00"
}, },
{ {
"name": "webmozart/assert", "name": "webmozart/assert",

View file

@ -6,6 +6,7 @@
*/ */
use WooCommerce\PayPalCommerce\PayLaterBlock\PayLaterBlockModule; use WooCommerce\PayPalCommerce\PayLaterBlock\PayLaterBlockModule;
use WooCommerce\PayPalCommerce\PayLaterConfigurator\PayLaterConfiguratorModule;
use WooCommerce\PayPalCommerce\PluginModule; use WooCommerce\PayPalCommerce\PluginModule;
return function ( string $root_dir ): iterable { return function ( string $root_dir ): iterable {
@ -71,5 +72,9 @@ return function ( string $root_dir ): iterable {
$modules[] = ( require "$modules_dir/ppcp-paylater-block/module.php" )(); $modules[] = ( require "$modules_dir/ppcp-paylater-block/module.php" )();
} }
if ( PayLaterConfiguratorModule::is_enabled() ) {
$modules[] = ( require "$modules_dir/ppcp-paylater-configurator/module.php" )();
}
return $modules; return $modules;
}; };

View file

@ -422,6 +422,7 @@ class CreateOrderEndpoint implements EndpointInterface {
* *
* @throws RuntimeException If create order request fails. * @throws RuntimeException If create order request fails.
* @throws PayPalApiException If create order request fails. * @throws PayPalApiException If create order request fails.
*
* phpcs:disable Squiz.Commenting.FunctionCommentThrowTag.WrongNumber * phpcs:disable Squiz.Commenting.FunctionCommentThrowTag.WrongNumber
*/ */
private function create_paypal_order( \WC_Order $wc_order = null, string $payment_method = '', array $data = array() ): Order { private function create_paypal_order( \WC_Order $wc_order = null, string $payment_method = '', array $data = array() ): Order {

View file

@ -0,0 +1,14 @@
{
"presets": [
[
"@babel/preset-env",
{
"useBuiltIns": "usage",
"corejs": "3.25.0"
}
],
[
"@babel/preset-react"
]
]
}

View file

@ -0,0 +1,3 @@
node_modules
assets/js
assets/css

View file

@ -0,0 +1,17 @@
{
"name": "woocommerce/ppcp-paylater-configurator",
"type": "dhii-mod",
"description": "Pay Later Messaging configurator module for PPCP",
"license": "GPL-2.0",
"require": {
"php": "^7.2 | ^8.0",
"dhii/module-interface": "^0.3.0-alpha1"
},
"autoload": {
"psr-4": {
"WooCommerce\\PayPalCommerce\\PayLaterConfigurator\\": "src"
}
},
"minimum-stability": "dev",
"prefer-stable": true
}

View file

@ -0,0 +1,74 @@
<?php
/**
* The Pay Later configurator module extensions.
*
* @package WooCommerce\PayPalCommerce\PayLaterConfigurator
*/
declare(strict_types=1);
namespace WooCommerce\PayPalCommerce\PayLaterConfigurator;
use WooCommerce\PayPalCommerce\Vendor\Psr\Container\ContainerInterface;
return array(
'wcgateway.settings.fields' => function ( ContainerInterface $container, array $fields ): array {
$old_fields = array(
'pay_later_messaging_locations',
'pay_later_enable_styling_per_messaging_location',
'pay_later_general_message_layout',
'pay_later_general_message_logo',
'pay_later_general_message_position',
'pay_later_general_message_color',
'pay_later_general_message_flex_color',
'pay_later_general_message_flex_ratio',
'pay_later_general_message_preview',
'pay_later_product_messaging_heading',
'pay_later_product_message_layout',
'pay_later_product_message_logo',
'pay_later_product_message_position',
'pay_later_product_message_color',
'pay_later_product_message_flex_color',
'pay_later_product_message_flex_ratio',
'pay_later_product_message_preview',
'pay_later_cart_messaging_heading',
'pay_later_cart_message_layout',
'pay_later_cart_message_logo',
'pay_later_cart_message_position',
'pay_later_cart_message_color',
'pay_later_cart_message_flex_color',
'pay_later_cart_message_flex_ratio',
'pay_later_cart_message_preview',
'pay_later_checkout_messaging_heading',
'pay_later_checkout_message_layout',
'pay_later_checkout_message_logo',
'pay_later_checkout_message_position',
'pay_later_checkout_message_color',
'pay_later_checkout_message_flex_color',
'pay_later_checkout_message_flex_ratio',
'pay_later_checkout_message_preview',
'pay_later_shop_messaging_heading',
'pay_later_shop_message_layout',
'pay_later_shop_message_logo',
'pay_later_shop_message_position',
'pay_later_shop_message_color',
'pay_later_shop_message_flex_color',
'pay_later_shop_message_flex_ratio',
'pay_later_shop_message_preview',
'pay_later_home_messaging_heading',
'pay_later_home_message_layout',
'pay_later_home_message_logo',
'pay_later_home_message_position',
'pay_later_home_message_color',
'pay_later_home_message_flex_color',
'pay_later_home_message_flex_ratio',
'pay_later_home_message_preview',
'pay_later_messaging_enabled',
);
foreach ( $old_fields as $old_field ) {
unset( $fields[ $old_field ] );
}
return $fields;
},
);

View file

@ -0,0 +1,16 @@
<?php
/**
* The Pay Later configurator module.
*
* @package WooCommerce\PayPalCommerce\PayLaterConfigurator
*/
declare(strict_types=1);
namespace WooCommerce\PayPalCommerce\PayLaterConfigurator;
use WooCommerce\PayPalCommerce\Vendor\Dhii\Modular\Module\ModuleInterface;
return static function (): ModuleInterface {
return new PayLaterConfiguratorModule();
};

View file

@ -0,0 +1,33 @@
{
"name": "ppcp-paylater-configurator",
"version": "1.0.0",
"license": "GPL-3.0-or-later",
"browserslist": [
"> 0.5%",
"Safari >= 8",
"Chrome >= 41",
"Firefox >= 43",
"Edge >= 14"
],
"dependencies": {
"core-js": "^3.25.0"
},
"devDependencies": {
"@babel/core": "^7.19",
"@babel/preset-env": "^7.19",
"@babel/preset-react": "^7.18.6",
"@woocommerce/dependency-extraction-webpack-plugin": "^2.2.0",
"babel-loader": "^8.2",
"cross-env": "^7.0.3",
"file-loader": "^6.2.0",
"sass": "^1.42.1",
"sass-loader": "^12.1.0",
"webpack": "^5.76",
"webpack-cli": "^4.10"
},
"scripts": {
"build": "cross-env BABEL_ENV=default NODE_ENV=production webpack",
"watch": "cross-env BABEL_ENV=default NODE_ENV=production webpack --watch",
"dev": "cross-env BABEL_ENV=default webpack --watch"
}
}

View file

@ -0,0 +1,30 @@
#messaging-configurator {
& > div {
justify-content: left;
margin: 0;
& > div {
padding: 0;
}
}
.ppcp-paylater-configurator-publishButton {
display:none;
}
.ppcp-paylater-configurator-header {
font-size: 1.3em;
color: #1d2327;
margin: 1em 0;
font-weight: 600;
font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;
line-height: 1.3;
}
#configurator-eligibleContainer div:has(.ppcp-paylater-configurator-header#configurator-headerText) {
display: none;
}
.ppcp-paylater-configurator-subheader {
font-size: 14px;
line-height: 1.5;
color: #3c434a;
font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;
}
}

View file

@ -0,0 +1,45 @@
document.addEventListener( 'DOMContentLoaded', () => {
const form = document.querySelector('#mainform');
const table = form.querySelector('.form-table');
const saveChangesButton = form.querySelector('.woocommerce-save-button');
const publishButtonClassName = PcpPayLaterConfigurator.publishButtonClassName;
table.insertAdjacentHTML('afterend', '<div id="messaging-configurator"></div>');
saveChangesButton.addEventListener('click', () => {
form.querySelector('.' + publishButtonClassName).click();
// Delay the page refresh by a few milliseconds to ensure changes take effect
setTimeout(() => {
location.reload();
}, 1000);
});
merchantConfigurators.Messaging({
config: PcpPayLaterConfigurator.config,
merchantClientId: PcpPayLaterConfigurator.merchantClientId,
partnerClientId: PcpPayLaterConfigurator.partnerClientId,
partnerName: 'WooCommerce',
bnCode: 'Woo_PPCP',
placements: ['cart', 'checkout', 'product', 'category', 'homepage', 'custom_placement'],
styleOverrides: {
button: publishButtonClassName,
header: PcpPayLaterConfigurator.headerClassName,
subheader: PcpPayLaterConfigurator.subheaderClassName
},
onSave: data => {
fetch(PcpPayLaterConfigurator.ajax.save_config.endpoint, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
credentials: 'same-origin',
body: JSON.stringify({
nonce: PcpPayLaterConfigurator.ajax.save_config.nonce,
config: data,
}),
});
}
})
} );

View file

@ -0,0 +1,38 @@
<?php
/**
* The Pay Later configurator module services.
*
* @package WooCommerce\PayPalCommerce\PayLaterConfigurator
*/
declare(strict_types=1);
namespace WooCommerce\PayPalCommerce\PayLaterConfigurator;
use WooCommerce\PayPalCommerce\PayLaterConfigurator\Endpoint\SaveConfig;
use WooCommerce\PayPalCommerce\PayLaterConfigurator\Factory\ConfigFactory;
use WooCommerce\PayPalCommerce\Vendor\Psr\Container\ContainerInterface;
return array(
'paylater-configurator.url' => static function ( ContainerInterface $container ): string {
/**
* Cannot return false for this path.
*
* @psalm-suppress PossiblyFalseArgument
*/
return plugins_url(
'/modules/ppcp-paylater-configurator/',
dirname( realpath( __FILE__ ), 3 ) . '/woocommerce-paypal-payments.php'
);
},
'paylater-configurator.factory.config' => static function ( ContainerInterface $container ): ConfigFactory {
return new ConfigFactory();
},
'paylater-configurator.endpoint.save-config' => static function ( ContainerInterface $container ): SaveConfig {
return new SaveConfig(
$container->get( 'wcgateway.settings' ),
$container->get( 'button.request-data' ),
$container->get( 'woocommerce.logger.woocommerce' )
);
},
);

View file

@ -0,0 +1,168 @@
<?php
/**
* The endpoint for saving the Pay Later messaging config from the configurator.
*
* @package WooCommerce\PayPalCommerce\PayLaterConfigurator\Endpoint
*/
declare(strict_types=1);
namespace WooCommerce\PayPalCommerce\PayLaterConfigurator\Endpoint;
use Psr\Log\LoggerInterface;
use Throwable;
use WooCommerce\PayPalCommerce\Button\Endpoint\RequestData;
use WooCommerce\PayPalCommerce\WcGateway\Settings\Settings;
/**
* Class SaveConfig.
*/
class SaveConfig {
const ENDPOINT = 'ppc-save-message-config';
/**
* The settings.
*
* @var Settings
*/
protected $settings;
/**
* The request data.
*
* @var RequestData
*/
protected $request_data;
/**
* The logger.
*
* @var LoggerInterface
*/
private $logger;
/**
* SaveConfig constructor.
*
* @param Settings $settings The settings.
* @param RequestData $request_data The request data.
* @param LoggerInterface $logger The logger.
*/
public function __construct(
Settings $settings,
RequestData $request_data,
LoggerInterface $logger
) {
$this->settings = $settings;
$this->request_data = $request_data;
$this->logger = $logger;
}
/**
* Returns the nonce.
*/
public static function nonce(): string {
return self::ENDPOINT;
}
/**
* Handles the request.
*/
public function handle_request(): bool {
if ( ! current_user_can( 'manage_woocommerce' ) ) {
wp_send_json_error( 'Not admin.', 403 );
return false;
}
try {
$data = $this->request_data->read_request( $this->nonce() );
$this->save_config( $data['config']['config'] );
wp_send_json_success();
return true;
} catch ( Throwable $error ) {
$this->logger->error( "SaveConfig execution failed. {$error->getMessage()} {$error->getFile()}:{$error->getLine()}" );
wp_send_json_error();
return false;
}
}
/**
* Saves the config into the old settings.
*
* @param array $config The configurator config.
*/
private function save_config( array $config ): void {
$this->settings->set( 'pay_later_enable_styling_per_messaging_location', true );
$this->settings->set( 'pay_later_messaging_enabled', true );
$enabled_locations = array();
foreach ( $config as $placement => $data ) {
$location = $this->configurator_placement_to_location( $placement );
$this->save_config_for_location( $data, $location );
if ( $data['status'] === 'enabled' ) {
$enabled_locations[] = $location;
}
}
$this->settings->set( 'pay_later_messaging_locations', $enabled_locations );
$this->settings->persist();
}
/**
* Saves the config for a location into the old settings.
*
* @param array $config The configurator config for a location.
* @param string $location The location name in the old settings.
*/
private function save_config_for_location( array $config, string $location ): void {
$this->set_value_if_present( $config, 'layout', "pay_later_{$location}_message_layout" );
$this->set_value_if_present( $config, 'color', "pay_later_{$location}_message_flex_color" );
$this->set_value_if_present( $config, 'ratio', "pay_later_{$location}_message_flex_ratio" );
$this->set_value_if_present( $config, 'logo-position', "pay_later_{$location}_message_position" );
$this->set_value_if_present( $config, 'logo-type', "pay_later_{$location}_message_logo" );
$this->set_value_if_present( $config, 'logo-color', "pay_later_{$location}_message_color" );
$this->set_value_if_present( $config, 'text-size', "pay_later_{$location}_message_text_size" );
}
/**
* Sets the value in the settings if it is available in the config.
*
* @param array $config The configurator config.
* @param string $key The key in the config.
* @param string $settings_key The key in the settings.
*/
private function set_value_if_present( array $config, string $key, string $settings_key ): void {
if ( isset( $config[ $key ] ) ) {
$this->settings->set( $settings_key, $config[ $key ] );
}
}
/**
* Converts the configurator placement into location in the old settings.
*
* @param string $placement The configurator placement.
*/
private function configurator_placement_to_location( string $placement ): string {
switch ( $placement ) {
case 'cart':
case 'checkout':
case 'product':
return $placement;
case 'category':
return 'shop';
case 'homepage':
return 'home';
default:
return '';
}
}
}

View file

@ -0,0 +1,107 @@
<?php
/**
* The factory the Pay Later messaging configurator configs.
*
* @package WooCommerce\PayPalCommerce\PayLaterConfigurator\Endpoint
*/
declare(strict_types=1);
namespace WooCommerce\PayPalCommerce\PayLaterConfigurator\Factory;
use WooCommerce\PayPalCommerce\WcGateway\Settings\Settings;
/**
* Class ConfigFactory.
*/
class ConfigFactory {
/**
* Returns the configurator config for the given old settings.
*
* @param Settings $settings The settings.
*/
public function from_settings( Settings $settings ): array {
return array(
$this->location_to_configurator_placement( 'cart' ) => $this->for_location( $settings, 'cart' ),
$this->location_to_configurator_placement( 'checkout' ) => $this->for_location( $settings, 'checkout' ),
$this->location_to_configurator_placement( 'product' ) => $this->for_location( $settings, 'product' ),
$this->location_to_configurator_placement( 'shop' ) => $this->for_location( $settings, 'shop' ),
$this->location_to_configurator_placement( 'home' ) => $this->for_location( $settings, 'home' ),
);
}
/**
* Returns the configurator config for a location.
*
* @param Settings $settings The settings.
* @param string $location The location name in the old settings.
*/
private function for_location( Settings $settings, string $location ): array {
$selected_locations = $settings->has( 'pay_later_messaging_locations' ) ? $settings->get( 'pay_later_messaging_locations' ) : array();
$placement = $this->location_to_configurator_placement( $location );
if ( in_array( $placement, array( 'category', 'homepage' ), true ) ) {
$config = array(
'layout' => 'flex',
'color' => $this->get_or_default( $settings, "pay_later_{$location}_message_flex_color", 'black', array( 'black', 'blue', 'white', 'white-no-border' ) ),
'ratio' => $this->get_or_default( $settings, "pay_later_{$location}_message_flex_ratio", '8x1', array( '8x1', '20x1' ) ),
);
} else {
$config = array(
'layout' => 'text',
'logo-position' => $this->get_or_default( $settings, "pay_later_{$location}_message_position", 'left' ),
'logo-type' => $this->get_or_default( $settings, "pay_later_{$location}_message_logo", 'inline' ),
'text-color' => $this->get_or_default( $settings, "pay_later_{$location}_message_color", 'black' ),
'text-size' => $this->get_or_default( $settings, "pay_later_{$location}_message_text_size", '12' ),
);
}
return array_merge(
array(
'status' => in_array( $location, $selected_locations, true ) ? 'enabled' : 'disabled',
'placement' => $placement,
),
$config
);
}
/**
* Converts the location name from the old settings into the configurator placement.
*
* @param string $location The location name in the old settings.
*/
private function location_to_configurator_placement( string $location ): string {
switch ( $location ) {
case 'cart':
case 'checkout':
case 'product':
return $location;
case 'shop':
return 'category';
case 'home':
return 'homepage';
default:
return '';
}
}
/**
* Returns the settings value or default, if does not exist or not allowed value.
*
* @param Settings $settings The settings.
* @param string $key The key.
* @param mixed $default The default value.
* @param array|null $allowed_values The list of allowed values, or null if all values are allowed.
* @return mixed
*/
private function get_or_default( Settings $settings, string $key, $default, ?array $allowed_values = null ) {
if ( $settings->has( $key ) ) {
$value = $settings->get( $key );
if ( ! $allowed_values || in_array( $value, $allowed_values, true ) ) {
return $value;
}
}
return $default;
}
}

View file

@ -0,0 +1,133 @@
<?php
/**
* The Pay Later configurator module.
*
* @package WooCommerce\PayPalCommerce\PayLaterConfigurator
*/
declare(strict_types=1);
namespace WooCommerce\PayPalCommerce\PayLaterConfigurator;
use WooCommerce\PayPalCommerce\Button\Helper\MessagesApply;
use WooCommerce\PayPalCommerce\PayLaterConfigurator\Endpoint\SaveConfig;
use WooCommerce\PayPalCommerce\PayLaterConfigurator\Factory\ConfigFactory;
use WooCommerce\PayPalCommerce\Vendor\Dhii\Container\ServiceProvider;
use WooCommerce\PayPalCommerce\Vendor\Dhii\Modular\Module\ModuleInterface;
use WooCommerce\PayPalCommerce\Vendor\Interop\Container\ServiceProviderInterface;
use WooCommerce\PayPalCommerce\Vendor\Psr\Container\ContainerInterface;
use WooCommerce\PayPalCommerce\WcGateway\Settings\Settings;
/**
* Class PayLaterConfiguratorModule
*/
class PayLaterConfiguratorModule implements ModuleInterface {
/**
* Returns whether the module should be loaded.
*/
public static function is_enabled(): bool {
return apply_filters(
// phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores
'woocommerce.feature-flags.woocommerce_paypal_payments.paylater_configurator_enabled',
getenv( 'PCP_PAYLATER_CONFIGURATOR' ) !== '0'
);
}
/**
* {@inheritDoc}
*/
public function setup(): ServiceProviderInterface {
return new ServiceProvider(
require __DIR__ . '/../services.php',
require __DIR__ . '/../extensions.php'
);
}
/**
* {@inheritDoc}
*/
public function run( ContainerInterface $c ): void {
$messages_apply = $c->get( 'button.helper.messages-apply' );
assert( $messages_apply instanceof MessagesApply );
if ( ! $messages_apply->for_country() ) {
return;
}
add_action(
'wc_ajax_' . SaveConfig::ENDPOINT,
static function () use ( $c ) {
$endpoint = $c->get( 'paylater-configurator.endpoint.save-config' );
assert( $endpoint instanceof SaveConfig );
$endpoint->handle_request();
}
);
$current_page_id = $c->get( 'wcgateway.current-ppcp-settings-page-id' );
if ( $current_page_id !== Settings::PAY_LATER_TAB_ID ) {
return;
}
$settings = $c->get( 'wcgateway.settings' );
assert( $settings instanceof Settings );
add_action(
'init',
static function () use ( $c, $settings ) {
wp_enqueue_script(
'ppcp-paylater-configurator-lib',
'https://www.paypalobjects.com/merchant-library/preview/merchant-configurator.js',
array(),
$c->get( 'ppcp.asset-version' ),
true
);
wp_enqueue_script(
'ppcp-paylater-configurator',
$c->get( 'paylater-configurator.url' ) . '/assets/js/paylater-configurator.js',
array(),
$c->get( 'ppcp.asset-version' ),
true
);
wp_enqueue_style(
'ppcp-paylater-configurator-style',
$c->get( 'paylater-configurator.url' ) . '/assets/css/paylater-configurator.css',
array(),
$c->get( 'ppcp.asset-version' )
);
$config_factory = $c->get( 'paylater-configurator.factory.config' );
assert( $config_factory instanceof ConfigFactory );
wp_localize_script(
'ppcp-paylater-configurator',
'PcpPayLaterConfigurator',
array(
'ajax' => array(
'save_config' => array(
'endpoint' => \WC_AJAX::get_endpoint( SaveConfig::ENDPOINT ),
'nonce' => wp_create_nonce( SaveConfig::nonce() ),
),
),
'config' => $config_factory->from_settings( $settings ),
'merchantClientId' => $settings->get( 'client_id' ),
'partnerClientId' => $c->get( 'api.partner_merchant_id' ),
'publishButtonClassName' => 'ppcp-paylater-configurator-publishButton',
'headerClassName' => 'ppcp-paylater-configurator-header',
'subheaderClassName' => 'ppcp-paylater-configurator-subheader',
)
);
}
);
}
/**
* Returns the key for the module.
*
* @return string|void
*/
public function getKey() {
}
}

View file

@ -0,0 +1,39 @@
const path = require('path');
const isProduction = process.env.NODE_ENV === 'production';
const DependencyExtractionWebpackPlugin = require( '@woocommerce/dependency-extraction-webpack-plugin' );
module.exports = {
devtool: isProduction ? 'source-map' : 'eval-source-map',
mode: isProduction ? 'production' : 'development',
target: 'web',
plugins: [ new DependencyExtractionWebpackPlugin() ],
entry: {
'paylater-configurator': path.resolve('./resources/js/paylater-configurator.js'),
'paylater-configurator-style': path.resolve('./resources/css/paylater-configurator.scss'),
},
output: {
path: path.resolve(__dirname, 'assets/'),
filename: 'js/[name].js',
},
module: {
rules: [{
test: /\.js?$/,
exclude: /node_modules/,
loader: 'babel-loader',
},
{
test: /\.scss$/,
exclude: /node_modules/,
use: [
{
loader: 'file-loader',
options: {
name: 'css/[name].css',
}
},
{loader:'sass-loader'}
]
}]
}
};

File diff suppressed because it is too large Load diff

View file

@ -10,6 +10,7 @@
"install:modules:ppcp-applepay": "cd modules/ppcp-applepay && yarn install", "install:modules:ppcp-applepay": "cd modules/ppcp-applepay && yarn install",
"install:modules:ppcp-blocks": "cd modules/ppcp-blocks && yarn install", "install:modules:ppcp-blocks": "cd modules/ppcp-blocks && yarn install",
"install:modules:ppcp-paylater-block": "cd modules/ppcp-paylater-block && yarn install", "install:modules:ppcp-paylater-block": "cd modules/ppcp-paylater-block && yarn install",
"install:modules:ppcp-paylater-configurator": "cd modules/ppcp-paylater-configurator && yarn install",
"install:modules:ppcp-button": "cd modules/ppcp-button && yarn install", "install:modules:ppcp-button": "cd modules/ppcp-button && yarn install",
"install:modules:ppcp-googlepay": "cd modules/ppcp-googlepay && yarn install", "install:modules:ppcp-googlepay": "cd modules/ppcp-googlepay && yarn install",
"install:modules:ppcp-wc-gateway": "cd modules/ppcp-wc-gateway && yarn install", "install:modules:ppcp-wc-gateway": "cd modules/ppcp-wc-gateway && yarn install",
@ -23,6 +24,7 @@
"build:modules:ppcp-applepay": "cd modules/ppcp-applepay && yarn run build", "build:modules:ppcp-applepay": "cd modules/ppcp-applepay && yarn run build",
"build:modules:ppcp-blocks": "cd modules/ppcp-blocks && yarn run build", "build:modules:ppcp-blocks": "cd modules/ppcp-blocks && yarn run build",
"build:modules:ppcp-paylater-block": "cd modules/ppcp-paylater-block && yarn run build", "build:modules:ppcp-paylater-block": "cd modules/ppcp-paylater-block && yarn run build",
"build:modules:ppcp-paylater-configurator": "cd modules/ppcp-paylater-configurator && yarn run build",
"build:modules:ppcp-button": "cd modules/ppcp-button && yarn run build", "build:modules:ppcp-button": "cd modules/ppcp-button && yarn run build",
"build:modules:ppcp-googlepay": "cd modules/ppcp-googlepay && yarn run build", "build:modules:ppcp-googlepay": "cd modules/ppcp-googlepay && yarn run build",
"build:modules:ppcp-wc-gateway": "cd modules/ppcp-wc-gateway && yarn run build", "build:modules:ppcp-wc-gateway": "cd modules/ppcp-wc-gateway && yarn run build",
@ -37,6 +39,7 @@
"watch:modules:ppcp-applepay": "cd modules/ppcp-applepay && yarn run watch", "watch:modules:ppcp-applepay": "cd modules/ppcp-applepay && yarn run watch",
"watch:modules:ppcp-blocks": "cd modules/ppcp-blocks && yarn run watch", "watch:modules:ppcp-blocks": "cd modules/ppcp-blocks && yarn run watch",
"watch:modules:ppcp-paylater-block": "cd modules/ppcp-paylater-block && yarn run watch", "watch:modules:ppcp-paylater-block": "cd modules/ppcp-paylater-block && yarn run watch",
"watch:modules:ppcp-paylater-configurator": "cd modules/ppcp-paylater-configurator && yarn run watch",
"watch:modules:ppcp-button": "cd modules/ppcp-button && yarn run watch", "watch:modules:ppcp-button": "cd modules/ppcp-button && yarn run watch",
"watch:modules:ppcp-googlepay": "cd modules/ppcp-googlepay && yarn run watch", "watch:modules:ppcp-googlepay": "cd modules/ppcp-googlepay && yarn run watch",
"watch:modules:ppcp-wc-gateway": "cd modules/ppcp-wc-gateway && yarn run watch", "watch:modules:ppcp-wc-gateway": "cd modules/ppcp-wc-gateway && yarn run watch",