farayaz/larapay

iranian online payment gateways

v1.9.0 2024-04-30 23:17 UTC

README

GitHub Repo stars Total Downloads Latest Stable Version License

Larapay is a Laravel package for integrating Iranian payment gateways.

لاراپی یک پکیج لاراول برای اتصال به درگاه‌های پرداختی ایرانی است.

Gateways | درگاه‌ها

Class Name (en) Name (fa) Requirements
Azkivam Azkivam ازکی وام merchant_id,api_key
BehPardakht Beh Pardakht Mellat به‌پرداخت ملت terminalId, username, password
Digipay Digipay دیجی‌پی username, password, client_id, client_secret
IdPay IdPay آیدی‌پی apiKey, sandbox
IranKish Iran Kish ایران کیش terminalId, password, acceptorId, pubKey
Keepa Keepa - Kipaa کیپا token
MehrIran MehrIran بانک مهر ایران terminal_id, merchant_nid, encrypt_key
Omidpay Omidpay - Sayan Card امید پی (سایان کارت) user_id, password
PardakhtNovin Pardakht Novin پرداخت نوین userId, password, terminalId
Payir Pay.ir پی.آی‌آر api
PayPing PayPing پی پینگ token
Polam Polam(Poolam) پولام api_key
Sep Saman Electronic Payment پرداخت الکترونیک سامان (سپ) terminalId
SepehrPay Sepehr Pay پرداخت الکترونیک سپهر (مبنا) terminalId
TejaratBajet Tejarat Bajet بانک تجارت - باجت client_id, client_secret, sandbox
ZarinPal Zarin Pal زرین پال merchant_id
Zibal Zibal زیبال merchant
...

If you don't find the gate you want, let us know or contribute to add it

اگر درگاه مورد نظر خود را پیدا نکردید، به ما اطلاع دهید یا در اضافه کردن آن مشارکت کنید

Benefits | مزایا

  • Simple | ساده
  • Flexibility | انعطاف‌پذیری
  • Fee Calculation | محاسبه هزینه تراکنش

Install | نصب

You can install the package via composer:

شما می‌توانید با استفاده از composer پکیج را نصب کنید

composer require farayaz/larapay

Usage | استفاده

To make the payment, 3 steps must be done:

برای انجام پرداخت ۳ مرحله می‌بایست انجام شود:

Step 1: get token | مرحله ۱: دریافت توکن

use Farayaz\Larapay\Exceptions\LarapayException;
use Larapay;

$gatewayClass = 'ZarinPal';
$gatewayConfig = [ // gateway config | تنظیمات درگاه
    'merchant_id' => 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee',
];

$amount = 10000;
$id = 1230; // transaction id | شماره تراکنش
$callbackUrl = route('api.transactions.verify', $id);
$nationalId = '1234567890';
$mobile = '09131234567';

try {
    $result = Larapay::gateway($gatewayClass, $gatewayConfig)
        ->request(
            id: $id,
            amount: $amount,
            callbackUrl: $callbackUrl,
            nationalId: $nationalId,
            mobile: $mobile
        );
} catch (LarapayException $e) {
    throw $e;
}

// store token in db | ذخیره توکن در دیتابیس
$result['token'];
$result['fee'];

Step 2: redirect | مرحله ۲: ریدایرکت

Transfer the user to gateway with the received token:

انتقال کاربر به درگاه با توکن دریافت شده:

try {
    return Larapay::gateway($gatewayClass, $gatewayConfig)
        ->redirect($id, $token, $callbackUrl);
} catch (LarapayException $e) {
    throw $e;
}

Step 3: verify | مرحله ۳: تایید

Checking the payment status after the user returns from the gateway:

بررسی وضعیت پرداخت پس از بازگشت کاربر از درگاه:

$params = $request->all();
try {
    $result = Larapay::gateway($gatewayClass, $gatewayConfig)
        ->verify(
            id: $id,
            amount: $amount,
            token: $token,
            params: $params
        );
} catch (LarapayException $e) {
    // transaction failed | تراکنش ناموفق
    throw $e;
}

// transaction verified | تراکنش موفق
$result['result'];
$result['reference_id'];
$result['tracking_code'];
$result['card'];
$result['fee'];