damms005 / laravel-multipay
一个具有意见,易于扩展和配置的Laravel支付处理包
Requires
- php: ^8.0
- damms005/laravel-flutterwave: ^2.0
- flutterwavedev/flutterwave-v3: ^1.0
- guzzlehttp/guzzle: ^7.3
- illuminate/support: ^7.0|^8.0|^9.0|^10.0|^11.0
- yabacon/paystack-php: ^2.2
Requires (Dev)
- doctrine/dbal: ^3.6
- larastan/larastan: ^2.9
- orchestra/testbench: ^8.0
- pestphp/pest: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- vimeo/psalm: ^5.0
- dev-main
- v3.10.1
- v3.10.0
- v3.9.4
- v3.9.3
- v3.9.2
- v3.9.1
- v3.9
- v3.8
- v3.7
- v3.6
- v3.5
- v3.4
- v3.3
- v3.2
- v3.1
- v3.0
- v2.6.26
- v2.6.25
- v2.6.24
- v2.6.23
- v2.6.22
- v2.6.21
- v2.6.20
- v2.6.18
- v2.6.17
- v2.6.16
- v2.6.15
- v2.6.14
- v2.6.13
- v2.6.12
- v2.6.11
- v2.6.10
- v2.6.9
- v2.6.8
- v2.6.7
- v2.6.6
- v2.6.5
- v2.6.4
- v2.6.3
- v2.6.2
- v2.6.1
- v2.6.0
- v2.5.8
- v2.5.7
- v2.5.6
- v2.5.5
- v2.5.4
- v2.5.3
- v2.5.2
- v2.5.1
- v2.5.0
- v2.4.7
- v2.4.6
- v2.4.5
- v2.4.4
- v2.4.3
- v2.4.2
- v2.4.1
- v2.4.0
- v2.3.9
- v2.3.8
- v2.3.7
- v2.3.6
- v2.3.5
- v2.3.4
- v2.3.3
- v2.3.2
- v2.3.1
- v2.3.0
- v2.2.9
- v2.2.8
- v2.2.7
- v2.2.5
- v2.2.4
- v2.2.3
- v2.2.0
- v2.1.9
- v2.1.8
- v2.1.7
- v2.1.6
- v2.1.5
- v2.1.4
- v2.1.3
- v2.1.2
- v2.1.1
- v2.1.0
- v2.0.27
- v2.0.26
- v2.0.25
- v2.0.24
- v2.0.23
- v2.0.22
- v2.0.21
- v2.0.20
- v2.0.19
- v2.0.18
- v2.0.17
- v2.0.16
- v2.0.15
- v2.0.14
- v2.0.13
- v2.0.12
- v2.0.11
- v2.0.10
- v2.0.9
- v2.0.8
- v2.0.7
- v2.0.6
- v2.0.5
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v1.1.9
- v1.1.8
- v1.1.7
- v1.1.6
- v1.1.5
- v1.1.4
- v1.1.3
- v1.1.2
- v1.1.1
- v1.1.0
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- dev-patch-2
- dev-patch-1
This package is auto-updated.
Last update: 2024-09-25 11:32:16 UTC
README
一个具有意见的Laravel支付处理包,包含blade视图、路由以及所有中间件。
无论您是想快速为Laravel应用启动支付处理,还是想测试支持的支付处理器,这个包都能满足您的需求。
尽管具有意见,但这个包允许您“主题化”视图。它通过在
config('laravel-multipay.extended_layout')
(默认为layout.app
)中指定的任何视图上使用@extend()
来实现。这提供了一种流畅的即插即用™体验。
要求
该包经过以下测试:这里
- Laravel 8/9/10
- PHP 8.0, 8.1
当前支持的支付处理器
目前,该包支持以下在线支付处理器/处理程序
key: **指定支付处理器的实现尚未完成。如果您无法等待,请提交PR😉
您首选的支付处理器尚未支持?请考虑创建适当的issue类型。
添加新的支付处理器很简单。只需添加一个继承自
Damms005\LaravelMultipay\Services\PaymentHandlers\BasePaymentHandler
的类,并实现Damms005\LaravelMultipay\Contracts\PaymentHandlerInterface
注意
如您上述所述注册的支付服务提供商,将从Laravel容器解析,以提高该包的灵活性和改进DX。
安装
您只需做三件事
- 通过composer安装。
composer require damms005/laravel-multipay
- 发布配置文件。
php artisan vendor:publish --tag=laravel-multipay-config
- 运行迁移。
php artisan migrate
演示仓库
我发布了一个开源应用程序,它使用此支付包。它也是使用Laravel Vite和利用Laravel Echo的Laravel应用程序的绝佳示例,它通过使用Laravel Websocket在公共和私有频道上提供实时体验,由Livewire提供支持。该应用程序名为NFT Marketplace. 点击这里查看✌🏼
试驾 🚀
想要试一试?请访问 /payment/test-drive
(由本包提供的route('payment.test-drive')
) 。对于Paystack,请确保在安装时设置的laravel-multipay.php
配置文件中设置paystack_secret_key
密钥。您可以从设置页面获取密钥。
警告
确保您已安装TailwindCSS,然后添加此包的视图到您的tailwind.config.js
配置文件的content
键中,如下所示:
content: [
...,
'./vendor/damms005/laravel-multipay/views/**/*.blade.php',
],
...
需要的第三方集成
- Flutterwave:如果您想使用Flutterwave,请确保从仪表板获取您的API详情(链接),并使用它来设置以下环境变量
FLW_PUBLIC_KEY=FLWPUBK-xxxxxxxxxxxxxxxxxxxxx-X
FLW_SECRET_KEY=FLWSECK-xxxxxxxxxxxxxxxxxxxxx-X
FLW_SECRET_HASH='My_lovelysite123'
- Paystack:Paystack需要一个密钥。请访问Paystack仪表板以获取一个,并使用它来设置以下环境变量
PAYSTACK_SECRET_KEY=FLWPUBK-xxxxxxxxxxxxxxxxxxxxx-X
- Remita:确保设置以下环境变量
REMITA_MERCHANT_ID=xxxxxxxxxxxxxxxxxxxxx-X
REMITA_API_KEY=xxxxxxxxxxxxxxxxxxxxx-X
对于上述大多数环境变量,您应该使用(已发布的)配置文件来设置相应的值。
用法
典型流程
步骤 1
向/payment/details/confirm
发送一个POST
请求(由本包提供的route('payment.show_transaction_details_for_user_confirmation')
)。
检查InitiatePaymentRequest表单请求类,了解您要向此端点发布的值。(提示:您也可以查看test-drive/pay.blade.php)。
此POST
请求通常通过提交您的前端表单来简单实现。
提示:如果您需要将额外的上下文数据与此次支付一起存储,您可以将此类数据包含在请求中,字段名为
metadata
。值必须是一个有效的JSON字符串。
步骤 2
在用户确认交易后,用户将被重定向到相应的支付处理器网关。
步骤 3
当用户在支付处理器端完成交易(无论是成功支付还是交易被拒绝)时,用户将被重定向回/payment/completed
(由本包提供的route('payment.finished.callback_url')
)。
如果
Payment
有metadata
(与支付启动请求一起提供),并且有一个名为completion_url
的键,则在成功支付时,用户将被重定向到该URL,并且交易参考将作为transaction_reference
包含在URL查询字符串中。
如果您在成功支付后想采取额外的步骤,请监听
SuccessfulLaravelMultipayPaymentEvent
。每当发生成功支付时,都会触发该事件,并附带相应的Payment
模型。
支付冲突解决(PCR)
如果由于任何原因,您的用户/客户声称他们已成功支付,但您的平台没有反映这种成功的支付,则此PCR功能使您能够通过简单地调用
/**
* @var bool //true if payment was successful, false otherwise
**/
$outcome = LaravelMultipay::reQueryUnsuccessfulPayment( $payment )
支付将被重新解决,并在数据库中更新。如果支付成功,将触发SuccessfulLaravelMultipayPaymentEvent
事件,让您有机会运行任何域/应用程序特定的程序。
支付通知(WebHooks)
一些支付处理器提供了发送成功通知详情的途径。通常,您需要向支付处理器提供用于发送此类通知详情的URL。如果您需要此功能,通知URL由本包提供的route('payment.external-webhook-endpoint')
处理。
如果您使用此支付通知URL功能,请确保在您的
SuccessfulLaravelMultipayPaymentEvent
处理程序中检查您是否已处理过该同一笔支付的相同事件。
测试
composer test
致谢
本包的实现得益于以下优秀项目的出色工作
许可
MIT许可(MIT)。请参阅许可文件以获取更多信息。