binkode / laravel-mono
laravel-mono的描述。
v1.0
2021-09-05 02:32 UTC
Requires
- illuminate/support: ^7.0|^8.0
Requires (Dev)
- orchestra/testbench: ^6.0
This package is not auto-updated.
Last update: 2024-09-23 09:55:38 UTC
README
在您的laravel项目中使用Mono API。
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
验证传入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
<?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" } } } */ } }
<?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)。请参阅许可文件以获取更多信息。