Skip to content

Commit 9c661bb

Browse files
committed
fix: added the 2.5 compatibility guard so we can keep the legacy plain-object config path stable until v3.
1 parent e6eb572 commit 9c661bb

2 files changed

Lines changed: 118 additions & 3 deletions

File tree

src/Requests/IdentityStatusBluemRequest.php

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
namespace Bluem\BluemPHP\Requests;
1111

1212
use Bluem\BluemPHP\Contexts\IdentityContext;
13+
use Bluem\BluemPHP\Helpers\BluemConfiguration;
14+
use stdClass;
1315

1416
class IdentityStatusBluemRequest extends BluemRequest
1517
{
@@ -21,15 +23,22 @@ class IdentityStatusBluemRequest extends BluemRequest
2123

2224
protected $xmlInterfaceName = "IdentityInterface";
2325

24-
public function __construct($config, $entranceCode, $expectedReturn, $transactionID)
26+
public function __construct(
27+
BluemConfiguration|stdClass $config,
28+
$entranceCode,
29+
$expectedReturn,
30+
$transactionID
31+
)
2532
{
2633
parent::__construct($config, $entranceCode, $expectedReturn);
2734

2835
// override specific brand ID when using IDIN
29-
if (isset($config->IDINBrandID) && $config->IDINBrandID !== "") {
36+
if ($config instanceof BluemConfiguration && isset($config->IDINBrandID) && $config->IDINBrandID !== "") {
3037
$config->setBrandId($config->IDINBrandID);
31-
} else {
38+
} elseif ($config instanceof BluemConfiguration) {
3239
$config->setBrandId($config->brandID);
40+
} elseif (isset($config->IDINBrandID) && $config->IDINBrandID !== "") {
41+
$config->brandID = $config->IDINBrandID;
3342
}
3443

3544
$this->transactionID = $transactionID;
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Bluem\BluemPHP\Tests\Unit;
6+
7+
use Bluem\BluemPHP\Requests\EmandateStatusBluemRequest;
8+
use Bluem\BluemPHP\Requests\IBANBluemRequest;
9+
use Bluem\BluemPHP\Requests\IdentityBluemRequest;
10+
use Bluem\BluemPHP\Requests\IdentityStatusBluemRequest;
11+
use Bluem\BluemPHP\Requests\PaymentBluemRequest;
12+
use Bluem\BluemPHP\Requests\PaymentStatusBluemRequest;
13+
use stdClass;
14+
15+
final class RequestStdClassCompatibilityTest extends BluemTestCase
16+
{
17+
public function testPaymentRequestSupportsStdClassConfig(): void
18+
{
19+
$request = new PaymentBluemRequest(
20+
$this->getLegacyConfig(),
21+
'Payment test',
22+
'ORDER-123',
23+
12.34,
24+
'2026-07-01T00:00:00.000Z',
25+
'EUR',
26+
'TRANS123',
27+
'ENTRANCE123'
28+
);
29+
30+
self::assertSame('PTX', $request->transaction_code);
31+
self::assertStringContainsString('token=BLUEM_TEST_ACCESS_TOKEN', $request->HttpRequestURL());
32+
}
33+
34+
public function testPaymentStatusRequestSupportsStdClassConfig(): void
35+
{
36+
$request = new PaymentStatusBluemRequest($this->getLegacyConfig(), 'TRANS123');
37+
38+
self::assertSame('PSX', $request->transaction_code);
39+
self::assertStringContainsString('<PaymentStatusRequest', $request->XmlString());
40+
}
41+
42+
public function testIdentityRequestSupportsStdClassConfig(): void
43+
{
44+
$request = new IdentityBluemRequest(
45+
$this->getLegacyConfig(),
46+
'ENTRANCE123',
47+
'none',
48+
['CustomerIDRequest'],
49+
'Identity test',
50+
'DEBTOR123',
51+
'https://example.test/return'
52+
);
53+
54+
self::assertSame('ITX', $request->transaction_code);
55+
self::assertStringContainsString('<IdentityTransactionRequest', $request->XmlString());
56+
}
57+
58+
public function testIdentityStatusRequestSupportsStdClassConfig(): void
59+
{
60+
$request = new IdentityStatusBluemRequest(
61+
$this->getLegacyConfig(),
62+
'ENTRANCE123',
63+
'none',
64+
'TRANS123'
65+
);
66+
67+
self::assertSame('ISX', $request->transaction_code);
68+
self::assertStringContainsString('<IdentityStatusRequest', $request->XmlString());
69+
}
70+
71+
public function testIbanRequestSupportsStdClassConfig(): void
72+
{
73+
$request = new IBANBluemRequest(
74+
$this->getLegacyConfig(),
75+
'ENTRANCE123',
76+
'NL91ABNA0417164300',
77+
'Jane Doe',
78+
'DEBTOR123'
79+
);
80+
81+
self::assertSame('INX', $request->transaction_code);
82+
self::assertStringContainsString('<IBANCheckTransactionRequest', $request->XmlString());
83+
}
84+
85+
public function testEmandateStatusRequestSupportsStdClassConfig(): void
86+
{
87+
$request = new EmandateStatusBluemRequest(
88+
$this->getLegacyConfig(),
89+
'MANDATE123',
90+
'ENTRANCE123'
91+
);
92+
93+
self::assertSame('SRX', $request->transaction_code);
94+
self::assertStringContainsString('<EMandateStatusRequest', $request->XmlString());
95+
}
96+
97+
private function getLegacyConfig(): stdClass
98+
{
99+
$config = $this->getConfig();
100+
$config->accessToken = 'BLUEM_TEST_ACCESS_TOKEN';
101+
$config->paymentBrandID = 'BLUEM_PAYMENT_BRANDID';
102+
$config->IDINBrandID = 'BLUEM_IDENTITY_BRANDID';
103+
104+
return $config;
105+
}
106+
}

0 commit comments

Comments
 (0)