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/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, + ]; + + /** + * 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, ]; /** @@ -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."); 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] ); }