binkode/laravel-mono

laravel-mono的描述。

v1.0 2021-09-05 02:32 UTC

This package is not auto-updated.

Last update: 2024-09-23 09:55:38 UTC


README

在您的laravel项目中使用Mono API。

Software License Travis Total Downloads

Mono文档链接

安装

composer require myckhel/laravel-mono

设置

该包将自动注册服务提供者。

您需要发布配置文件

php artisan vendor:publish --provider="Myckhel\Mono\MonoServiceProvider"

发布配置

这是配置文件 mono.php 的默认内容

<?php

return [
    "secret_key"    => env("MONO_SECRET_KEY"),
    "url"           => env("MONO_URL", 'https://api.withmono.com'),
    "version"       => 1,

    "route" => [
        "middleware"    => ['api'], // For injecting middleware to the package's routes
        "prefix"    => 'api', // For injecting middleware to the package's routes
    ],
];

更新.env文件

更新您的项目的 .env 文件,包括其凭证

MONO_SECRET_KEY=XXXXXXXXXXXXXXXXXXXX
MONO_PUBLIC_KEY=XXXXXXXXXXXXXXXXXXXX
MONO_WEBHOOK_SECRET_KEY=XXXXXXXXXXXX

使用方法

账户

use Myckhel\Mono\Support\Account;

Account::auth($code, $params);

Account::info($id, $params);

Account::statement($id, $params);

Account::pollpdf($id, $params);

Account::transactions($id, $params);

Account::income($id, $params);

Account::identity($id, $params);

Account::sync($id, $params);

Account::reauthorise($id, $params);

Account::unlink($id, $params);

Account::coverage($params);

Cac

use Myckhel\Mono\Support\Cac;

Cac::lookup($params);

Cac::company($id, $params);

支付

use Myckhel\Mono\Support\Payment;

Payment::initiate($params);

Payment::verify($params);

Payment::oneTimePayment($params);

Payment::createPlan($params);

Payment::listPlans($params);

Payment::updatePlan($params);

Payment::deletePlan($params);

钱包

use Myckhel\Mono\Support\Wallet;

Payment::balance($params);

_mono

  • verifyWebHook

验证传入webhook密钥的方法

use Mono;

Mono::verifyWebHook($request->header('mono-webhook-secret'));

使用WebHook路由

Laravel mono为您提供了一个预定义的端点,该端点监听并验证传入的_mono webhook事件。每当收到钩子时,它都会触发Myckhel\Mono\Events\Hook事件,这些事件可以被监听。

设置Mono Webhook

请查看官方页面获取设置Mono webhook的说明 laravel-mono暴露了hooks API端点,在设置过程中使用端点URL作为_mono webhook URL。

| POST      | /hooks                                |               | Myckhel\Mono\Http\Controllers\HookController@hook              | api            |

监听laravel-mono Hook事件

设置完成后,您可以通过在laravel项目中的EventServiceProvider文件中注册事件来开始监听传入的_mono webhook。

  • 创建一个事件监听器类

php artisan make:listener MonoWebHookListener --event=Myckhel\Mono\Events\Hook
  • 处理_mono webhook事件

<?php

namespace App\Listeners;

use Myckhel\Mono\Events\Hook;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Support\Facades\Log;

class MonoWebHookListener
{
    /**
     * Handle the event.
     *
     * @param  Myckhel\Mono\Events\Hook  $event
     * @return void
     */
    public function handle(Hook $event)
    {
        Log::debug($event->event);
        /* {
            "event": "direct_debit.payment_successful",
            "data": {
              "type": "onetime-debit",
              "object": {
                "id": "txd_9AhCg0PNkwHiq6RqLLdiqKDf",
                "status": "successful",
                "amount": 30000,
                "description": "free shirt",
                "fee": 300,
                "currency": "NGN",
                "account": "611d575feef5d3371ca9d0d8",
                "customer": "611adcd9a5fda23baf58140d",
                "reference": "djdjj3939394949944",
                "liveMode": true,
                "created_at": "2021-08-18T18:54:23.491Z",
                "updated_at": "2021-08-18T18:55:16.055Z"
              }
            }
          }
        */
    }
}
  • 注册MonoWebHookListener

<?php

namespace App\Providers;

use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Event;

use Myckhel\Mono\Events\Hook;
use App\Listeners\MonoWebHookListener;

class EventServiceProvider extends ServiceProvider
{
    /**
     * The event listener mappings for the application.
     *
     * @var array
     */
    protected $listen = [
        ...
        Hook::class => [
            MonoWebHookListener::class,
        ],
    ];

使用内置路由

+--------+-----------+---------------------------------------------+---------------+----------------------------------------------------------------+----------------+
| Domain | Method    | URI                                         | Name          | Action                                                         | Middleware     |
+--------+-----------+---------------------------------------------+---------------+----------------------------------------------------------------+----------------+
|        | GET|HEAD  | /                                           |               | Closure                                                        | web            |
|        | POST      | api/v1/account/auth                         |               | Myckhel\Mono\Http\Controllers\AccountController@auth           | api            |
|        |           |                                             |               |                                                                | api.version:v1 |
|        | GET|HEAD  | api/v1/accounts/{id}                        |               | Myckhel\Mono\Http\Controllers\AccountController@info           | api            |
|        |           |                                             |               |                                                                | api.version:v1 |
|        | GET|HEAD  | api/v1/accounts/{id}/identity               |               | Myckhel\Mono\Http\Controllers\AccountController@identity       | api            |
|        |           |                                             |               |                                                                | api.version:v1 |
|        | GET|HEAD  | api/v1/accounts/{id}/income                 |               | Myckhel\Mono\Http\Controllers\AccountController@income         | api            |
|        |           |                                             |               |                                                                | api.version:v1 |
|        | POST      | api/v1/accounts/{id}/reauthorise            |               | Myckhel\Mono\Http\Controllers\AccountController@reauthorise    | api            |
|        |           |                                             |               |                                                                | api.version:v1 |
|        | GET|HEAD  | api/v1/accounts/{id}/statement              |               | Myckhel\Mono\Http\Controllers\AccountController@statement      | api            |
|        |           |                                             |               |                                                                | api.version:v1 |
|        | GET|HEAD  | api/v1/accounts/{id}/statement/jobs/{jobId} |               | Myckhel\Mono\Http\Controllers\AccountController@pollPdf        | api            |
|        |           |                                             |               |                                                                | api.version:v1 |
|        | POST      | api/v1/accounts/{id}/sync                   |               | Myckhel\Mono\Http\Controllers\AccountController@sync           | api            |
|        |           |                                             |               |                                                                | api.version:v1 |
|        | GET|HEAD  | api/v1/accounts/{id}/transactions           |               | Myckhel\Mono\Http\Controllers\AccountController@transactions   | api            |
|        |           |                                             |               |                                                                | api.version:v1 |
|        | POST      | api/v1/accounts/{id}/unlink                 |               | Myckhel\Mono\Http\Controllers\AccountController@unlink         | api            |
|        |           |                                             |               |                                                                | api.version:v1 |
|        | GET|HEAD  | api/v1/cac/company/{id}                     |               | Myckhel\Mono\Http\Controllers\CacController@company            | api            |
|        |           |                                             |               |                                                                | api.version:v1 |
|        | GET|HEAD  | api/v1/cac/lookup                           |               | Myckhel\Mono\Http\Controllers\CacController@lookup             | api            |
|        |           |                                             |               |                                                                | api.version:v1 |
|        | GET|HEAD  | api/v1/coverage                             |               | Myckhel\Mono\Http\Controllers\AccountController@coverage       | api            |
|        |           |                                             |               |                                                                | api.version:v1 |
|        | POST      | api/v1/payments/initiate                    |               | Myckhel\Mono\Http\Controllers\PaymentController@initiate       | api            |
|        |           |                                             |               |                                                                | api.version:v1 |
|        | GET|HEAD  | api/v1/payments/one-time-payment            |               | Myckhel\Mono\Http\Controllers\PaymentController@oneTimePayment | api            |
|        |           |                                             |               |                                                                | api.version:v1 |
|        | POST      | api/v1/payments/plans                       |               | Myckhel\Mono\Http\Controllers\PaymentController@createPlan     | api            |
|        |           |                                             |               |                                                                | api.version:v1 |
|        | GET|HEAD  | api/v1/payments/plans                       |               | Myckhel\Mono\Http\Controllers\PaymentController@listPlans      | api            |
|        |           |                                             |               |                                                                | api.version:v1 |
|        | PUT       | api/v1/payments/plans/{planId}              |               | Myckhel\Mono\Http\Controllers\PaymentController@updatePlan     | api            |
|        |           |                                             |               |                                                                | api.version:v1 |
|        | DELETE    | api/v1/payments/plans/{{planId}}            |               | Myckhel\Mono\Http\Controllers\PaymentController@deletePlan     | api            |
|        |           |                                             |               |                                                                | api.version:v1 |
|        | POST      | api/v1/payments/verify                      |               | Myckhel\Mono\Http\Controllers\PaymentController@verify         | api            |
|        |           |                                             |               |                                                                | api.version:v1 |
|        | POST      | api/v1/hooks                                |               | Myckhel\Mono\Http\Controllers\HookController@hook              | api            |
|        |           |                                             |               |                                                                | api.version:v1 |
+--------+-----------+---------------------------------------------+---------------+----------------------------------------------------------------+----------------+

变更日志

请参阅变更日志以获取有关最近更改的更多信息。

贡献

请参阅贡献指南以获取详细信息。

鸣谢

安全

如果您发现任何与安全相关的问题,请通过myckhel1@hotmail.com发送电子邮件,而不是使用问题跟踪器。

许可

MIT许可证(MIT)。请参阅许可文件以获取更多信息。