sepayvn / laravel-sepay
Laravel SePay 包 - 银行转账自动化支付解决方案
v1.2.0
2024-05-22 08:36 UTC
Requires
- php: ^8.0
- illuminate/contracts: ^9.28 | ^10.0 | ^11.0
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.8
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^8.8
- pestphp/pest: ^2.20
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
README
安装
您可以通过 composer 安装此包
composer require sepayvn/laravel-sepay
适用于 Laravel 7, 8 和 PHP 7.4 及以上版本
composer require "sepayvn/laravel-sepay:dev-lite"
您可以使用以下命令发布和运行迁移
php artisan vendor:publish --tag="sepay-migrations"
php artisan migrate
您可以使用以下命令发布配置文件
php artisan vendor:publish --tag="sepay-config"
这是发布配置文件的内容
return [ 'webhook_token' => env('SEPAY_WEBHOOK_TOKEN'), 'pattern' => env('SEPAY_MATCH_PATTERN', 'SE'), ];
可选地,您可以使用以下命令发布视图
php artisan vendor:publish --tag="sepay-views"
使用方法
创建 SePayWebhookListener
php artisan make:listener SePayWebhookListener
<?php namespace App\Listeners; use App\Models\User; use SePay\SePay\Events\SePayWebhookEvent; use SePay\SePay\Notifications\SePayTopUpSuccessNotification; class SePayWebhookListener { /** * Create the event listener. */ public function __construct() { // } /** * Handle the event. */ public function handle(SePayWebhookEvent $event): void { // Xử lý tiền vào tài khoản if ($event->sePayWebhookData->transferType === 'in') { // Trường hợp $info là user id $user = User::query()->where('id', $event->info)->first(); if ($user instanceof User) { $user->notify(new SePayTopUpSuccessNotification($event->sePayWebhookData)); } } else { // Xử lý tiền ra tài khoản } } }
-
对于 Laravel 11 及以下版本(7, 8, 9, 10)
将 SePayWebhookListener 注册到 app/Providers/EventServiceProvider.php
protected $listen = [ ... \SePay\SePay\Events\SePayWebhookEvent::class => [ \App\Listeners\SePayWebhookListener::class, ], ];
-
对于 Laravel 11,将
SePayWebhookListener
放在 app/Listeners 目录中,Laravel 将自动将其与SePayWebhookEvent
绑定,您无需在 Provider 中注册,避免重复调用。如果您发现
SePayWebhookListener
未监听SePayWebhookEvent
,则可以在app/Providers/AppServiceProvider.php
的boot
方法中执行以下操作:public function boot(): void { \Illuminate\Support\Facades\Event::listen( \SePay\SePay\Events\SePayWebhookEvent::class, \App\Listeners\SePayWebhookListener::class, ); }
Webhook
-
点击右上角的
添加 Webhook
按钮 -
需要填写的信息,请填写,以下几项需要注意:
- 将
domain.com
替换为您的域名 - 认证类型:为 Api Key
- API Key:输入一个由字母和数字组成的随机密钥(如示例所示,不要有标点符号)
- 将
-
将您的 Laravel 应用程序中的
.env
文件修改如下SEPAY_WEBHOOK_TOKEN
- 是步骤 3.3 中输入的 API KeySEPAY_MATCH_PATTERN
- 默认为SE
,您可以根据您的应用程序进行修改
使用 Postman 进行测试
在 Postman 中点击导入,并粘贴以下代码
curl --location 'https://domain.com/api/sepay/webhook' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer Apikey đây_là_khóa_bí_mật' \ --data '{ "gateway": "MBBank", "transactionDate": "2024-05-25 21:11:02", "accountNumber": "0359123456", "subAccount": null, "code": null, "content": "Thanh toan QR SE123456", "transferType": "out", "description": "Thanh toan QR SE123456", "transferAmount": 1700000, "referenceCode": "FT123456789", "accumulated": 0, "id": 123456 }'
测试
composer test
支持开发者
您可以通过以下服务支持此包的开发者:
变更日志
请参阅CHANGELOG 了解最近更改的信息。
贡献
请参阅CONTRIBUTING 了解详细信息。
安全漏洞
请参阅我们的安全策略 了解如何报告安全漏洞。
鸣谢
许可证
MIT 许可证(MIT)。请参阅许可证文件 了解更多信息。