# ریورس تراکنش

متد ریورس تراکنش به شما امکان می‌دهد تا تراکنش‌های موفقی که از زمان پرداخت آن‌ها حداکثر ۳۰ دقیقه گذشته است را بدون کارمزد به حساب خریدار استرداد کنید.

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

# نکات مهم:

  • برای استفاده از این سرویس، باید حتماً آی‌پی سرور شما برای درگاه تنظیم شده باشد. در غیر این صورت با خطای 62- مواجه خواهید شد.

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

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

نام نوع اجباری شرح
merchant_id String بله کد ۳۶ کاراکتری اختصاصی پذیرنده
authority String بله آتوریتی تراکنش مورد نظر برای ریورس کردن

# نمونه کد PHP

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

<?php
require_once __DIR__ . '/../vendor/autoload.php';
use ZarinPal\Sdk\Options;
use ZarinPal\Sdk\ZarinPal;
use ZarinPal\Sdk\Endpoint\PaymentGateway\RequestTypes\ReverseRequest;
use ZarinPal\Sdk\HttpClient\Exception\ResponseException;
$options = new Options([
    'merchant_id' => '67887a6d-e2f8-4de2-86b1-8db27bc171b5',
]);
$zarinpal = new ZarinPal($options);
$paymentGateway = $zarinpal->paymentGateway();
$reverseRequest = new ReverseRequest();
$reverseRequest->authority = 'A000000000000000000000000000opo6w6y8'; // Authority from the original transaction
try {
    $response = $paymentGateway->reverse($reverseRequest);
    echo "Transaction Reversed: " . $response->code . "\n";
    echo "Transaction Reversed: " . $response->message . "\n";
 } catch (ResponseException $e) {
    echo 'Transaction reversal failed due to API error: ' . $e->getMessage() . "\n";
    if ($e->getErrorDetails()) {
        echo 'Error Details: ' . json_encode($e->getErrorDetails()) . "\n";
    }
} catch (\Exception $e) {
    echo 'Transaction reversal failed: ' . $e->getMessage() . "\n";
}