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