Skip to content

Commit 6feb9bb

Browse files
authored
Merge pull request #872 from mollie/fix/refund-request-parameter-deprecation
Fix PHP 8+ deprecation warning in CreatePaymentRefundRequest
2 parents 184b1ec + 16a3efb commit 6feb9bb

File tree

3 files changed

+14
-20
lines changed

3 files changed

+14
-20
lines changed

phpstan-baseline.neon

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,6 @@ parameters:
1212
count: 7
1313
path: src/Http/Data/DataCollection.php
1414

15-
-
16-
message: '#^Deprecated in PHP 8\.0\: Required parameter \$amount follows optional parameter \$description\.$#'
17-
identifier: parameter.requiredAfterOptional
18-
count: 1
19-
path: src/Http/Requests/CreatePaymentRefundRequest.php
20-
2115
-
2216
message: '#^Unsafe usage of new static\(\)\.$#'
2317
identifier: new.static

src/Http/Requests/CreatePaymentRefundRequest.php

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -39,27 +39,18 @@ class CreatePaymentRefundRequest extends ResourceHydratableRequest implements Ha
3939

4040
private ?DataCollection $routingReversals;
4141

42-
/**
43-
* @deprecated When using positional arguments, this triggers a PHP 8+ deprecation warning
44-
* because optional parameter $description comes before required parameter $amount.
45-
* Use named parameters instead: new CreatePaymentRefundRequest(paymentId: $id, amount: $amount, description: $desc)
46-
* Or use the factory method: CreatePaymentRefundRequest::for($id, $amount, $desc)
47-
*
48-
* @param string $paymentId The payment ID to refund
49-
* @param string $description Optional description for the refund
50-
* @param Money $amount The amount to refund (required)
51-
* @param array|null $metadata Optional metadata
52-
* @param bool|null $reverseRouting Optional reverse routing flag
53-
* @param DataCollection|null $routingReversals Optional routing reversals
54-
*/
5542
public function __construct(
5643
string $paymentId,
5744
string $description = '',
58-
Money $amount,
45+
?Money $amount = null,
5946
?array $metadata = null,
6047
?bool $reverseRouting = null,
6148
?DataCollection $routingReversals = null
6249
) {
50+
if ($amount === null) {
51+
throw new \InvalidArgumentException('The amount parameter is required.');
52+
}
53+
6354
$this->paymentId = $paymentId;
6455
$this->description = $description;
6556
$this->amount = $amount;

tests/Http/Requests/CreatePaymentRefundRequestTest.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,15 @@ public function it_resolves_correct_resource_path()
4848
);
4949
}
5050

51+
/** @test */
52+
public function it_throws_when_amount_is_null()
53+
{
54+
$this->expectException(\InvalidArgumentException::class);
55+
$this->expectExceptionMessage('The amount parameter is required.');
56+
57+
new CreatePaymentRefundRequest('tr_WDqYK6vllg', 'Order cancellation');
58+
}
59+
5160
/** @test */
5261
public function it_can_create_refund_request_using_factory_method()
5362
{

0 commit comments

Comments
 (0)