escolalms / payments
Escola LMS 支付包。
Requires
- php: >=7.4
- escolalms/core: ^1
- escolalms/przelewy24-php: ^0
- laravel/framework: >=8.0
- league/omnipay: ^3
- maatwebsite/excel: ^3.1
- omnipay/stripe: ^3.1
Requires (Dev)
- barryvdh/laravel-ide-helper: ^2.10
- escolalms/settings: ^0.1.7
- nunomaduro/collision: ^5.4
- nunomaduro/larastan: ^0.7.6
- orchestra/testbench: ~5|~6
- php-http/message-factory: ^1.1
- phpunit/phpunit: ^9.0
Suggests
- escolalms/settings: For settings to work
- dev-main / 0.x-dev
- 0.2.20
- 0.2.19
- 0.2.18
- 0.2.17
- 0.2.16
- 0.2.15
- 0.2.14
- 0.2.13
- 0.2.12
- 0.2.11
- 0.2.10
- 0.2.9
- 0.2.8
- 0.2.7
- 0.2.6
- 0.2.5
- 0.2.4
- 0.2.3
- 0.2.2
- 0.2.1
- 0.2.0
- 0.1.14
- 0.1.13
- 0.1.12
- 0.1.11
- 0.1.10
- 0.1.9
- 0.1.8
- 0.1.7
- 0.1.6
- 0.1.5
- 0.1.4
- 0.1.3
- 0.1.2
- 0.1.1
- 0.1.0
- 0.0.9
- 0.0.8
- 0.0.7
- 0.0.6
- 0.0.5
- 0.0.4
- 0.0.3
- 0.0.2
- 0.0.1
- dev-feature/WELLMS-389
This package is auto-updated.
Last update: 2024-09-10 07:14:59 UTC
README
目的
此包允许您通过外部支付提供程序(网关)的集成来创建支付并处理它们。
依赖关系
- Stripe 集成基于
league/omnipay
和omnipay/stripe
包。 - Przelewy24 集成基于
mnastalski/przelewy24-php
包。 - 可选的
escolalms/settings
包集成允许使用设置 API(和管理面板)更改支付网关 API 密钥和密钥。
安装
composer require escolalms/payments
php artisan migrate
php artisan db:seed --class="EscolaLms\Cart\Database\Seeders\CartPermissionSeeder"
使用
门面
支付门面
使用 EscolaLms\Payments\Facades\Payments
开始支付处理。您可以从模型(使用可支付特性)或从预先创建的支付对象中创建 `PaymentProcessor`。
use EscolaLms\Cart\Models\Cart; use EscolaLms\Payments\Dtos\PaymentMethodDto; use EscolaLms\Payments\Facades\Payments; $payable = Cart::find($id); // Cart must implement Payable interface and use Payable trait $paymentMethodDto = PaymentMethodDto::instantiateFromRequest($request); $processor = Payments::processPayment($payable); $processor->purchase($paymentMethodDto); // will emit PaymentPaid event on success if($payment->status->is(PaymentStatus::PAID)){ // ... }
支付网关门面
使用 EscolaLms\Payments\Facades\PaymentGateway
直接调用支付提供程序网关。
对于现有的支付,例如可以这样做
use EscolaLms\Payments\Dtos\PaymentMethodDto; use EscolaLms\Payments\Facades\PaymentGateway; use EscolaLms\Payments\Models\Payment; $payment = Payment::find($id); $paymentMethodDto = PaymentMethodDto::instantiateFromRequest($request); $paymentDto = PaymentDto::instantiateFromPayment($payment); // or you can create it manually PaymentGateway::purchase($paymentDto, $paymentMethodDto); // will use default payment driver
重要:这将不会保存 Payment
对象。
要使用特定驱动程序,可以调用
PaymentGateway::driver('stripe')->purchase($paymentDto, $paymentMethodDto);
可用的支付驱动程序
- stripe(使用
Stripe 支付意图
) - 免费
- przelewy24
- 待办事项:stripe-checkout
可支付特性和接口
Payable
特性和接口是此包的核心,它简化了对 PaymentsService
和 GatewayManager
的调用。当您将其包含在表示 Payable
的模型(例如 Cart
或 Order
或 Product
)中时,您可以开始处理该 Payable
的支付,通过调用 $payable->process()
,它调用 Payments::processPayable($this)
并自动创建一个 Payment
并返回该支付的 PaymentProcessor
实例。
EscolaLms\Cart
包在 EscolaLms\Cart\Models\Order
中使用此特性和接口。
支付处理器
EscolaLms\Payments\Entities\PaymentProcessor
是一个特殊类,它围绕 Payment
包装并包含与处理该支付相关的功能,例如生成支付网关链接、在购买后自动设置支付状态、发出与支付状态相关的事件等。
use EscolaLms\Payments\Dtos\PaymentMethodDto; use EscolaLms\Payments\Entities\PaymentProcessor; use EscolaLms\Payments\Models\Payment; $payment = Payment::find($id); $paymentMethodDto = PaymentMethodDto::instantiateFromRequest($request); $processor = new PaymentProcessor($payment); // instead of using Payments facade $processor->purchase($paymentMethodDto);
PaymentProcessor
在支付金额等于 0 时自动选择 free
驱动程序。
支付模型
此包定义了一个 EscolaLms\Payments\Models\Payment
,它包含所有关于给定支付的数据,这些数据对于支付网关工作所需。
端点
测试
运行 ./vendor/bin/phpunit
以运行测试。查看 tests/Mocks/Payable 了解如何定义可支付对象。
事件
EscolaLms\Payments\Events\PaymentCancelled
- 在支付处理被取消(由用户操作或可能是来自支付网关的超时)后发出EscolaLms\Payments\Events\PaymentFailed
- 在支付失败(支付网关返回错误)后发出EscolaLms\Payments\Events\PaymentRegistered
- 当创建新付款时发出EscolaLms\Payments\Events\PaymentSuccess
- 当支付网关返回成功时发出
监听器
此包中没有定义监听器。
如何在前端使用此包
管理面板
左侧菜单
付款列表
权限
路线图。待办事项。故障排除
- ???