PHP code example of hosseinmehr / zarinpal-composer-library

1. Go to this page and download the library: Download hosseinmehr/zarinpal-composer-library library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

hosseinmehr / zarinpal-composer-library example snippets


use Zarinpal\Zarinpal;

$zarinpal = new Zarinpal('XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX');
$zarinpal->enableSandbox(); // محیط تست

$results = $zarinpal->request(
    'https://example.com/payment/callback',
    10000,
    'خرید محصول شماره ۱۲۳'
);

if (!empty($results['Authority'])) {
    // ذخیره Authority برای مرحله وریفای
    $zarinpal->redirect();
}

$status = $_GET['Status'] ?? 'NOK';
$authority = $_GET['Authority'] ?? '';

$results = $zarinpal->verify($status, 10000, $authority);

if ($results['Status'] === 'success') {
    echo 'شماره تراکنش: ' . $results['RefID'];
}

use Zarinpal\PaymentRequestOptions;

$options = new PaymentRequestOptions('[email protected]', '09121234567');
$options->setCurrency(PaymentRequestOptions::CURRENCY_IRT); // تومان

$results = $zarinpal->request(
    'https://example.com/callback',
    1000,
    'خرید اشتراک',
    null,
    null,
    $options
);

$options = new PaymentRequestOptions();
$options->setAutoVerify(true);  // اعتبارسنجی خودکار
// $options->setAutoVerify(false); // اعتبارسنجی غیرخودکار

$results = $zarinpal->request($callbackUrl, 10000, 'توضیحات', null, null, $options);

$options = new PaymentRequestOptions();
$options->addWage('IR123456789012345678901234', 5000, 'سهم فروشنده اول');
$options->addWage('IR987654321098765432109876', 3000, 'سهم فروشنده دوم');

$results = $zarinpal->request($callbackUrl, 10000, 'خرید با تسهیم', null, null, $options);

$options = new PaymentRequestOptions('[email protected]', '09120000000');
$options->buildCartData(
    [
        [
            'item_name' => 'کفش ورزشی',
            'item_amount' => 50000,
            'item_count' => 2,
            'item_amount_sum' => 100000,
        ],
    ],
    ['tax' => 5000, 'transport' => 2000],
    ['discount' => 3000]
);

$results = $zarinpal->request($callbackUrl, 150000, 'سفارش ۱۰۱۰', null, null, $options);

$result = $zarinpal->inquiry($authority);
// status: VERIFIED | PAID | IN_BANK | FAILED | REVERSED

$result = $zarinpal->unverified();

$result = $zarinpal->reverse($authority);

$result = $zarinpal->feeCalculation(10000, PaymentRequestOptions::CURRENCY_IRR);

use Zarinpal\ErrorCodes;

if (!$results['success']) {
    echo ErrorCodes::messageFa($results['code']);
    echo ErrorCodes::messageEn($results['code']);
}

'zarinpal' => [
    'merchantID' => env('ZARINPAL_MERCHANT_ID'),
    'sandbox' => env('ZARINPAL_SANDBOX', false),
    'zarinGate' => env('ZARINPAL_ZARINGATE', false),
],

use Illuminate\Http\Request;
use Zarinpal\Laravel\Facade\Zarinpal;
use Zarinpal\PaymentRequestOptions;

public function pay()
{
    $options = (new PaymentRequestOptions(
        auth()->user()->email,
        auth()->user()->phone
    ))
        ->setCurrency(PaymentRequestOptions::CURRENCY_IRR)
        ->setAutoVerify(false);

    $result = Zarinpal::request(
        route('payment.callback'),
        10000,
        'خرید سفارش #' . $order->id,
        null,
        null,
        $options
    );

    if (!empty($result['Authority'])) {
        return redirect(Zarinpal::redirectUrl());
    }

    return back()->withErrors($result['message_fa'] ?? 'خطا در اتصال به درگاه');
}

public function callback(Request $request)
{
    $result = Zarinpal::verify(
        $request->get('Status'),
        10000,
        $request->get('Authority')
    );

    if ($result['Status'] === 'success') {
        // پرداخت موفق — شماره تراکنش: $result['RefID']
    }

    return redirect()->route('home')->withErrors($result['message_fa'] ?? 'پرداخت ناموفق');
}

use Zarinpal\Laravel\Facade\Zarinpal;
use Zarinpal\PaymentRequestOptions;

$options = (new PaymentRequestOptions())
    ->setCurrency(PaymentRequestOptions::CURRENCY_IRR)
    ->setAutoVerify(true);

$results = Zarinpal::request($callbackUrl, 10000, 'خرید', null, null, $options);

if (!empty($results['Authority'])) {
    return redirect(Zarinpal::redirectUrl());
}

public function pay(\Zarinpal\Zarinpal $zarinpal)
{
    $result = $zarinpal->request(route('payment.callback'), 10000, 'خرید');
    // ...
}

// یا:
$zarinpal = app('Zarinpal');

Route::get('/payment', [PaymentController::class, 'pay'])->name('payment.pay');
Route::get('/payment/callback', [PaymentController::class, 'callback'])->name('payment.callback');
bash
php artisan vendor:publish --tag=zarinpal-config