Skip to main content
#P1492

POST /pay/update

Route Info

Method Endpoint Controller Middleware Purpose
POST /api/v2/pay/update V2CreditDebitController@updatePay authWithJwt بروزرسانی اطلاعات تراکنش پرداخت ثبت‌شده (Pay) شامل نوع، مبلغ، تاریخ و وضعیت تراکنش.

منطق عملکرد تابع

تابع updatePay برای اصلاح رکوردهای موجود در جدول pays طراحی شده است. ابتدا داده‌های ارسالی از درخواست ($request->json) به‌صورت آرایه دیکد شده و صحت کلیدهای الزامی مانند id بررسی می‌شود. سپس با استفاده از DB::table('pays')->where('id', ...)->update([...]) مقداردهی مجدد فیلدهای تراکنش انجام می‌گیرد. پس از اتمام عملیات، کش Redis برای مرجع مربوطه (reference:<id>:information) با داده‌های جدید بازسازی می‌شود.

ورودی‌ها

نام پارامتر نوع منبع الزامی توضیح
json string (JSON) Body بله حاوی داده‌های تراکنش اصلاح‌شده.
id integer Body→JSON بله شناسه تراکنش در جدول pays که باید بروزرسانی شود.
type string Body→JSON بله نوع تراکنش (payment یا receive).
currency_amount string Body→JSON بله مبلغ جدید تراکنش.
wage string Body→JSON خیر کارمزد اصلاح‌شده تراکنش.
status.id integer Body→JSON خیر شناسه وضعیت جدید تراکنش.
deadline string (YYYY/MM/DD) Body→JSON خیر تاریخ جدید مهلت پرداخت.
description string Body→JSON خیر توضیحات تراکنش.

خروجی (Response)

{
  "status": true,
  "updated_id": 1091,
  "meta": {
    "timestamp": 1732287600
  },
  "cache_updated": true
}

نکات امنیتی

  • احراز هویت کاربران از طریق JWT انجام می‌شود.
  • بروزرسانی فقط در محدوده همان شعبه کاربر امکان‌پذیر است.
  • قبل از هر عملیات به‌روزرسانی، شناسه تراکنش با branch مرتبط بررسی می‌شود تا از Cross-Branch Injection جلوگیری گردد.

نکات عملکردی

  • در صورت وجود تراکنش‌های سنگین، استفاده از updateBatch() پیشنهاد می‌شود.
  • بروزرسانی کش Redis به‌صورت asynchronous برای پاسخ سریع‌تر انجام شود.
  • توصیه به ذخیره تغییرات در جدول audit_logs با سطح Critical.

وابستگی‌ها

  • use Illuminate\Support\Facades\DB;
  • use Illuminate\Support\Facades\Redis;
  • use Carbon\Carbon;
  • use App\Http\Controllers\TradeController;
  • use App\Http\Controllers\StaticController;

کدهای خطا

کد شرح خطا منبع
400 ورودی JSON ناقص یا فرمت نامعتبر. json_decode()
404 تراکنش با شناسه داده‌شده یافت نشد. DB Query
500 خطای سیستم در بروزرسانی یا بازسازی کش Redis. DB/Redis

پیشنهادهای امنیتی

  • افزودن محدودیت نرخ بروزرسانی برای جلوگیری از حملات DDoS مالی.
  • ثبت هش جدید در فیلد hash_signature برای تشخیص تغییرات بحرانی.
  • اعمال RBAC بر اساس سطح دسترسی "financial.moderator".

پیشنهادهای بهبود

  • افزودن پشتیبانی از بروزرسانی گروهی چند تراکنش همزمان.
  • در پاسخ خروجی نمایش جزئیات قبل و بعد از تغییر (diff snapshot).
  • ثبت تاریخچه همه تغییرات در جدول کمکی pays_history.

ممیزی و لاگ‌ها

  • نوع لاگ: UpdatePayTransaction.
  • فیلدهای ثبت: operator_id, branch, pay_id, old_data, new_data.
  • سطح لاگ: Critical.
  • مدت نگهداری ممیزی: ۱۸۰ روز.

جمع‌بندی

این مسیر برای بروزرسانی امن و سریع تراکنش‌های پرداخت طراحی شده است. با احراز JWT، کنترل نقش، و همگام‌سازی کش Redis، سازوکار کاملاً قابل اعتماد برای ویرایش داده‌های مالی فراهم می‌کند.