Skip to content

Commit

Permalink
feat: add release-authorization endpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
Naoray committed Feb 7, 2025
1 parent 7fd35b7 commit 2e5fe56
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 3 deletions.
24 changes: 22 additions & 2 deletions src/EndpointCollection/PaymentEndpointCollection.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,10 @@
use Mollie\Api\Factories\SortablePaginatedQueryFactory;
use Mollie\Api\Factories\UpdatePaymentRequestFactory;
use Mollie\Api\Http\Requests\CancelPaymentRequest;
use Mollie\Api\Http\Requests\DynamicPostRequest;
use Mollie\Api\Http\Requests\GetPaginatedPaymentsRequest;
use Mollie\Api\Http\Response;
use Mollie\Api\Resources\AnyResource;
use Mollie\Api\Resources\LazyCollection;
use Mollie\Api\Resources\Payment;
use Mollie\Api\Resources\PaymentCollection;
Expand Down Expand Up @@ -99,11 +102,11 @@ public function delete(string $id, $data = []): ?Payment
*
* @throws RequestException
*/
public function cancel(string $id, $testmode = false): ?Payment
public function cancel(string $id, $testmode = false): Payment
{
$testmode = Utility::extractBool($testmode, 'testmode', false);

/** @var null|Payment */
/** @var Payment */
return $this->send((new CancelPaymentRequest($id))->test($testmode));
}

Expand All @@ -127,6 +130,23 @@ public function refund(Payment $payment, array $payload = [], bool $testmode = f
return $this->send($request->test($testmode));
}

/**
* Release the authorization for the given payment.
*
* @param Payment|string $paymentId
*
* @return AnyResource|Response
* @throws RequestException
*/
public function releaseAuthorization($paymentId)
{
$paymentId = $paymentId instanceof Payment ? $paymentId->id : $paymentId;

$request = new DynamicPostRequest("payments/{$paymentId}/release-authorization");

return $this->send($request);
}

/**
* Get the balance endpoint.
*/
Expand Down
22 changes: 21 additions & 1 deletion tests/EndpointCollection/PaymentEndpointCollectionTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,12 @@
use Mollie\Api\Http\Requests\CreatePaymentRefundRequest;
use Mollie\Api\Http\Requests\CreatePaymentRequest;
use Mollie\Api\Http\Requests\DynamicGetRequest;
use Mollie\Api\Http\Requests\DynamicPostRequest;
use Mollie\Api\Http\Requests\GetPaginatedPaymentsRequest;
use Mollie\Api\Http\Requests\GetPaymentRequest;
use Mollie\Api\Http\Requests\UpdatePaymentRequest;
use Mollie\Api\Http\Response;
use Mollie\Api\Resources\AnyResource;
use Mollie\Api\Resources\Payment;
use Mollie\Api\Resources\PaymentCollection;
use Mollie\Api\Resources\Refund;
Expand Down Expand Up @@ -70,12 +73,14 @@ public function update()
public function cancel()
{
$client = new MockMollieClient([
CancelPaymentRequest::class => MockResponse::noContent(),
CancelPaymentRequest::class => MockResponse::ok('payment'),
]);

/** @var Payment $payment */
$payment = $client->payments->cancel('tr_WDqYK6vllg');

$this->assertTrue($payment->getResponse()->successful());
$this->assertInstanceOf(Payment::class, $payment);
}

/** @test */
Expand All @@ -101,6 +106,21 @@ public function refund()
$this->assertEquals('EUR', $refund->amount->currency);
}

/** @test */
public function releaseAuthorization()
{
$client = new MockMollieClient([
DynamicPostRequest::class => MockResponse::noContent(),
]);

$paymentId = 'tr_WDqYK6vllg';

/** @var Response $response */
$response = $client->payments->releaseAuthorization($paymentId);

$this->assertTrue($response->successful());
}

/** @test */
public function page()
{
Expand Down
27 changes: 27 additions & 0 deletions tests/Http/Requests/ReleasePaymentAuthorizationTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?php

namespace Mollie\Api\Tests\Http\Requests;

use Mollie\Api\Fake\MockMollieClient;
use Mollie\Api\Fake\MockResponse;
use Mollie\Api\Http\Requests\DynamicPostRequest;
use Mollie\Api\Http\Response;
use PHPUnit\Framework\TestCase;

class ReleasePaymentAuthorizationTest extends TestCase
{
/** @test */
public function it_can_release_payment_authorization()
{
$client = new MockMollieClient([
DynamicPostRequest::class => MockResponse::created(''),
]);

$request = new DynamicPostRequest('payments/tr_WDqYK6vllg/release-authorization');

/** @var Response $response */
$response = $client->send($request);

$this->assertTrue($response->successful());
}
}

0 comments on commit 2e5fe56

Please sign in to comment.