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 @@
Legacy
Checkout
+ Checkout v2
Custom
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

-- `Legacy` Choose this option if legacy form is enabled from the gateway side.
+- `Legacy` Legacy design with basic form styling.

-- `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.
-
- 
+ 
+- `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.
+
+ 
- `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