damms005 / laravel-cashier
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
当前支持的支付处理器
目前,此包支持以下在线支付处理器/处理器:
注意:指定支付处理器的实现尚未完成。如果您不能等待,请考虑提交PR。
如果您的首选支付处理器尚未支持,请考虑 打开适当类型的问题。
添加新的支付处理器很简单。只需添加一个扩展
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,并在URL查询字符串中包含transaction_reference
作为交易参考。
如果成功支付后您想执行额外的步骤,请监听
SuccessfulLaravelMultipayPaymentEvent
。每当发生成功支付时,它都会触发,并带有相应的Payment
模型。
支付冲突解决(PCR)
如果由于任何原因,您的用户/客户声称他们已成功支付,但您的平台没有反映这种成功的支付,则此PCR功能使您能够通过简单地调用来解决这个问题
/**
* @var bool //true if payment was successful, false otherwise
**/
$outcome = LaravelMultipay::reQueryUnsuccessfulPayment( $payment )
将重新解决此支付,并在数据库中更新支付。如果支付成功,将触发 SuccessfulLaravelMultipayPaymentEvent
事件,您将有机会运行任何特定于域/应用程序的程序。
支付通知(WebHooks)
一些支付处理程序提供发送成功通知详情的途径。通常,您需要向支付处理程序提供URL,以便将此类通知的详情发送到该URL。如果您需要此功能,通知URL由本包提供的 route('payment.external-webhook-endpoint')
处理。
如果您使用此支付通知URL功能,请确保在您的
SuccessfulLaravelMultipayPaymentEvent
处理程序中检查,您是否已先前处理过该同一支付的该事件。
测试
composer test
致谢
本包的实现得益于以下出色项目所做的工作:
许可证
MIT许可证(MIT)。更多信息请参阅许可证文件。