متد request
به شما امکان میدهد تا یک درخواست پرداخت جدید ایجاد کنید و کاربر را به درگاه پرداخت هدایت کنید. این متد برای ارسال اطلاعات مربوط به پرداخت و دریافت authority
جهت هدایت کاربر به صفحه پرداخت استفاده میشود.
در جدول زیر توضیحات مربوط به هر پارامتر را مشاهده میکنید:
نام پارامتر | نوع | الزامی | توضیحات |
---|---|---|---|
amount | Integer | بله | مبلغ پرداختی به ریال. حداقل مقدار پرداخت 10000 ریال است. |
description | String | بله | توضیحات مربوط به تراکنش مانند شماره سفارش یا نام محصول. |
callback_url | String | بله | آدرس بازگشت پس از تکمیل یا عدم موفقیت پرداخت. |
mobile | String | خیر | شماره موبایل کاربر. (اختیاری) |
email | String | خیر | ایمیل کاربر. (اختیاری) |
referrer_id | String | خیر | کد معرف. (اختیاری) |
currency | String | خیر | واحد پولی تراکنش. مقدار پیشفرض IRR (ریال) و مقدار دیگر IRT (تومان) است. |
cardPan | String | خیر | شماره کارت بانکی که کاربر با آن پرداخت میکند. (اختیاری) |
wages | Array | خیر | آرایهای شامل اطلاعات تسهیم سود. هر عنصر شامل iban (شبا)، amount (مبلغ) و description (توضیح) است. |
پس از ارسال موفقیتآمیز درخواست پرداخت، یک authority
از زرینپال دریافت میشود. سپس با استفاده از این authority
میتوانید URL نهایی پرداخت را با متد getRedirectUrl
دریافت کرده و کاربر را به درگاه پرداخت هدایت کنید.
در ادامه نمونه کدی که نحوه ارسال درخواست پرداخت و هدایت کاربر به درگاه پرداخت را نشان میدهد، آورده شده است:
<?php
require_once __DIR__ . '/../vendor/autoload.php';
use Http\Client\Common\Plugin\HeaderDefaultsPlugin;
use ZarinPal\Sdk\ClientBuilder;
use ZarinPal\Sdk\HttpClient\Exception\ResponseException;
use ZarinPal\Sdk\Options;
use ZarinPal\Sdk\ZarinPal;
use ZarinPal\Sdk\Endpoint\PaymentGateway\RequestTypes\RequestRequest;
$clientBuilder = new ClientBuilder();
$clientBuilder->addPlugin(new HeaderDefaultsPlugin([
'Accept' => 'application/json',
]));
$options = new Options([
'client_builder' => $clientBuilder,
'sandbox' => false, // Enable sandbox mode
'merchant_id' => '67887a6d-e2f8-4de2-86b1-8db27bc171b5',
]);
$zarinpal = new ZarinPal($options);
$paymentGateway = $zarinpal->paymentGateway();
$request = new RequestRequest();
$request->amount = 10000; //Minimum amount 10000 IRR
$request->description = 'Payment for order 12345';
$request->callback_url = 'https://your-site.test/examples/verify.php';
$request->mobile = '09120987654'; // Optional
$request->email = 'test@example.com'; // Optional
$request->currency = 'IRR'; // Optional IRR Or IRT (default IRR)
$request->referrer_id = 'GYKCZDF'; // Optional IRR Or IRT (default IRR)
$request->cardPan = '5894631122689480'; // Optional
$request->wages = [
[
'iban' => 'IR123456789123456478945165',
'amount' =>5000,
'description' => 'تسهیم سود فروش'
],
[
'iban' => 'IR223456789123456478945188',
'amount' => 5000,
'description' => 'تسهیم سود فروش به شخص دوم'
]
]; //Optional
try {
$response = $paymentGateway->request($request);
$url = $paymentGateway->getRedirectUrl($response->authority); // create full url Payment
header('Location:'. $url);
} catch (ResponseException $e) {
var_dump($e->getErrorDetails());
} catch (\Exception $e) {
echo 'Payment Error: ' . $e->getMessage();
}