Skip to content

Commit 795a637

Browse files
committed
fixed recursion getBaseUrl() call
1 parent 1c5c744 commit 795a637

File tree

10 files changed

+73
-65
lines changed

10 files changed

+73
-65
lines changed

ecs.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
return function (ECSConfig $ecsConfig): void {
99
$ecsConfig->paths([
1010
__DIR__ . '/src',
11+
__DIR__ . '/tests'
1112
]);
1213

1314
$ecsConfig->sets([

src/Client.php

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,10 @@ public function __construct(
6060
);
6161
}
6262

63-
6463
/**
65-
* Permet d'envoyer une directement intention de paiement sur le mobile money du client
64+
* Cette interface permet d’envoyer une requête de paiement à FlexPay
6665
*
66+
* @since flexpay v1
6767
* @throws NetworkException
6868
*/
6969
public function mobile(MobileRequest $request): PaymentResponse
@@ -86,10 +86,12 @@ public function mobile(MobileRequest $request): PaymentResponse
8686
}
8787

8888
/**
89-
* Créer une URL unique de paiement via le gateway de Flexpay
90-
* Cela permet d'utiliser différente méthode de paiement
91-
* y compris une carte bancaire (VISA, MASTERCARD, etc.)
89+
* Cette interface permet d’envoyer une requête de paiement à FlexPay
90+
* Ce paiement va se faire en deux étapes :
91+
* - Générer l’url de paiement
92+
* - Redirection vers la page de paiements
9293
*
94+
* @since flexpay v1.1
9395
* @throws NetworkException
9496
*/
9597
public function card(CardRequest $request): CardResponse
@@ -128,6 +130,7 @@ public function pay(Request $request): PaymentResponse|CardResponse
128130
*
129131
* @param string $orderNumber Le code de la transaction généré par FlexPay lors de la requête de paiement
130132
*
133+
* @since flexpay v1
131134
* @throws NetworkException quand une erreur
132135
*/
133136
public function check(string $orderNumber): CheckResponse
@@ -146,10 +149,12 @@ public function check(string $orderNumber): CheckResponse
146149
$this->createExceptionFromResponse($e);
147150
}
148151
}
149-
152+
150153
/**
151-
* Permet d'envoyer une intention de paiement sur le mobile money du client
154+
* Cette interface permet à un marchand d’envoyer à partir de son compte de l’argent électronique vers un
155+
* numéro de téléphone qui a un compte mobile money.
152156
*
157+
* @since flexpay v1.1
153158
* @throws NetworkException
154159
*/
155160
public function payout(PayoutRequest $request): PayoutResponse
@@ -172,7 +177,7 @@ public function payout(PayoutRequest $request): PayoutResponse
172177
}
173178

174179
/**
175-
* Cette interface permet d'obtenir une réponse de paiement provenant de FlexPay
180+
* Cette interface permet de vérifier l’état d’une requête de paiement envoyée à FlexPay
176181
*/
177182
public function handleCallback(array $data): PaymentResponse
178183
{

src/Data/TransactionType.php

Lines changed: 0 additions & 17 deletions
This file was deleted.

src/Data/Type.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?php
2+
3+
namespace Devscast\Flexpay\Data;
4+
5+
enum Type: int
6+
{
7+
case MOBILE = 1;
8+
case CARD = 2;
9+
}

src/Environment.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ public function getPayoutUrl(): string
4747
private function getBaseUrl(): string
4848
{
4949
return match ($this) {
50-
self::LIVE => sprintf('%s/merchantPayOutService', $this->getBaseUrl()),
51-
self::SANDBOX => sprintf('%s/merchantPayOutService', $this->getBaseUrl())
50+
self::LIVE => 'https://backend.flexpay.cd/api/rest/v1',
51+
self::SANDBOX => 'https://beta-backend.flexpay.cd/api/rest/v1',
5252
};
5353
}
5454
}

src/Request/MobileRequest.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
namespace Devscast\Flexpay\Request;
66

77
use Devscast\Flexpay\Data\Currency;
8+
use Devscast\Flexpay\Data\Type;
89
use Webmozart\Assert\Assert;
910

1011
/**
@@ -20,7 +21,7 @@ public function __construct(
2021
Currency $currency,
2122
string $callbackUrl,
2223
public readonly string $phone,
23-
public readonly int $type = 1,
24+
public readonly Type $type = Type::MOBILE,
2425
?string $description = null,
2526
?string $approveUrl = null,
2627
?string $cancelUrl = null,
@@ -36,7 +37,7 @@ public function getPayload(): array
3637
{
3738
return [
3839
'phone' => $this->phone,
39-
'type' => $this->type,
40+
'type' => $this->type->value,
4041
'amount' => $this->amount,
4142
'merchant' => $this->merchant,
4243
'reference' => $this->reference,

src/Request/PayoutRequest.php

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,14 @@
55
namespace Devscast\Flexpay\Request;
66

77
use Devscast\Flexpay\Data\Currency;
8+
use Devscast\Flexpay\Data\Type;
89
use Webmozart\Assert\Assert;
910

11+
/**
12+
* Class PayoutRequest.
13+
*
14+
* @author Rooney kalumba
15+
*/
1016
final class PayoutRequest extends Request
1117
{
1218
public function __construct(
@@ -15,9 +21,8 @@ public function __construct(
1521
Currency $currency,
1622
string $callbackUrl,
1723
public string $phone,
18-
public int $type = 1,
24+
public Type $type = Type::MOBILE,
1925
) {
20-
2126
Assert::length($this->phone, 12, 'The phone number should be 12 characters long, eg: 243123456789');
2227

2328
parent::__construct($amount, $reference, $currency, $callbackUrl);
@@ -26,8 +31,8 @@ public function __construct(
2631
public function getPayload(): array
2732
{
2833
return [
29-
'authorization' => $this->authorization,
30-
'type' => $this->type,
34+
'merchant' => $this->merchant,
35+
'type' => $this->type->value,
3136
'reference' => $this->reference,
3237
'phone' => $this->phone,
3338
'amount' => $this->amount,

tests/ClientTest.php

Lines changed: 28 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,19 @@
55
namespace Devscast\Flexpay\Tests;
66

77
use Devscast\Flexpay\Client;
8-
use Devscast\Flexpay\Data\TransactionType;
9-
use Devscast\Flexpay\Exception\NetworkException;
10-
use Devscast\Flexpay\Request\PayoutRequest;
11-
use Devscast\Flexpay\Response\PayoutResponse;
12-
use PHPUnit\Framework\TestCase;
138
use Devscast\Flexpay\Credential;
149
use Devscast\Flexpay\Data\Currency;
1510
use Devscast\Flexpay\Data\Transaction;
11+
use Devscast\Flexpay\Data\Type;
12+
use Devscast\Flexpay\Exception\NetworkException;
1613
use Devscast\Flexpay\Request\CardRequest;
1714
use Devscast\Flexpay\Request\MobileRequest;
15+
use Devscast\Flexpay\Request\PayoutRequest;
1816
use Devscast\Flexpay\Response\CardResponse;
1917
use Devscast\Flexpay\Response\CheckResponse;
2018
use Devscast\Flexpay\Response\PaymentResponse;
19+
use Devscast\Flexpay\Response\PayoutResponse;
20+
use PHPUnit\Framework\TestCase;
2121
use Symfony\Component\HttpClient\MockHttpClient;
2222
use Symfony\Component\HttpClient\Response\MockResponse;
2323

@@ -28,23 +28,6 @@
2828
*/
2929
final class ClientTest extends TestCase
3030
{
31-
private function getFlexpay(callable|MockResponse $mock): Client
32-
{
33-
$flexpay = new Client(new Credential('token', 'ZONDO'));
34-
$reflection = new \ReflectionClass($flexpay);
35-
36-
$http = $reflection->getProperty('http');
37-
$http->setAccessible(true);
38-
$http->setValue($flexpay, new MockHttpClient($mock));
39-
40-
return $flexpay;
41-
}
42-
43-
private function getResponse(string $file): MockResponse
44-
{
45-
return new MockResponse((string) file_get_contents(__DIR__ . '/fixtures/' . $file));
46-
}
47-
4831
public function testCard(): void
4932
{
5033
$flexpay = $this->getFlexpay($this->getResponse('card_success.json'));
@@ -72,24 +55,25 @@ public function testCard(): void
7255
*/
7356
public function testPayout(): void
7457
{
75-
$flexpay = $this->getFlexpay($this->getResponse('payout.json'));
58+
$flexpay = $this->getFlexpay($this->getResponse('payout_success.json'));
7659

7760
$request = new PayoutRequest(
7861
amount: 10,
7962
reference: 'ref',
8063
currency: Currency::USD,
8164
callbackUrl: 'http://localhost:8000/callback',
8265
phone: '243123456789',
83-
type: 1
66+
type: Type::MOBILE
8467
);
8568

8669
$response = $flexpay->payout($request);
8770

88-
$this->assertInstanceOf(PayoutResponse::class,$response);
71+
$this->assertInstanceOf(PayoutResponse::class, $response);
8972
$this->assertTrue($response->isSuccessful());
90-
$this->assertEquals('6708a4708d470_1728619632', $response->orderNumber);
91-
73+
$this->assertEquals('Transaction envoyée avec succès.', $response->message);
74+
$this->assertEquals('SQeCGunXEGnr243815877848', $response->orderNumber);
9275
}
76+
9377
public function testSuccessCheck(): void
9478
{
9579
$flexpay = $this->getFlexpay($this->getResponse('check_success.json'));
@@ -129,8 +113,6 @@ public function testMobile(): void
129113
$this->assertEquals('DtX9SmCYojWW243123456789', $response->orderNumber);
130114
}
131115

132-
133-
134116
public function testHandleCallback(): void
135117
{
136118
/** @var array $data */
@@ -143,4 +125,21 @@ public function testHandleCallback(): void
143125
$this->assertEquals('ZDN000003', $response->reference);
144126
$this->assertEquals('UBGC8s9L3VBm243815877848', $response->orderNumber);
145127
}
128+
129+
private function getFlexpay(callable|MockResponse $mock): Client
130+
{
131+
$flexpay = new Client(new Credential('token', 'ZONDO'));
132+
$reflection = new \ReflectionClass($flexpay);
133+
134+
$http = $reflection->getProperty('http');
135+
$http->setAccessible(true);
136+
$http->setValue($flexpay, new MockHttpClient($mock));
137+
138+
return $flexpay;
139+
}
140+
141+
private function getResponse(string $file): MockResponse
142+
{
143+
return new MockResponse((string) file_get_contents(__DIR__ . '/fixtures/' . $file));
144+
}
146145
}

tests/EnvironmentTest.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44

55
namespace Devscast\Flexpay\Tests;
66

7-
use PHPUnit\Framework\TestCase;
87
use Devscast\Flexpay\Environment;
8+
use PHPUnit\Framework\TestCase;
99

1010
/**
1111
* Class EnvironmentTest.
@@ -15,9 +15,10 @@
1515
final class EnvironmentTest extends TestCase
1616
{
1717
private Environment $dev;
18+
1819
private Environment $prod;
1920

20-
public function setUp(): void
21+
protected function setUp(): void
2122
{
2223
$this->dev = Environment::SANDBOX;
2324
$this->prod = Environment::LIVE;
@@ -43,7 +44,6 @@ public function testGetCardPaymentUrl(): void
4344
);
4445
}
4546

46-
4747
public function testGetMobilePaymentUrl(): void
4848
{
4949
$this->assertEquals(

tests/fixtures/payout_success.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"code" : "0",
3+
"message" : "Transaction envoyée avec succès.",
4+
"orderNumber": "SQeCGunXEGnr243815877848"
5+
}

0 commit comments

Comments
 (0)