mr-saman / universal-payment
Universal payment engine with fiat and crypto gateways
Installs: 3
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/mr-saman/universal-payment
Requires
- php: ^8.1
README
⭐️ اگر این پکیج برات مفید بود، لطفاً بهش ستاره بده ⭐️
💳 Universal Payment Engine
🔌 Universal Modular Payment Package (Fiat + Crypto)
🇮🇷 فارسی
✅ معرفی
سیستم پرداخت جهانی / ایرانی یک هسته پرداخت ماژولار، مستقل و قابل توسعه برای Laravel است که امکان مدیریت:
- 💴 پرداختهای ریالی (Redirect‑based)
- 💎 پرداختهای ارز دیجیتال (Crypto)
را بدون وابستگی به Order، Cart یا User فراهم میکند.
پیشنیازها
- PHP >= 8.1
- Laravel >= 9.x
📦 نصب
composer require mr-saman/universal-payment
🔧 انتشار کانفیگ
php artisan vendor:publish --tag=universal-payment-config
⚙️ Payment Configuration
<?php return [ 'default_currency' => 'IRR', 'fx' => [ 'IRR_USDT' => 120000, ], 'redirect' => [ 'enabled' => true, ], 'verification_repository' => null, 'gateways' => [ 'zarinpal' => [ 'class' => MrSaman\UniversalPayment\Gateways\ZarinpalGateway::class, 'merchant_id' => env('ZARINPAL_MERCHANT_ID'), 'sandbox' => env('ZARINPAL_SANDBOX', true), 'callback_url' => env('ZARINPAL_CALLBACK_URL'), ], 'idpay' => [ 'class' => MrSaman\UniversalPayment\Gateways\IdPayGateway::class, 'api_key' => env('IDPAY_API_KEY'), 'sandbox' => env('IDPAY_SANDBOX', true), 'callback_url' => env('IDPAY_CALLBACK_URL'), ], 'payping' => [ 'class' => MrSaman\UniversalPayment\Gateways\PayPingGateway::class, 'api_key' => env('PAYPING_API_KEY'), 'sandbox' => env('PAYPING_SANDBOX', false), 'callback_url' => env('PAYPING_CALLBACK_URL'), ], 'nextpay' => [ 'class' => MrSaman\UniversalPayment\Gateways\NextPayGateway::class, 'api_key' => env('NEXTPAY_API_KEY'), 'sandbox' => env('NEXTPAY_SANDBOX', true), 'callback_url' => env('NEXTPAY_CALLBACK_URL'), ], 'sep' => [ 'class' => MrSaman\UniversalPayment\Gateways\SepGateway::class, 'terminal_id' => env('SEP_TERMINAL_ID'), 'merchant_id' => env('SEP_MERCHANT_ID'), 'callback_url' => env('SEP_CALLBACK_URL'), ], 'mellat' => [ 'class' => MrSaman\UniversalPayment\Gateways\MellatGateway::class, 'terminal_id' => env('MELLAT_TERMINAL_ID'), 'username' => env('MELLAT_USERNAME'), 'password' => env('MELLAT_PASSWORD'), 'callback_url' => env('MELLAT_CALLBACK_URL'), ], ], 'crypto' => [ 'usdt_trc20' => [ 'enabled' => true, 'wallet' => env('USDT_TRC20_WALLET'), ], ], 'callback' => [ 'success' => env('PAYMENT_CALLBACK_SUCCESS', '/payment/success'), 'failed' => env('PAYMENT_CALLBACK_FAILED', '/payment/failed'), ], ];
🚀 Initiate Payment
use MrSaman\UniversalPayment\Services\PaymentService; use MrSaman\UniversalPayment\DTO\PaymentRequestDTO; use MrSaman\UniversalPayment\ValueObjects\Money; use MrSaman\UniversalPayment\Enums\Currency; $money = new Money(250000, Currency::IRR); $request = new PaymentRequestDTO( orderId: 'ORDER-1001', money: $money, gateway: 'zarinpal', callbackUrl: route('payment.callback'), ); $result = app(PaymentService::class)->initiate($request);
✅ Verify Payment
$result = app(PaymentService::class)->verify( gateway: 'zarinpal', payload: request()->all() );
🔐 Idempotency
Verification is idempotent by design. Duplicate verify calls will return cached results and will not dispatch events twice.
📡 Events
- PaymentInitiated
- PaymentSucceeded
- PaymentFailed
🇺🇸 English
Introduction
Universal Payment Engine is a modular, contract‑driven Laravel payment core supporting both fiat (redirect‑based) and crypto payments.
📦 Installation
composer require mr-saman/universal-payment
Usage
$result = app(PaymentService::class)->initiate($request); $result = app(PaymentService::class)->verify('zarinpal', request()->all());
Supported Gateways
Fiat
- Zarinpal
- IDPay
- PayPing
- NextPay
- SEP
- Mellat
Crypto
- USDT (TRC20)
⭐ If you find this package useful, please give it a star.
💎 Universal Payment Engine
One Core. Infinite Gateways.