alhelwany / laravel-ecash
Laravel Payment Gateway for Ecash (Syria)
1.1.1
2024-04-17 12:18 UTC
Requires
- php: ^8.1
- illuminate/contracts: ^10.0||^11.0
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- larastan/larastan: ^2.9
- nunomaduro/collision: ^8.1.1||^7.10.0
- orchestra/testbench: ^9.0.0||^8.22.0
- pestphp/pest: ^2.34
- pestphp/pest-plugin-arch: ^2.7
- pestphp/pest-plugin-laravel: ^2.3
- phpstan/extension-installer: ^1.3
- phpstan/phpstan: ^1.10
- phpstan/phpstan-deprecation-rules: ^1.1
- phpstan/phpstan-phpunit: ^1.3
- spatie/laravel-ray: ^1.35
This package is auto-updated.
Last update: 2024-09-08 05:13:49 UTC
README
简化将Ecash支付集成到您的Laravel应用中。此包提供简化的设置和直观的API,以快速、安全地处理支付。
安装
您可以通过composer安装此包
composer require alhelwany/laravel-ecash
您可以使用以下命令发布和运行迁移
php artisan vendor:publish --tag="laravel-ecash-migrations"
php artisan migrate
您可以使用以下命令发布配置文件
php artisan vendor:publish --tag="laravel-ecash-config"
这是发布配置文件的内容
return [ 'gatewayUrl' => env('ECASH_GATEWAY_URL', 'https://checkout.ecash-pay.co'), 'terminalKey' => env('ECASH_TERMINAL_KEY', null), 'merchantId' => env('ECASH_MERCHANT_ID', null), 'merchantSecret' => env('ECASH_MERCHANT_SECRET', null), ];
入门
- 设置您的环境变量
- 发布和运行迁移
- 要开始支付流程,使用checkout方法创建支付模型并生成支付URL
- 一旦支付完成,并且网关将用户重定向到重定向URL,支付状态将从待处理变为处理中
- 一旦网关调用回调URL,支付状态将从处理中变为失败或已支付
- 每次支付状态改变时,都会触发PaymentStatusUpdated事件,您可以配置监听器来更新订单的状态
枚举
枚举位于命名空间 "Alhelwany\LaravelEcash\Enums"
enum Lang: string { case AR = 'AR'; case EN = 'EN'; }
enum Currency: string { case SYP = 'SYP'; // The only available currency by the gateway so far }
enum CheckoutType: string { case QR = 'QR'; case CARD = 'Card'; }
enum PaymentStatus: string { case PENDING = 'pending'; case PROCESSING = 'processing'; case PAID = 'paid'; case FAILED = 'failed'; }
异常
InvalidAmountException
当调用checkout函数时,如果金额为负数或0,则会抛出。
InvalidConfigurationException
当尝试在使用包之前设置.env变量时抛出。
事件
PaymentStatusUpdated
namespace Alhelwany\LaravelEcash\Events; use Illuminate\Broadcasting\InteractsWithSockets; use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Queue\SerializesModels; use Alhelwany\LaravelEcash\Models\EcashPayment; class PaymentStatusUpdated { use Dispatchable, InteractsWithSockets, SerializesModels; public function __construct(private EcashPayment $paymentModel) { } public function getPaymentModel(): EcashPayment { return $this->paymentModel; } }
重要提示
The EcashPayment Model uses id of type UUID as a primary key
示例用法
Checkout
use App\Http\Controllers\Controller; use Alhelwany\LaravelEcash\Facades\LaravelEcashClient; use Alhelwany\LaravelEcash\DataObjects\PaymentDataObject; use Alhelwany\LaravelEcash\Models\EcashPayment; use Alhelwany\LaravelEcash\Enums\CheckoutType; use Alhelwany\LaravelEcash\Enums\Lang; use Alhelwany\LaravelEcash\Enums\Currency; class ExampleController extends Controller { public function checkout($request) { $paymentDataObject = new PaymentDataObject(CheckoutType::CARD, 100.10); $paymentDataObject->setRedirectUrl(route('payment-successful')); //optional $paymentDataObject->setLang(Lang::EN); //optional $paymentDataObject->setCurrency(Currency::SYP); //optional $model = LaravelEcashClient::checkout($paymentDataObject); // You may attach the EcashPayment model to your order return redirect($model['checkout_url']); } }
测试
composer test
致谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。