#P1422
PUT /api/v2/purchase/retry/{id}
Route Info
| Method | Endpoint | Controller | Middleware | Purpose |
| PUT | /api/v2/purchase/retry/{id} | V2TradeController@purchaseWebsiteRetry | authWithJwt | بازخوانی و تلاش مجدد برای تکمیل خرید آنلاین (temporary_payment) با وضعیت ناموفق یا نیمهکامل |
منطق عملکرد
- در ابتدا رکوردی از جدول
temporary_paymentجستجو میشود که باbranchشعبهی کاربر و شناسه{id}مطابقت داشته و وضعیت آن یکی از [1, 2] باشد. - در صورت عدم یافتن رکورد مطابق شرایط، پاسخ JSON با وضعیت HTTP 409 و پیام خطا بازگردانده میشود.
- در صورت وجود، فیلد
statusرکورد مورد نظر به مقدار 1 بهروزرسانی میگردد. - سپس متد
CronController::completeOnlinePurchaseProcess($gateway_id)فراخوانی میشود تا فرآیند پرداخت ناقص تکمیل گردد. - در صورت موفقیت، پیام تأیید با HTTP 205 و ذکر رفرنس پرداخت برگردانده میشود؛ در غیر این صورت خطا با جزئیات پیام بازگردانده میشود.
پارامترهای ورودی
| نام | محل | نوع | ضروری | توضیح |
| id | Path | integer | بله | شناسهی رکورد پرداخت موقت برای بازخوانی |
| branch | Body / Header | integer | بله | شناسهی شعبه (branch_id) برای بررسی مالکیت رکورد |
PUT /api/v2/purchase/retry/74
{
"branch": 31
}
ساختار خروجی
**موفق (HTTP 205):**
{
"payload": {
"message": "رفرنس 672CHECK-9 با موفقیت ایجاد شد."
},
"meta": {"timestamp": 1732028000}
}
**خطا - رکورد یافت نشد (HTTP 409):**
{
"error": {
"code": 1000,
"message": "آیتم مورد نظر یافت نشد و یا اجازه بازخوانی ندارد"
},
"meta": {"timestamp": 1732028000}
}
**خطا - اجرای CronController ناموفق (HTTP 409):**
{
"error": {"code":1000,"message":"پرداخت قابل تکمیل نیست"},
"meta": {"timestamp": 1732028000}
}
امنیت
- احراز هویت با JWT الزامی است.
- کاربر فقط مجاز به بازخوانی تراکنشهای مربوط به شعبهی خود است.
وابستگیها
- DB::table('temporary_payment')
- CronController::completeOnlinePurchaseProcess()
- authWithJwt Middleware
کارایی
عملیات سبکتر از 10 ms (به جز فراخوان CronController که وابسته به سرویس خارجی است).
مدیریت خطا
- کد خطا 1000 برای همهی حالات بازخوانی ناموفق یا عدم وجود رکورد.
- در صورت بروز خطای دیتابیس، HTTP 409 با پیام عمومی ارسال میشود.
اثرات جانبی
- تغییر مقدار
statusرکورد در جدول temporary_payment. - احتمال اجرای مجدد فرآیند ایجاد
referenceمالی.
ردپای حسابرسی
هنگام موفقیت در ایجاد رفرنس جدید، وقایع در SystemLog و جدول عملیات خرید ذخیره میشوند (در لایه CronController).
پیشنهاد بهبود
- افزودن شناسه کاربر به کوئری برای محدودسازی دقیقتر امنیتی.
- افزودن Retry Count برای جلوگیری از حلقهی بازخوانی بیپایان.
جمعبندی
این Endpoint برای بازیابی تراکنشهای موقت و تکمیل خرید در صورت قطعی ارتباط یا بازگشت ناقص درگاه پرداخت طراحی شده است.