Skip to content

مدیریت وریفای و تسویه (تاب‌آوری و رفع مغایرت) ​

در فرآیندهای مالی اینترنتی، ممکن است به دلیل کندی شبکه، تایم‌اوت شدن درخواست‌ها یا نوسانات ارتباطی، پاسخ سرویس Verify یا Settle به درستی دریافت نشود.

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


بند ۱۱ مستندات: مدیریت تایم‌اوت درخواست Verify ​

اگر درخواست POST /api/online/payment/v1/verify طی ۳۰ ثانیه پاسخی دریافت نکرد:

  1. سرویس GET /api/online/payment/v1/status فراخوانی می‌شود تا وضعیت واقعی سفارش استعلام گرفته شود.
  2. چنانچه وضعیت VERIFY بود، پرداخت موفق لحاظ شده و فرآیند تسویه ادامه می‌یابد.
  3. چنانچه وضعیت PENDING بود، درخواست وریفای مجدداً تکرار (Retry) می‌شود.
  4. در غیر این صورت، سفارش لغو تلقی می‌گردد.
php
use Eamirgh\SnappPay\Facades\SnappPay;

// اجرای الگوریتم بند ۱۱ به صورت خودکار
$result = SnappPay::verifyWithResilience($paymentToken);

بند ۱۲ مستندات: مدیریت شکست درخواست Settle ​

اگر درخواست POST /api/online/payment/v1/settle پاسخی نداد یا پاسخ ناموفق بود:

  1. سرویس GET /api/online/payment/v1/status فراخوانی می‌شود.
  2. چنانچه وضعیت SETTLE بود، سفارش نهایی تلقی می‌شود.
  3. چنانچه وضعیت VERIFY بود، مجدداً درخواست تسویه تکرار می‌گردد.
php
use Eamirgh\SnappPay\Facades\SnappPay;

// اجرای الگوریتم بند ۱۲ به صورت خودکار
$result = SnappPay::settleWithResilience($paymentToken);

راهکار تک‌خطی: verifyAndSettle() ​

برای جلوگیری از هرگونه مغایرت مالی و آسودگی خیال، کافی است در کنترلر کالبک خود متد زیر را صدا بزنید:

php
use Eamirgh\SnappPay\Facades\SnappPay;

// هر دو عملیات تایید و تسویه با تاب‌آوری کامل و بررسی وضعیت اجرا می‌شوند
$result = SnappPay::verifyAndSettle($order->snapppay_token);

منتشر شده تحت مجوز MIT.