متد استرداد وجه به شما این امکان را میدهد که در صورت تغییر یا لغو سفارش مشتریان، واریزیهای اشتباه یا هرگونه الزامی جهت بازگرداندن وجه به خریدار، تمام مبلغ واریز شده یا حتی بخشی از آن را به صورت آنی یا در سیکلهای پایا، به حساب آنها واریز نمایید.
در این متد، پارامترهای زیر به 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
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();
}