# استرداد وجه

متد استرداد وجه به شما این امکان را می‌دهد که در صورت تغییر یا لغو سفارش مشتریان، واریزی‌های اشتباه یا هرگونه الزامی جهت بازگرداندن وجه به خریدار، تمام مبلغ واریز شده یا حتی بخشی از آن را به صورت آنی یا در سیکل‌های پایا، به حساب آن‌ها واریز نمایید.

# پارامترهای ورودی

در این متد، پارامترهای زیر به API ارسال می‌شود:

نام نوع اجباری شرح
session_id String بله شماره تراکنش
amount Integer بله مبلغ ریال (حداقل مبلغ قابل استرداد ۲۰۰۰۰ ریال)
description String بله توضیح علت استرداد وجه
method String بله متد استرداد وجه (CARD یا PAYA)
reason String بله دلیل استرداد (CUSTOMER_REQUEST و غیره)

# اطلاعات خروجی

در صورت موفقیت، اطلاعات زیر از API دریافت می‌شود:

نام نوع شرح
id String شماره تراکنش
terminal_id String شماره ترمینال درگاه
amount Integer مبلغ پرداخت شده به ریال
timeline Object تاریخچه تراکنش
refund_amount Integer مبلغ استرداد
refund_time String تاریخ ثبت استرداد
refund_status String وضعیت استرداد

# نمونه کد PHP

در ادامه نمونه‌ای از پیاده‌سازی متد استرداد وجه در PHP آمده است:

<?php
require_once __DIR__ . '/../vendor/autoload.php';
use ZarinPal\Sdk\Options;
use ZarinPal\Sdk\ClientBuilder;
use ZarinPal\Sdk\ZarinPal;
use ZarinPal\Sdk\Endpoint\GraphQL\RequestTypes\RefundRequest;
$clientBuilder = new ClientBuilder(30);
$options = new Options([
    'client_builder' => $clientBuilder,
    'access_token' => 'your_access_token', // Access token بدون Bearer
]);
$zarinpal = new ZarinPal($options);
$refundService = $zarinpal->refundService();
$refundRequest = new RefundRequest();
$refundRequest->sessionId = '580868147';
$refundRequest->amount = 20000; // Amount in IRR
$refundRequest->description = 'Refund for order 12345';
$refundRequest->method = 'CARD'; // Method: CARD for instant, PAYA for regular
$refundRequest->reason = 'CUSTOMER_REQUEST'; // Reason for refund
try {
    $response = $refundService->refund($refundRequest);
    echo "Refund Processed: \n";
    echo "Transaction ID: " . $response->id . "\n";
    echo "Terminal ID: " . $response->terminalId . "\n";
    echo "Refund Amount: " . $response->timeline['refund_amount'] . "\n";
    echo "Refund Time: " . $response->timeline['refund_time'] . "\n";
    echo "Refund Status: " . $response->timeline['refund_status'] . "\n";
} catch (\Exception $e) {
    echo 'Refund failed: ' . $e->getMessage();
}