nkaurelien / momopay
使用 mtn cameroun 的移动支付
dev-master
2024-04-03 11:44 UTC
Requires
- php: ^7.0
- illuminate/console: ^5.8.15|^6.0|^7.0|^8.0
- illuminate/contracts: ^5.8.15|^6.0|^7.0|^8.0
- illuminate/events: ^5.8.15|^6.0|^7.0|^8.0
- illuminate/filesystem: ^5.8.15|^6.0|^7.0|^8.0
- illuminate/notifications: ^5.8.15|^6.0|^7.0|^8.0
- illuminate/support: ^5.8.15|^6.0|^7.0|^8.0
- nategood/httpful: ^0.3.2
This package is auto-updated.
Last update: 2024-10-03 12:42:58 UTC
README
描述
一个用于喀麦隆移动货币支付的软件包。
仅支持 Mtn Cameroon
安装
composer require nkaurelien/momopay
(可选) 在 config\app.php
中添加服务提供商
providers' => [ #... \Nkaurelien\Momopay\Providers\MomopayServiceProvider::class, ]
(可选) 在 config\app.php
中添加服务外观
aliases' => [ #... 'MomoPay' => \Nkaurelien\Momopay\Facades\MomoPay::class ]
运行发布
php artisan vendor:publish
运行数据库迁移
php artisan migrate
配置
将配置添加到 config/services.php
'mtn' => [
'currency' => env('MTN_MOMO_CURRENCY', 'XAF'),
'go_live' => env('MTN_MOMO_GO_LIVE',false),
'api_key' => env('MTN_MOMO_USER_API_KEY'),
'reference_id' => env('MTN_MOMO_ID'),
'subscription_key' => env('MTN_MOMO_KEY'),
'payment_callback_route' => env('MTN_MOMO_CALLBACK_URL','payment.momo.callback'),
'payment_callback_host' => env('MTN_MOMO_CALLBACK_HOST'),
'notification_email' => env('MTN_MOMO_NOTIFICATION_EMAIL'),
],
配置描述
reference_id
: 用户IDsubscription_key
: Ocp-Apim-Subscription-Keytarget_environment
: 可以是 sanbox 或 mtncameroon (上线时使用)
别忘了使用命令 php artisan config:cache
重新缓存配置
添加路由
Route::any('/payment/momo/callback', 'PaymentMomoController@callback')->name('payment.momo.callback'); Route::get('/payment/momo/transaction/{id}', 'PaymentMomoController@getPayment')->name('payment.momo.gettransaction');
在控制器中使用
首先注入仓库类
private $paymentMomoRepository; public function __construct(PaymentMomoRepository $paymentMomoRepository){ #...
然后消耗仓库实例以实现支付逻辑
$momoRequestToPayDto = new \Nkaurelien\Momopay\Fluent\MomoRequestToPayDto; $momoRequestToPayDto->amount = 100; $momoRequestToPayDto->payeeNote = ''; $momoRequestToPayDto->payerMessage = ''; $momoRequestToPayDto->externalId = 'my_product_id'; $momoRequestToPayDto->payer->telephone = '2376XXXXXXXX'; # optional $momoRequestToPayDto->currency = 'XAF'; // Use EUR when you are in sandbox mode $refId = \Ramsey\Uuid\Uuid::uuid4()->toString(); $requestToPayResult = $this->paymentMomoRepository->requestToPay($momoRequestToPayDto, $refId);
如果您更喜欢外观而不是注入,则执行以下操作
#... $requestToPayResult = \Nkaurelien\Momopay\Facades\MomoPay::requestToPay($momoRequestToPayDto, $refId);
捕获事件
您可以监听
- Nkaurelien\Momopay\Events\PaymentFailed 在新验证后触发
- Nkaurelien\Momopay\Events\PaymentSuccessful 在新验证后触发
- Nkaurelien\Momopay\Events\PaymentAccepted (待定) 在支付请求成功或新验证后触发
使用命令
要验证交易,执行
php artisan momopay:verify-transactions # to verify all transactions php artisan momopay:verify-transactions [referenceId] # to verify a specific transaction
待办事项
- 创建支付事件
- 创建支付异常类
- 创建调度器和cron作业的命令
- 创建用于重新验证的交易表
- 支付成功时发送电子邮件通知
- 添加orange money支付方式