diff --git a/CHANGELOG.md b/CHANGELOG.md index fac1a179..f72cdbbf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,9 @@ # Changelog All notable changes to this project will be documented in this file. +## [3.8.4] +- Add support for Checkout Design v2. + ## [3.8.3] - Fix: Unable to refund orders that contain deleted products. - Avoid unnecessary extra API calls in the daily flow. diff --git a/altapay.php b/altapay.php index 48d2ee0f..7e1318e8 100755 --- a/altapay.php +++ b/altapay.php @@ -7,10 +7,10 @@ * Author URI: https://altapay.com * Text Domain: altapay * Domain Path: /languages - * Version: 3.8.3 + * Version: 3.8.4 * Name: SDM_Altapay * WC requires at least: 3.9.0 - * WC tested up to: 10.1.2 + * WC tested up to: 10.2.1 * * @package Altapay */ @@ -41,7 +41,7 @@ } if ( ! defined( 'ALTAPAY_PLUGIN_VERSION' ) ) { - define( 'ALTAPAY_PLUGIN_VERSION', '3.8.3' ); + define( 'ALTAPAY_PLUGIN_VERSION', '3.8.4' ); } // Include the autoloader, so we can dynamically include the rest of the classes. diff --git a/composer.lock b/composer.lock index 12453308..27e68692 100644 --- a/composer.lock +++ b/composer.lock @@ -8,16 +8,16 @@ "packages": [ { "name": "altapay/api-php", - "version": "3.4.5", + "version": "3.5.4", "source": { "type": "git", "url": "https://github.com/AltaPay/api-php.git", - "reference": "b2c89ed8f82597eadf4572ace875e08f340d2bc3" + "reference": "6fd4457ebb66a83c0995ad86764db40207ad5f53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/AltaPay/api-php/zipball/b2c89ed8f82597eadf4572ace875e08f340d2bc3", - "reference": "b2c89ed8f82597eadf4572ace875e08f340d2bc3", + "url": "https://api.github.com/repos/AltaPay/api-php/zipball/6fd4457ebb66a83c0995ad86764db40207ad5f53", + "reference": "6fd4457ebb66a83c0995ad86764db40207ad5f53", "shasum": "" }, "require": { @@ -29,14 +29,14 @@ "ext-simplexml": "*", "ext-spl": "*", "guzzlehttp/guzzle": "^6.0 || ^7.0", - "php": "^5.6 || ^7.0 || ^8.0", + "php": "^7.0 || ^8.0", "symfony/event-dispatcher": "^2.1 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0", "symfony/options-resolver": "^2.6 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.0", "fzaninotto/faker": "^1.6", - "phpstan/phpstan": "^1.8", + "phpstan/phpstan": "^2.1", "phpstan/phpstan-phpunit": "*", "phpstan/phpstan-strict-rules": "*", "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" @@ -58,9 +58,9 @@ ], "support": { "issues": "https://github.com/AltaPay/api-php/issues", - "source": "https://github.com/AltaPay/api-php/tree/3.4.5" + "source": "https://github.com/AltaPay/api-php/tree/3.5.4" }, - "time": "2024-11-06T06:52:56+00:00" + "time": "2025-09-15T05:02:36+00:00" }, { "name": "composer/package-versions-deprecated", @@ -137,16 +137,16 @@ }, { "name": "eftec/bladeone", - "version": "4.16", + "version": "4.19.1", "source": { "type": "git", "url": "https://github.com/EFTEC/BladeOne.git", - "reference": "94570df4cd5e81a1efd0bb25d451bd715d529279" + "reference": "a22f6471c01c26fea5f6a0d0aca9b5674fc999be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/EFTEC/BladeOne/zipball/94570df4cd5e81a1efd0bb25d451bd715d529279", - "reference": "94570df4cd5e81a1efd0bb25d451bd715d529279", + "url": "https://api.github.com/repos/EFTEC/BladeOne/zipball/a22f6471c01c26fea5f6a0d0aca9b5674fc999be", + "reference": "a22f6471c01c26fea5f6a0d0aca9b5674fc999be", "shasum": "" }, "require": { @@ -190,9 +190,9 @@ ], "support": { "issues": "https://github.com/EFTEC/BladeOne/issues", - "source": "https://github.com/EFTEC/BladeOne/tree/4.16" + "source": "https://github.com/EFTEC/BladeOne/tree/4.19.1" }, - "time": "2024-10-11T17:41:08+00:00" + "time": "2025-09-03T20:50:39+00:00" }, { "name": "fidry/console", @@ -280,22 +280,22 @@ }, { "name": "guzzlehttp/guzzle", - "version": "7.9.2", + "version": "7.10.0", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "d281ed313b989f213357e3be1a179f02196ac99b" + "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/d281ed313b989f213357e3be1a179f02196ac99b", - "reference": "d281ed313b989f213357e3be1a179f02196ac99b", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b51ac707cfa420b7bfd4e4d5e510ba8008e822b4", + "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.5.3 || ^2.0.3", - "guzzlehttp/psr7": "^2.7.0", + "guzzlehttp/promises": "^2.3", + "guzzlehttp/psr7": "^2.8", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -386,7 +386,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.9.2" + "source": "https://github.com/guzzle/guzzle/tree/7.10.0" }, "funding": [ { @@ -402,20 +402,20 @@ "type": "tidelift" } ], - "time": "2024-07-24T11:22:20+00:00" + "time": "2025-08-23T22:36:01+00:00" }, { "name": "guzzlehttp/promises", - "version": "2.0.4", + "version": "2.3.0", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455" + "reference": "481557b130ef3790cf82b713667b43030dc9c957" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/f9c436286ab2892c7db7be8c8da4ef61ccf7b455", - "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455", + "url": "https://api.github.com/repos/guzzle/promises/zipball/481557b130ef3790cf82b713667b43030dc9c957", + "reference": "481557b130ef3790cf82b713667b43030dc9c957", "shasum": "" }, "require": { @@ -423,7 +423,7 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.39 || ^9.6.20" + "phpunit/phpunit": "^8.5.44 || ^9.6.25" }, "type": "library", "extra": { @@ -469,7 +469,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/2.0.4" + "source": "https://github.com/guzzle/promises/tree/2.3.0" }, "funding": [ { @@ -485,20 +485,20 @@ "type": "tidelift" } ], - "time": "2024-10-17T10:06:22+00:00" + "time": "2025-08-22T14:34:08+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.7.0", + "version": "2.8.0", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201" + "reference": "21dc724a0583619cd1652f673303492272778051" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/a70f5c95fb43bc83f07c9c948baa0dc1829bf201", - "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/21dc724a0583619cd1652f673303492272778051", + "reference": "21dc724a0583619cd1652f673303492272778051", "shasum": "" }, "require": { @@ -514,7 +514,7 @@ "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", "http-interop/http-factory-tests": "0.9.0", - "phpunit/phpunit": "^8.5.39 || ^9.6.20" + "phpunit/phpunit": "^8.5.44 || ^9.6.25" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" @@ -585,7 +585,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.7.0" + "source": "https://github.com/guzzle/psr7/tree/2.8.0" }, "funding": [ { @@ -601,7 +601,7 @@ "type": "tidelift" } ], - "time": "2024-07-18T11:15:46+00:00" + "time": "2025-08-23T21:21:41+00:00" }, { "name": "humbug/php-scoper", @@ -1208,12 +1208,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -1364,12 +1364,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -1621,7 +1621,7 @@ }, { "name": "symfony/polyfill-ctype", - "version": "v1.31.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", @@ -1645,8 +1645,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -1680,7 +1680,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0" }, "funding": [ { @@ -1691,6 +1691,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -1700,16 +1704,16 @@ }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.31.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" + "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", - "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/380872130d3a5dd3ace2f4010d95125fde5d5c70", + "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70", "shasum": "" }, "require": { @@ -1721,8 +1725,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -1758,7 +1762,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.33.0" }, "funding": [ { @@ -1769,16 +1773,20 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2025-06-27T09:58:17+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.31.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", @@ -1799,8 +1807,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -1839,7 +1847,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.33.0" }, "funding": [ { @@ -1850,6 +1858,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -1859,19 +1871,20 @@ }, { "name": "symfony/polyfill-mbstring", - "version": "v1.31.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341" + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341", - "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493", + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493", "shasum": "" }, "require": { + "ext-iconv": "*", "php": ">=7.2" }, "provide": { @@ -1883,8 +1896,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -1919,7 +1932,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.0" }, "funding": [ { @@ -1930,25 +1943,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2024-12-23T08:48:59+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.31.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8" + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", - "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608", + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608", "shasum": "" }, "require": { @@ -1957,8 +1974,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -1999,7 +2016,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.33.0" }, "funding": [ { @@ -2010,16 +2027,20 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2025-01-02T08:10:11+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.31.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", @@ -2037,8 +2058,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -2075,7 +2096,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.33.0" }, "funding": [ { @@ -2086,6 +2107,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -2120,12 +2145,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -2533,16 +2558,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.12.1", + "version": "1.13.4", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845" + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/123267b2c49fbf30d78a7b2d333f6be754b94845", - "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/07d290f0c47959fd5eed98c95ee5602db07e0b6a", + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a", "shasum": "" }, "require": { @@ -2581,7 +2606,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.12.1" + "source": "https://github.com/myclabs/DeepCopy/tree/1.13.4" }, "funding": [ { @@ -2589,7 +2614,7 @@ "type": "tidelift" } ], - "time": "2024-11-08T17:47:46+00:00" + "time": "2025-08-01T08:46:24+00:00" }, { "name": "phar-io/manifest", @@ -3160,16 +3185,16 @@ }, { "name": "phpunit/phpunit", - "version": "8.5.41", + "version": "8.5.47", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "d843cb5bcf0bf9ae3484016444fe0c5b6ec7e4fa" + "reference": "c0134803429af3aef9c5fd2fbb41a1f1340fe20d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/d843cb5bcf0bf9ae3484016444fe0c5b6ec7e4fa", - "reference": "d843cb5bcf0bf9ae3484016444fe0c5b6ec7e4fa", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c0134803429af3aef9c5fd2fbb41a1f1340fe20d", + "reference": "c0134803429af3aef9c5fd2fbb41a1f1340fe20d", "shasum": "" }, "require": { @@ -3180,7 +3205,7 @@ "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.12.1", + "myclabs/deep-copy": "^1.13.4", "phar-io/manifest": "^2.0.4", "phar-io/version": "^3.2.1", "php": ">=7.2", @@ -3188,11 +3213,11 @@ "phpunit/php-file-iterator": "^2.0.6", "phpunit/php-text-template": "^1.2.1", "phpunit/php-timer": "^2.1.4", - "sebastian/comparator": "^3.0.5", + "sebastian/comparator": "^3.0.6", "sebastian/diff": "^3.0.6", "sebastian/environment": "^4.2.5", - "sebastian/exporter": "^3.1.6", - "sebastian/global-state": "^3.0.5", + "sebastian/exporter": "^3.1.7", + "sebastian/global-state": "^3.0.6", "sebastian/object-enumerator": "^3.0.5", "sebastian/resource-operations": "^2.0.3", "sebastian/type": "^1.1.5", @@ -3238,7 +3263,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/8.5.41" + "source": "https://github.com/sebastianbergmann/phpunit/tree/8.5.47" }, "funding": [ { @@ -3249,12 +3274,20 @@ "url": "https://github.com/sebastianbergmann", "type": "github" }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, { "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", "type": "tidelift" } ], - "time": "2024-12-05T13:44:26+00:00" + "time": "2025-09-23T06:18:09+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -3313,16 +3346,16 @@ }, { "name": "sebastian/comparator", - "version": "3.0.5", + "version": "3.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "1dc7ceb4a24aede938c7af2a9ed1de09609ca770" + "reference": "4b3c947888c81708b20fb081bb653a2ba68f989a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1dc7ceb4a24aede938c7af2a9ed1de09609ca770", - "reference": "1dc7ceb4a24aede938c7af2a9ed1de09609ca770", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/4b3c947888c81708b20fb081bb653a2ba68f989a", + "reference": "4b3c947888c81708b20fb081bb653a2ba68f989a", "shasum": "" }, "require": { @@ -3375,15 +3408,27 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/3.0.5" + "source": "https://github.com/sebastianbergmann/comparator/tree/3.0.6" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator", + "type": "tidelift" } ], - "time": "2022-09-14T12:31:48+00:00" + "time": "2025-08-10T05:29:24+00:00" }, { "name": "sebastian/diff", @@ -3516,16 +3561,16 @@ }, { "name": "sebastian/exporter", - "version": "3.1.6", + "version": "3.1.7", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "1939bc8fd1d39adcfa88c5b35335910869214c56" + "reference": "8c86ae3e84f69acff53b9d4b96614a68e3572901" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/1939bc8fd1d39adcfa88c5b35335910869214c56", - "reference": "1939bc8fd1d39adcfa88c5b35335910869214c56", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/8c86ae3e84f69acff53b9d4b96614a68e3572901", + "reference": "8c86ae3e84f69acff53b9d4b96614a68e3572901", "shasum": "" }, "require": { @@ -3581,28 +3626,40 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/3.1.6" + "source": "https://github.com/sebastianbergmann/exporter/tree/3.1.7" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/exporter", + "type": "tidelift" } ], - "time": "2024-03-02T06:21:38+00:00" + "time": "2025-09-22T05:03:57+00:00" }, { "name": "sebastian/global-state", - "version": "3.0.5", + "version": "3.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "91c7c47047a971f02de57ed6f040087ef110c5d9" + "reference": "800689427e3e8cf57a8fe38fcd1d4344c9b2f046" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/91c7c47047a971f02de57ed6f040087ef110c5d9", - "reference": "91c7c47047a971f02de57ed6f040087ef110c5d9", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/800689427e3e8cf57a8fe38fcd1d4344c9b2f046", + "reference": "800689427e3e8cf57a8fe38fcd1d4344c9b2f046", "shasum": "" }, "require": { @@ -3645,15 +3702,27 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/3.0.5" + "source": "https://github.com/sebastianbergmann/global-state/tree/3.0.6" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/global-state", + "type": "tidelift" } ], - "time": "2024-03-02T06:13:16+00:00" + "time": "2025-08-10T05:40:12+00:00" }, { "name": "sebastian/object-enumerator", @@ -3769,16 +3838,16 @@ }, { "name": "sebastian/recursion-context", - "version": "3.0.2", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "9bfd3c6f1f08c026f542032dfb42813544f7d64c" + "reference": "8fe7e75986a9d24b4cceae847314035df7703a5a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/9bfd3c6f1f08c026f542032dfb42813544f7d64c", - "reference": "9bfd3c6f1f08c026f542032dfb42813544f7d64c", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/8fe7e75986a9d24b4cceae847314035df7703a5a", + "reference": "8fe7e75986a9d24b4cceae847314035df7703a5a", "shasum": "" }, "require": { @@ -3820,15 +3889,27 @@ "homepage": "http://www.github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/3.0.2" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/3.0.3" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context", + "type": "tidelift" } ], - "time": "2024-03-01T14:07:30+00:00" + "time": "2025-08-10T05:25:53+00:00" }, { "name": "sebastian/resource-operations", diff --git a/docs/altapay_cc_checkout_form_v2.png b/docs/altapay_cc_checkout_form_v2.png new file mode 100644 index 00000000..3e3d9fa7 Binary files /dev/null and b/docs/altapay_cc_checkout_form_v2.png differ diff --git a/readme.txt b/readme.txt index b3e20aa4..e4c46ec6 100644 --- a/readme.txt +++ b/readme.txt @@ -4,10 +4,10 @@ Tags: AltaPay, Gateway, Payments, WooCommerce, Payment Card Industry Requires PHP: 7.4 Requires at least: 5.0 Tested up to: 6.8.2 -Stable tag: 3.8.3 +Stable tag: 3.8.4 License: MIT WC requires at least: 3.9.0 -WC tested up to: 10.1.2 +WC tested up to: 10.2.1 License URI: http://www.gnu.org/licenses/gpl-2.0.html A plugin that integrates your WooCommerce web shop to the AltaPay payments gateway. @@ -39,6 +39,9 @@ AltaPay's Payment Gateway for WooCommerce provides merchants with access to a fu == Changelog == += 3.8.4 = +* Add support for Checkout Design v2. + = 3.8.3 = * Fix: Unable to refund orders that contain deleted products. * Avoid unnecessary extra API calls in the daily flow. diff --git a/views/altapay-payment-form.php b/views/altapay-payment-form.php index abecacdf..6d5d2e0c 100755 --- a/views/altapay-payment-form.php +++ b/views/altapay-payment-form.php @@ -47,8 +47,9 @@ .altapay_page_main{ width: 100%; @@ -279,7 +280,8 @@ input[type="submit"].AltaPaySubmitButton, input#submitbutton, -#EPayment button[type="submit"]{ +#EPayment button[type="submit"], +.checkout-v2 button#pensioCreditCardPaymentSubmitButton { outline: none; padding: 15px 16px; color: white; @@ -293,18 +295,21 @@ } input[type="submit"].AltaPaySubmitButton, -#EPayment button[type="submit"] { +#EPayment button[type="submit"], +.checkout-v2 button#pensioCreditCardPaymentSubmitButton { background-color: #31C37E !important; } input[type="submit"].AltaPaySubmitButton:hover, -#EPayment button[type="submit"]:hover { +#EPayment button[type="submit"]:hover, +.checkout-v2 button#pensioCreditCardPaymentSubmitButton:hover { background-color: #16b36e !important; } input[type="submit"].AltaPaySubmitButton:disabled, input#submitbutton, -#EPayment button[type="submit"]:disabled { +#EPayment button[type="submit"]:disabled, +.checkout-v2 button#pensioCreditCardPaymentSubmitButton:disabled { background-color: black !important; opacity: 1 !important; } @@ -321,7 +326,7 @@ /*errors*/ -.pensio_required_field_indicator, #invalid_amex_cvc, #invalid_cvc, #invalid_cardholdername { +.pensio_required_field_indicator, #invalid_amex_cvc, #invalid_cvc, #invalid_cardholdername, #invalid_cardholdername, #invalid_expire_month, #invalid_expire_year { color: red; font-size: 12px; margin-top: 4px; @@ -491,6 +496,147 @@ padding-top: 50px; } +.checkout-v2 .pensio_payment_form_row { + margin-bottom: 0; +} + +.checkout-v2 .pensio_payment_form-date { + cursor: pointer; + display: flex; + align-items: center; + font-family: monospace !important; + border: 1px solid rgba(0, 0, 0, 0.16); + border-top: 0; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 0px; +} + +.checkout-v2 .separator { + color: #a9a9ac; +} + +.checkout-v2 .pensio_payment_form_year { + width: 25%; +} + +.checkout-v2 .pensio_payment_form_card-number input { + padding: 16px 14px; + width: 100%; + cursor: pointer; + font-size: 16px; + box-sizing: border-box; + color: #666; + border-radius: 4px; + border: 1px solid rgba(0, 0, 0, 0.16); + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + outline: none; + height: 51px; + box-shadow: none; +} + +.checkout-v2 .pensio_payment_form_card-number, +.checkout-v2 .pensio_payment_form_cardholder, +.checkout-v2 .pensio_payment_form-cvc-input { + margin-top: 0 !important; +} + +.checkout-v2 .pensio_payment_form_cardholder input { + color: #666; + outline: none; + height: 51px; + box-shadow: none; +} + +.checkout-v2 .pensio_payment_form-cvc-input input { + padding: 16px 14px; + height: 52px; + box-sizing: border-box; + width: 100%; + border-bottom: 1px solid rgba(0, 0, 0, 0.16) !important; + border-right: 1px solid rgba(0, 0, 0, 0.16) !important; + border-radius: 4px; + border-top: 0; + cursor: pointer; + font-size: 16px; + border-left: none; + border-bottom-left-radius: 0; + border-top-right-radius: 0; + outline: none; + color: #666; + box-shadow: none; +} + +.checkout-v2 .expire-month, .checkout-v2 #emonth { + height: 51px; + padding-top: 16px; + padding-bottom: 16px; + padding-left: 2px !important; + margin: auto 4px auto 14px; + font-family: monospace !important; + width: 100%; + border: none; + outline: none; + cursor: pointer; + font-size: 16px; + box-shadow: none !important; + box-sizing: border-box; + color: #666; +} + +.checkout-v2 .expiry-year { + padding: 16px 4px; + height: 51px; + width: 100%; + border: none; + outline: none; + font-family: monospace !important; + cursor: pointer; + font-size: 16px; + box-sizing: border-box; + color: #666; +} + +.checkout-v2 .pensio_payment_form_month { + width: 20%; + max-width: 40px; +} + +.checkout-v2 .pensio_payment_form_cvc { + width: 50%; +} +.checkout-v2 .pensio_payment_form_row.expiry_row { + float: none; + margin-top: 0; + gap: 0; + justify-content: space-between; + margin-bottom: 15px; +} +.checkout-v2 .secure-payments-text { + width: 100%; + position: relative; + float: left; + text-align: right; + font-size: 10px; + padding-top: 5px; +} +.checkout-v2 div.payment-form-wrapper { + padding: 25px 25px 25px 25px !important; + display: inline-block; + width: 100%; +} + +.altapay-payment-form-cnt.altapay_content.checkout-v2 { + padding: 30px 25px 25px 25px; + width: 100%; + display: inline-block; +} + +.checkout-v2 .pensio_payment_form_cvc, +.checkout-v2 .pensio_payment_form_date-container{ + width: 50%; +} + @media screen and (min-width:992px){ .altapay-page-wrapper { display: flex; diff --git a/views/forms/adminSettings.blade.php b/views/forms/adminSettings.blade.php index 365ab122..37d53b3a 100644 --- a/views/forms/adminSettings.blade.php +++ b/views/forms/adminSettings.blade.php @@ -68,6 +68,7 @@ diff --git a/views/paymentClass.tpl b/views/paymentClass.tpl index 0bbdde78..47aa6d55 100644 --- a/views/paymentClass.tpl +++ b/views/paymentClass.tpl @@ -306,26 +306,30 @@ class WC_Gateway_{key} extends WC_Payment_Gateway { $request->setOrderLines( $orderLines ); } - if ( $request ) { - try { - $response = $request->call(); - $requestParams['result'] = 'success'; - $requestParams['formurl'] = $response->Url; - } catch ( ClientException $e ) { - $requestParams['result'] = 'error'; - $requestParams['message'] = $e->getResponse()->getBody(); - } catch ( ResponseHeaderException $e ) { - $requestParams['result'] = 'error'; - $requestParams['message'] = $e->getHeader()->ErrorMessage; - } catch ( ResponseMessageException | \Exception $e ) { - $requestParams['result'] = 'error'; - $requestParams['message'] = $e->getMessage(); - } + $form_template = $this->get_form_template(); - $order->add_order_note( __( "Gateway Order ID: $order_id", 'altapay' ) ); + if ( ! empty( $form_template ) ) { + $request->setFormTemplate( $form_template ); + } - return $requestParams; + try { + $response = $request->call(); + $requestParams['result'] = 'success'; + $requestParams['formurl'] = $response->Url; + } catch ( ClientException $e ) { + $requestParams['result'] = 'error'; + $requestParams['message'] = $e->getResponse()->getBody(); + } catch ( ResponseHeaderException $e ) { + $requestParams['result'] = 'error'; + $requestParams['message'] = $e->getHeader()->ErrorMessage; + } catch ( ResponseMessageException | \Exception $e ) { + $requestParams['result'] = 'error'; + $requestParams['message'] = $e->getMessage(); } + + $order->add_order_note( __( "Gateway Order ID: $order_id", 'altapay' ) ); + + return $requestParams; } catch ( Exception $e ) { error_log( 'Could not create the payment request: ' . $e->getMessage() ); $order->add_order_note( __( 'Could not create the payment request: ' . $e->getMessage(), 'altapay' ) ); @@ -835,4 +839,25 @@ class WC_Gateway_{key} extends WC_Payment_Gateway { $icon_html .= ''; return apply_filters( 'woocommerce_gateway_icon', $icon_html, $this->id ); } + + /** + * Return matching form template value + * + * @return string|null + */ + function get_form_template(): ?string { + $form_templates = array( + 'legacy' => 'form_dynamic_div', + 'checkout' => 'form_checkout_div', + 'checkout_v2' => 'form_checkout', + ); + + $style = get_option('altapay_cc_form_styling'); + + if (empty($style)) { + return null; + } + + return $form_templates[$style] ?? null; + } } diff --git a/wiki.md b/wiki.md index 03c9392b..876599f3 100644 --- a/wiki.md +++ b/wiki.md @@ -105,14 +105,16 @@ Choose one of the below options from `Checkout form style` dropdown to change th ![altpay_checkout_form_style_settings.jpg](docs/altpay_checkout_form_style_settings.jpg) -- `Legacy` Choose this option if legacy form is enabled from the gateway side. +- `Legacy` Legacy design with basic form styling.

![altapay_cc_legacy_form.png](docs/altapay_cc_legacy_form.png)

-- `Checkout` Select the option to show the Credit Card form in a modern look. Make sure the checkout form is enabled from the gateway side. +- `Checkout` Select the option to show the Credit Card form in a modern look.

- - ![altapay_cc_checkout_form.png](docs/altapay_cc_checkout_form.png) + ![altapay_cc_checkout_form.png](docs/altapay_cc_checkout_form.png) +- `Checkout v2` Select this option to display the credit card form with a sleek design, showing the expiry date in two-digit month and year format, and the payment amount on the pay button. +

+ ![altapay_cc_checkout_form.png](docs/altapay_cc_checkout_form_v2.png)

- `Custom` This option can be selected to implement custom styling on the payment page. Selecting this option will remove all the styling from the payment page. @@ -299,13 +301,13 @@ The new credentials can now be used as the API Username and API Password in your Minimum system requirements are: - WordPress min. 5.0 – max. 6.8.2 -- WooCommerce min. 3.9.0 – max. 10.1.2 +- WooCommerce min. 3.9.0 – max. 10.2.1 - PHP 7.4 and above - PHP-bcmath library installed. - PHP-curl MUST be enabled. The latest tested version is: -- WordPress 6.8.2, WooCommerce 10.1.2 and PHP 8.2 +- WordPress 6.8.2, WooCommerce 10.2.1 and PHP 8.2 ## Troubleshooting