From 0220e85467c6f1e19f21fdc7c0e6b8b810a58402 Mon Sep 17 00:00:00 2001 From: Kamil Balwierz Date: Wed, 4 Mar 2026 11:55:47 +0100 Subject: [PATCH 1/2] Add BLIK alias notification types: Updated, Expired --- .../Notifications/AllNotificationsExample.php | 24 ++++++++++ .../NotificationBody/BlikAliasExpired.php | 44 +++++++++++++++++++ .../NotificationBody/BlikAliasUpdated.php | 44 +++++++++++++++++++ src/SdkVersion.php | 2 +- .../JWSVerifiedPaymentNotification.php | 8 ++++ 5 files changed, 121 insertions(+), 1 deletion(-) create mode 100644 src/Model/Objects/NotificationBody/BlikAliasExpired.php create mode 100644 src/Model/Objects/NotificationBody/BlikAliasUpdated.php diff --git a/examples/Notifications/AllNotificationsExample.php b/examples/Notifications/AllNotificationsExample.php index 1870fe9..b780017 100644 --- a/examples/Notifications/AllNotificationsExample.php +++ b/examples/Notifications/AllNotificationsExample.php @@ -6,8 +6,10 @@ use PSX\Cache\SimpleCache; use Tpay\Example\ExamplesConfig; use Tpay\OpenApi\Model\Objects\NotificationBody\BasicPayment; +use Tpay\OpenApi\Model\Objects\NotificationBody\BlikAliasExpired; use Tpay\OpenApi\Model\Objects\NotificationBody\BlikAliasRegister; use Tpay\OpenApi\Model\Objects\NotificationBody\BlikAliasUnregister; +use Tpay\OpenApi\Model\Objects\NotificationBody\BlikAliasUpdated; use Tpay\OpenApi\Model\Objects\NotificationBody\MarketplaceTransaction; use Tpay\OpenApi\Model\Objects\NotificationBody\Tokenization; use Tpay\OpenApi\Model\Objects\NotificationBody\TokenUpdate; @@ -106,6 +108,28 @@ public function getVerifiedNotification() exit('TRUE'); } + if ($notification instanceof BlikAliasUpdated) { + // Notification about change in blik expiry date + + $value = $notification->value->getValue(); + // The above example will check the notification and return the value of deleted token + // You can access any notification field by $notification->fieldName + + // $blikAliasUpdatedProcessor->process($notification) + exit('TRUE'); + } + + if ($notification instanceof BlikAliasExpired) { + // Notification about blik alias expiry + + $value = $notification->value->getValue(); + // The above example will check the notification and return the value of deleted token + // You can access any notification field by $notification->fieldName + + // $blikAliasExpiredProcessor->process($notification) + exit('TRUE'); + } + // Ignore and silence other notification types if not expected http_response_code(404); exit('FALSE'); diff --git a/src/Model/Objects/NotificationBody/BlikAliasExpired.php b/src/Model/Objects/NotificationBody/BlikAliasExpired.php new file mode 100644 index 0000000..5145503 --- /dev/null +++ b/src/Model/Objects/NotificationBody/BlikAliasExpired.php @@ -0,0 +1,44 @@ + Value::class, + 'type' => Type::class, + 'expirationDate' => ExpirationDate::class, + ]; + + /** @var Value */ + public $value; + + /** @var Type */ + public $type; + + /** @var ExpirationDate */ + public $expirationDate; + + public function getRequiredFields() + { + return [ + $this->value, + $this->type, + $this->expirationDate, + ]; + } + + public function toArray() + { + return [ + 'value' => $this->value->getValue(), + 'type' => $this->type->getValue(), + 'expirationDate' => $this->expirationDate->getValue(), + ]; + } +} diff --git a/src/Model/Objects/NotificationBody/BlikAliasUpdated.php b/src/Model/Objects/NotificationBody/BlikAliasUpdated.php new file mode 100644 index 0000000..202728b --- /dev/null +++ b/src/Model/Objects/NotificationBody/BlikAliasUpdated.php @@ -0,0 +1,44 @@ + Value::class, + 'type' => Type::class, + 'expirationDate' => ExpirationDate::class, + ]; + + /** @var Value */ + public $value; + + /** @var Type */ + public $type; + + /** @var ExpirationDate */ + public $expirationDate; + + public function getRequiredFields() + { + return [ + $this->value, + $this->type, + $this->expirationDate, + ]; + } + + public function toArray() + { + return [ + 'value' => $this->value->getValue(), + 'type' => $this->type->getValue(), + 'expirationDate' => $this->expirationDate->getValue(), + ]; + } +} diff --git a/src/SdkVersion.php b/src/SdkVersion.php index f377dc9..6195c04 100644 --- a/src/SdkVersion.php +++ b/src/SdkVersion.php @@ -4,5 +4,5 @@ final class SdkVersion { - const VERSION = '2.4.0'; + const VERSION = '2.4.1'; } diff --git a/src/Webhook/JWSVerifiedPaymentNotification.php b/src/Webhook/JWSVerifiedPaymentNotification.php index 98317b3..23578b8 100644 --- a/src/Webhook/JWSVerifiedPaymentNotification.php +++ b/src/Webhook/JWSVerifiedPaymentNotification.php @@ -4,8 +4,10 @@ use Tpay\OpenApi\Model\Fields\Field; use Tpay\OpenApi\Model\Objects\NotificationBody\BasicPayment; +use Tpay\OpenApi\Model\Objects\NotificationBody\BlikAliasExpired; use Tpay\OpenApi\Model\Objects\NotificationBody\BlikAliasRegister; use Tpay\OpenApi\Model\Objects\NotificationBody\BlikAliasUnregister; +use Tpay\OpenApi\Model\Objects\NotificationBody\BlikAliasUpdated; use Tpay\OpenApi\Model\Objects\NotificationBody\MarketplaceTransaction; use Tpay\OpenApi\Model\Objects\NotificationBody\Tokenization; use Tpay\OpenApi\Model\Objects\NotificationBody\TokenUpdate; @@ -201,6 +203,12 @@ private function getNotificationObject() case 'ALIAS_UNREGISTER': $requestBody = new BlikAliasUnregister(); break; + case 'ALIAS_UPDATE': + $requestBody = new BlikAliasUpdated(); + break; + case 'ALIAS_EXPIRED': + $requestBody = new BlikAliasExpired(); + break; default: throw new TpayException( 'Not recognised or invalid notification event: '.$source['event'] From 62c46b1ca67fd522e5434c0808d6a60967f051d0 Mon Sep 17 00:00:00 2001 From: Kamil Balwierz Date: Wed, 4 Mar 2026 12:13:38 +0100 Subject: [PATCH 2/2] Extracted common abstraction --- .../NotificationBody/AbstractBlikAlias.php | 54 +++++++++++++++++++ .../NotificationBody/BlikAliasExpired.php | 40 +------------- .../NotificationBody/BlikAliasRegister.php | 40 +------------- .../NotificationBody/BlikAliasUnregister.php | 33 +----------- .../NotificationBody/BlikAliasUpdated.php | 40 +------------- 5 files changed, 62 insertions(+), 145 deletions(-) create mode 100644 src/Model/Objects/NotificationBody/AbstractBlikAlias.php diff --git a/src/Model/Objects/NotificationBody/AbstractBlikAlias.php b/src/Model/Objects/NotificationBody/AbstractBlikAlias.php new file mode 100644 index 0000000..d7c4e9b --- /dev/null +++ b/src/Model/Objects/NotificationBody/AbstractBlikAlias.php @@ -0,0 +1,54 @@ + Value::class, + 'type' => Type::class, + 'expirationDate' => ExpirationDate::class, + ]; + + /** @var Value */ + public $value; + + /** @var Type */ + public $type; + + /** @var ExpirationDate */ + public $expirationDate; + + static protected $requiresExpirationDate = false; + + public function getRequiredFields() + { + $fields = [ + $this->value, + $this->type, + ]; + if (static::$requiresExpirationDate) { + $fields[] = $this->expirationDate; + } + + return $fields; + } + + public function toArray() + { + $data = [ + 'value' => $this->value->getValue(), + 'type' => $this->type->getValue(), + ]; + if (static::$requiresExpirationDate) { + $data['expirationDate'] = $this->expirationDate->getValue(); + } + + return $data; + } +} diff --git a/src/Model/Objects/NotificationBody/BlikAliasExpired.php b/src/Model/Objects/NotificationBody/BlikAliasExpired.php index 5145503..fea0a37 100644 --- a/src/Model/Objects/NotificationBody/BlikAliasExpired.php +++ b/src/Model/Objects/NotificationBody/BlikAliasExpired.php @@ -2,43 +2,7 @@ namespace Tpay\OpenApi\Model\Objects\NotificationBody; -use Tpay\OpenApi\Model\Fields\Notification\BlikAlias\ExpirationDate; -use Tpay\OpenApi\Model\Fields\Notification\BlikAlias\Type; -use Tpay\OpenApi\Model\Fields\Notification\BlikAlias\Value; -use Tpay\OpenApi\Model\Objects\Objects; - -class BlikAliasExpired extends Objects +class BlikAliasExpired extends AbstractBlikAlias { - const OBJECT_FIELDS = [ - 'value' => Value::class, - 'type' => Type::class, - 'expirationDate' => ExpirationDate::class, - ]; - - /** @var Value */ - public $value; - - /** @var Type */ - public $type; - - /** @var ExpirationDate */ - public $expirationDate; - - public function getRequiredFields() - { - return [ - $this->value, - $this->type, - $this->expirationDate, - ]; - } - - public function toArray() - { - return [ - 'value' => $this->value->getValue(), - 'type' => $this->type->getValue(), - 'expirationDate' => $this->expirationDate->getValue(), - ]; - } + static protected $requiresExpirationDate = false; } diff --git a/src/Model/Objects/NotificationBody/BlikAliasRegister.php b/src/Model/Objects/NotificationBody/BlikAliasRegister.php index c7df98a..b006785 100644 --- a/src/Model/Objects/NotificationBody/BlikAliasRegister.php +++ b/src/Model/Objects/NotificationBody/BlikAliasRegister.php @@ -2,43 +2,7 @@ namespace Tpay\OpenApi\Model\Objects\NotificationBody; -use Tpay\OpenApi\Model\Fields\Notification\BlikAlias\ExpirationDate; -use Tpay\OpenApi\Model\Fields\Notification\BlikAlias\Type; -use Tpay\OpenApi\Model\Fields\Notification\BlikAlias\Value; -use Tpay\OpenApi\Model\Objects\Objects; - -class BlikAliasRegister extends Objects +class BlikAliasRegister extends AbstractBlikAlias { - const OBJECT_FIELDS = [ - 'value' => Value::class, - 'type' => Type::class, - 'expirationDate' => ExpirationDate::class, - ]; - - /** @var Value */ - public $value; - - /** @var Type */ - public $type; - - /** @var ExpirationDate */ - public $expirationDate; - - public function getRequiredFields() - { - return [ - $this->value, - $this->type, - $this->expirationDate, - ]; - } - - public function toArray() - { - return [ - 'value' => $this->value->getValue(), - 'type' => $this->type->getValue(), - 'expirationDate' => $this->expirationDate->getValue(), - ]; - } + static protected $requiresExpirationDate = true; } diff --git a/src/Model/Objects/NotificationBody/BlikAliasUnregister.php b/src/Model/Objects/NotificationBody/BlikAliasUnregister.php index 7e8f587..d3c2fd0 100644 --- a/src/Model/Objects/NotificationBody/BlikAliasUnregister.php +++ b/src/Model/Objects/NotificationBody/BlikAliasUnregister.php @@ -2,36 +2,7 @@ namespace Tpay\OpenApi\Model\Objects\NotificationBody; -use Tpay\OpenApi\Model\Fields\Notification\BlikAlias\Type; -use Tpay\OpenApi\Model\Fields\Notification\BlikAlias\Value; -use Tpay\OpenApi\Model\Objects\Objects; - -class BlikAliasUnregister extends Objects +class BlikAliasUnregister extends AbstractBlikAlias { - const OBJECT_FIELDS = [ - 'value' => Value::class, - 'type' => Type::class, - ]; - - /** @var Value */ - public $value; - - /** @var Type */ - public $type; - - public function getRequiredFields() - { - return [ - $this->value, - $this->type, - ]; - } - - public function toArray() - { - return [ - 'value' => $this->value->getValue(), - 'type' => $this->type->getValue(), - ]; - } + static protected $requiresExpirationDate = false; } diff --git a/src/Model/Objects/NotificationBody/BlikAliasUpdated.php b/src/Model/Objects/NotificationBody/BlikAliasUpdated.php index 202728b..93acb0d 100644 --- a/src/Model/Objects/NotificationBody/BlikAliasUpdated.php +++ b/src/Model/Objects/NotificationBody/BlikAliasUpdated.php @@ -2,43 +2,7 @@ namespace Tpay\OpenApi\Model\Objects\NotificationBody; -use Tpay\OpenApi\Model\Fields\Notification\BlikAlias\ExpirationDate; -use Tpay\OpenApi\Model\Fields\Notification\BlikAlias\Type; -use Tpay\OpenApi\Model\Fields\Notification\BlikAlias\Value; -use Tpay\OpenApi\Model\Objects\Objects; - -class BlikAliasUpdated extends Objects +class BlikAliasUpdated extends AbstractBlikAlias { - const OBJECT_FIELDS = [ - 'value' => Value::class, - 'type' => Type::class, - 'expirationDate' => ExpirationDate::class, - ]; - - /** @var Value */ - public $value; - - /** @var Type */ - public $type; - - /** @var ExpirationDate */ - public $expirationDate; - - public function getRequiredFields() - { - return [ - $this->value, - $this->type, - $this->expirationDate, - ]; - } - - public function toArray() - { - return [ - 'value' => $this->value->getValue(), - 'type' => $this->type->getValue(), - 'expirationDate' => $this->expirationDate->getValue(), - ]; - } + static protected $requiresExpirationDate = true; }