# درخواست پرداخت (Payment Request)

متد 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 (توضیح) است.

# دریافت URL پرداخت

پس از ارسال موفقیت‌آمیز درخواست پرداخت، یک 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();
}