#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، سازوکار کاملاً قابل اعتماد برای ویرایش دادههای مالی فراهم میکند.