From 4ecd92c3fa6527cc285427c00f9d3c8203dce2f7 Mon Sep 17 00:00:00 2001 From: Franck DAKIA Date: Thu, 18 Dec 2025 01:01:41 +0000 Subject: [PATCH 1/2] Refactoring arch --- docs/en.md | 10 +++++----- docs/fr.md | 10 +++++----- src/{ => Gateway}/IvoryCost/Djamo/DjamoGateway.php | 2 +- .../MTNMobileMoney/Collection/MomoPayment.php | 6 +++--- .../MTNMobileMoney/Collection/MomoPaymentStatus.php | 2 +- .../MTNMobileMoney/Collection/MomoTransaction.php | 6 +++--- .../IvoryCost/MTNMobileMoney/MTNMobileMoneyGateway.php | 10 +++++----- .../IvoryCost/MTNMobileMoney/MomoEnvironment.php | 2 +- .../IvoryCost/MTNMobileMoney/MomoToken.php | 2 +- .../IvoryCost/MTNMobileMoney/MonoTokenGenerator.php | 6 +++--- .../IvoryCost/MoovFlooz/MoovFloozGateway.php | 2 +- .../IvoryCost/OrangeMoney/OrangeMoneyGateway.php | 8 ++++---- .../IvoryCost/OrangeMoney/OrangeMoneyPayment.php | 4 ++-- .../IvoryCost/OrangeMoney/OrangeMoneyResponse.php | 2 +- .../IvoryCost/OrangeMoney/OrangeMoneyToken.php | 2 +- .../OrangeMoney/OrangeMoneyTokenGenerator.php | 4 ++-- .../IvoryCost/OrangeMoney/OrangeMoneyTransaction.php | 4 ++-- .../OrangeMoney/OrangeMoneyTransactionStatus.php | 2 +- .../IvoryCost/Wave/WaveCheckoutSession.php | 2 +- src/{ => Gateway}/IvoryCost/Wave/WaveClient.php | 2 +- src/{ => Gateway}/IvoryCost/Wave/WaveGateway.php | 2 +- src/{ => Gateway}/IvoryCost/Wave/WavePaymentStatus.php | 2 +- src/Payment.php | 10 +++++----- tests/OrangeMoneyTest.php | 6 +++--- tests/PaymentTest.php | 4 ++-- 25 files changed, 56 insertions(+), 56 deletions(-) rename src/{ => Gateway}/IvoryCost/Djamo/DjamoGateway.php (97%) rename src/{ => Gateway}/IvoryCost/MTNMobileMoney/Collection/MomoPayment.php (93%) rename src/{ => Gateway}/IvoryCost/MTNMobileMoney/Collection/MomoPaymentStatus.php (96%) rename src/{ => Gateway}/IvoryCost/MTNMobileMoney/Collection/MomoTransaction.php (93%) rename src/{ => Gateway}/IvoryCost/MTNMobileMoney/MTNMobileMoneyGateway.php (89%) rename src/{ => Gateway}/IvoryCost/MTNMobileMoney/MomoEnvironment.php (97%) rename src/{ => Gateway}/IvoryCost/MTNMobileMoney/MomoToken.php (94%) rename src/{ => Gateway}/IvoryCost/MTNMobileMoney/MonoTokenGenerator.php (90%) rename src/{ => Gateway}/IvoryCost/MoovFlooz/MoovFloozGateway.php (97%) rename src/{ => Gateway}/IvoryCost/OrangeMoney/OrangeMoneyGateway.php (92%) rename src/{ => Gateway}/IvoryCost/OrangeMoney/OrangeMoneyPayment.php (97%) rename src/{ => Gateway}/IvoryCost/OrangeMoney/OrangeMoneyResponse.php (95%) rename src/{ => Gateway}/IvoryCost/OrangeMoney/OrangeMoneyToken.php (97%) rename src/{ => Gateway}/IvoryCost/OrangeMoney/OrangeMoneyTokenGenerator.php (94%) rename src/{ => Gateway}/IvoryCost/OrangeMoney/OrangeMoneyTransaction.php (96%) rename src/{ => Gateway}/IvoryCost/OrangeMoney/OrangeMoneyTransactionStatus.php (96%) rename src/{ => Gateway}/IvoryCost/Wave/WaveCheckoutSession.php (99%) rename src/{ => Gateway}/IvoryCost/Wave/WaveClient.php (99%) rename src/{ => Gateway}/IvoryCost/Wave/WaveGateway.php (99%) rename src/{ => Gateway}/IvoryCost/Wave/WavePaymentStatus.php (99%) diff --git a/docs/en.md b/docs/en.md index ec92af2..a935656 100644 --- a/docs/en.md +++ b/docs/en.md @@ -298,8 +298,8 @@ For advanced use cases, you can use providers directly: ### Orange Money Direct Usage ```php -use Bow\Payment\IvoryCost\OrangeMoney\OrangeMoneyGateway; -use Bow\Payment\IvoryCost\OrangeMoney\OrangeMoneyTokenGenerator; +use Bow\Payment\Gateway\IvoryCost\OrangeMoney\OrangeMoneyGateway; +use Bow\Payment\Gateway\IvoryCost\OrangeMoney\OrangeMoneyTokenGenerator; $config = [ 'client_key' => 'YOUR_CLIENT_KEY', @@ -332,9 +332,9 @@ $status = $gateway->verify([ ### MTN Mobile Money Direct Usage ```php -use Bow\Payment\IvoryCost\MTNMobileMoney\MTNMobileMoneyGateway; -use Bow\Payment\IvoryCost\MTNMobileMoney\MomoEnvironment; -use Bow\Payment\IvoryCost\MTNMobileMoney\MomoTokenGenerator; +use Bow\Payment\Gateway\IvoryCost\MTNMobileMoney\MTNMobileMoneyGateway; +use Bow\Payment\Gateway\IvoryCost\MTNMobileMoney\MomoEnvironment; +use Bow\Payment\Gateway\IvoryCost\MTNMobileMoney\MomoTokenGenerator; $config = [ 'subscription_key' => 'YOUR_SUBSCRIPTION_KEY', diff --git a/docs/fr.md b/docs/fr.md index 10695b6..7d8888d 100644 --- a/docs/fr.md +++ b/docs/fr.md @@ -298,8 +298,8 @@ Pour des cas d'utilisation avancés, vous pouvez utiliser les fournisseurs direc ### Utilisation Directe d'Orange Money ```php -use Bow\Payment\IvoryCost\OrangeMoney\OrangeMoneyGateway; -use Bow\Payment\IvoryCost\OrangeMoney\OrangeMoneyTokenGenerator; +use Bow\Payment\Gateway\IvoryCost\OrangeMoney\OrangeMoneyGateway; +use Bow\Payment\Gateway\IvoryCost\OrangeMoney\OrangeMoneyTokenGenerator; $config = [ 'client_key' => 'VOTRE_CLIENT_KEY', @@ -332,9 +332,9 @@ $status = $gateway->verify([ ### Utilisation Directe de MTN Mobile Money ```php -use Bow\Payment\IvoryCost\MTNMobileMoney\MTNMobileMoneyGateway; -use Bow\Payment\IvoryCost\MTNMobileMoney\MomoEnvironment; -use Bow\Payment\IvoryCost\MTNMobileMoney\MomoTokenGenerator; +use Bow\Payment\Gateway\IvoryCost\MTNMobileMoney\MTNMobileMoneyGateway; +use Bow\Payment\Gateway\IvoryCost\MTNMobileMoney\MomoEnvironment; +use Bow\Payment\Gateway\IvoryCost\MTNMobileMoney\MomoTokenGenerator; $config = [ 'subscription_key' => 'VOTRE_SUBSCRIPTION_KEY', diff --git a/src/IvoryCost/Djamo/DjamoGateway.php b/src/Gateway/IvoryCost/Djamo/DjamoGateway.php similarity index 97% rename from src/IvoryCost/Djamo/DjamoGateway.php rename to src/Gateway/IvoryCost/Djamo/DjamoGateway.php index 81b69a6..48d68bf 100644 --- a/src/IvoryCost/Djamo/DjamoGateway.php +++ b/src/Gateway/IvoryCost/Djamo/DjamoGateway.php @@ -1,6 +1,6 @@ */ public const CI_PROVIDER = [ - Payment::ORANGE => \Bow\Payment\IvoryCost\OrangeMoney\OrangeMoneyGateway::class, - Payment::MTN => \Bow\Payment\IvoryCost\MTNMobileMoney\MTNMobileMoneyGateway::class, - Payment::MOOV => \Bow\Payment\IvoryCost\MoovFlooz\MoovFloozGateway::class, - Payment::WAVE => \Bow\Payment\IvoryCost\Wave\WaveGateway::class, - Payment::DJAMO => \Bow\Payment\IvoryCost\Djamo\DjamoGateway::class, + Payment::ORANGE => \Bow\Payment\Gateway\IvoryCost\OrangeMoney\OrangeMoneyGateway::class, + Payment::MTN => \Bow\Payment\Gateway\IvoryCost\MTNMobileMoney\MTNMobileMoneyGateway::class, + Payment::MOOV => \Bow\Payment\Gateway\IvoryCost\MoovFlooz\MoovFloozGateway::class, + Payment::WAVE => \Bow\Payment\Gateway\IvoryCost\Wave\WaveGateway::class, + Payment::DJAMO => \Bow\Payment\Gateway\IvoryCost\Djamo\DjamoGateway::class, ]; /** diff --git a/tests/OrangeMoneyTest.php b/tests/OrangeMoneyTest.php index 11a7e87..2a3f58b 100644 --- a/tests/OrangeMoneyTest.php +++ b/tests/OrangeMoneyTest.php @@ -1,8 +1,8 @@ assertArrayHasKey(Payment::DJAMO, $providers); $this->assertEquals( - \Bow\Payment\IvoryCost\OrangeMoney\OrangeMoneyGateway::class, + \Bow\Payment\Gateway\IvoryCost\OrangeMoney\OrangeMoneyGateway::class, $providers[Payment::ORANGE] ); $this->assertEquals( - \Bow\Payment\IvoryCost\MTNMobileMoney\MTNMobileMoneyGateway::class, + \Bow\Payment\Gateway\IvoryCost\MTNMobileMoney\MTNMobileMoneyGateway::class, $providers[Payment::MTN] ); } From 23a1c56295c9ace62013f8ce198800c29882d798 Mon Sep 17 00:00:00 2001 From: Franck DAKIA Date: Thu, 18 Dec 2025 01:07:34 +0000 Subject: [PATCH 2/2] Add senegal placeholder --- config/payment.php | 16 ++++++++++++ .../OrangeMoney/OrangeMoneyGateway.php | 19 ++++++++++++++ src/Gateway/Senegal/Wave/WaveGateway.php | 18 +++++++++++++ src/Payment.php | 26 +++++++++++++++++++ 4 files changed, 79 insertions(+) create mode 100644 src/Gateway/Senegal/OrangeMoney/OrangeMoneyGateway.php create mode 100644 src/Gateway/Senegal/Wave/WaveGateway.php diff --git a/config/payment.php b/config/payment.php index abd0899..cad10bf 100644 --- a/config/payment.php +++ b/config/payment.php @@ -51,4 +51,20 @@ 'webhook_secret' => '' ] ], + + /** + * Senegal payment gateways configuration + */ + 'senegal' => [ + 'orange' => [ + 'client_key' => '', + 'client_secret' => '', + 'webhook_secret' => '' + ], + + 'wave' => [ + 'api_key' => '', // Your Wave API key (starts with wave_sn_prod_ or wave_sn_sandbox_) + 'webhook_secret' => '' + ], + ], ]; diff --git a/src/Gateway/Senegal/OrangeMoney/OrangeMoneyGateway.php b/src/Gateway/Senegal/OrangeMoney/OrangeMoneyGateway.php new file mode 100644 index 0000000..ef35e94 --- /dev/null +++ b/src/Gateway/Senegal/OrangeMoney/OrangeMoneyGateway.php @@ -0,0 +1,19 @@ + \Bow\Payment\Gateway\IvoryCost\Djamo\DjamoGateway::class, ]; + /** + * Senegal payment provider mapping + * Maps payment provider identifiers to their respective service classes + * for payment processing in Senegal (SN) + * + * @var array + */ + public const SN_PROVIDER = [ + Payment::ORANGE => \Bow\Payment\Gateway\Senegal\OrangeMoney\OrangeMoneyGateway::class, + Payment::WAVE => \Bow\Payment\Gateway\Senegal\Wave\WaveGateway::class, + ]; + /** * The payment manager instance * @@ -104,6 +122,14 @@ private function resolveGateway(string $country, string $provider) $config = $this->resolveConfig('ivory_coast', $provider); static::$providerGateway = new $provider($config); break; + case self::SN: + $provider = self::SN_PROVIDER[$provider] ?? null; + if ($provider === null) { + throw new \InvalidArgumentException("The payment gateway [{$provider}] is not supported in country [{$country}]."); + } + $config = $this->resolveConfig('senegal', $provider); + static::$providerGateway = new $provider($config); + break; // Other gateways can be added here default: throw new \InvalidArgumentException("The payment gateway [{$provider}] is not supported.");