nkaurelien/momopay

使用 mtn cameroun 的移动支付

dev-master 2024-04-03 11:44 UTC

This package is auto-updated.

Last update: 2024-10-03 12:42:58 UTC


README

Packagist License Packagist Version (including pre-releases) Packagist Downloads

描述

一个用于喀麦隆移动货币支付的软件包。
仅支持 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 : 用户ID
  • subscription_key : Ocp-Apim-Subscription-Key
  • target_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支付方式

有用链接

捐赠

Buy Me A Coffee