مدیریت وریفای و تسویه (تابآوری و رفع مغایرت)
در فرآیندهای مالی اینترنتی، ممکن است به دلیل کندی شبکه، تایماوت شدن درخواستها یا نوسانات ارتباطی، پاسخ سرویس Verify یا Settle به درستی دریافت نشود.
اسنپپی در بندهای ۱۱ و ۱۲ مستندات فنی، یک فرآیند الزامی برای رسیدگی به این شرایط مشخص کرده است که این پکیج آن را به صورت توکار و خودکار پیاده کرده است.
بند ۱۱ مستندات: مدیریت تایماوت درخواست Verify
اگر درخواست POST /api/online/payment/v1/verify طی ۳۰ ثانیه پاسخی دریافت نکرد:
- سرویس
GET /api/online/payment/v1/statusفراخوانی میشود تا وضعیت واقعی سفارش استعلام گرفته شود. - چنانچه وضعیت
VERIFYبود، پرداخت موفق لحاظ شده و فرآیند تسویه ادامه مییابد. - چنانچه وضعیت
PENDINGبود، درخواست وریفای مجدداً تکرار (Retry) میشود. - در غیر این صورت، سفارش لغو تلقی میگردد.
php
use Eamirgh\SnappPay\Facades\SnappPay;
// اجرای الگوریتم بند ۱۱ به صورت خودکار
$result = SnappPay::verifyWithResilience($paymentToken);بند ۱۲ مستندات: مدیریت شکست درخواست Settle
اگر درخواست POST /api/online/payment/v1/settle پاسخی نداد یا پاسخ ناموفق بود:
- سرویس
GET /api/online/payment/v1/statusفراخوانی میشود. - چنانچه وضعیت
SETTLEبود، سفارش نهایی تلقی میشود. - چنانچه وضعیت
VERIFYبود، مجدداً درخواست تسویه تکرار میگردد.
php
use Eamirgh\SnappPay\Facades\SnappPay;
// اجرای الگوریتم بند ۱۲ به صورت خودکار
$result = SnappPay::settleWithResilience($paymentToken);راهکار تکخطی: verifyAndSettle()
برای جلوگیری از هرگونه مغایرت مالی و آسودگی خیال، کافی است در کنترلر کالبک خود متد زیر را صدا بزنید:
php
use Eamirgh\SnappPay\Facades\SnappPay;
// هر دو عملیات تایید و تسویه با تابآوری کامل و بررسی وضعیت اجرا میشوند
$result = SnappPay::verifyAndSettle($order->snapppay_token);