POST /plugin-api/packets/update-payments ✓ CanlıBir paketin TÜM ödemelerini değiştirir — FULL REPLACE. paid yeniden hesaplanır (yalnız price>0 satırlar). Transaction'lı. Hiçbir uç paketi KAPATMAZ; paid==total olsa bile finansal kapanış işletme akışındadır.
← API Uçları · Yazma ailesi: create · update · update-orders.
POST {RESTOMENUM_BASE}/plugin-api/packets/update-payments
Authorization: Bearer <apiKey>
{
"packetId": "a72d70cd-...", // ZORUNLU
"payments": [ // ZORUNLU — paketin YENİ ödeme listesi (FULL REPLACE)
{ "price": 240, "id": "cash", "title": "Nakit", "isDiscount": false }
]
}orders:write.payments paketin tüm ödemelerini değiştirir. Satır: { price, id, title, isDiscount? }.paid yeniden hesaplanır — yalnız price > 0 satırlar saklanır.payments: [] → paid: 0 (ödemeleri sıfırlar).Ödeme satırları tenant'ın gerçek ödeme yöntemlerine karşı doğrulanır ("ID al, sunucuda türet"). Önce payment-methods/list çağır (payment_methods:read), geçerli id'leri oradan al.
| Satır | Kural |
|---|---|
Normal (isDiscount yok/false) | id tenant'ın tanımlı bir yöntemi OLMALI. title yok sayılır (yöntem kaydından türetilir; göndermek hata değil). Yöntemin cash/noreport alanları kayda işlenir. |
İndirim (isDiscount:true) | Doğrulamadan muaf — markalı platform-indirimi (serbest id, ör. "getir-ind"). title bu satırlarda zorunlu; raporda doğru sınıflanır. |
unknown_payment_method alır.{ "success": true, "data": { "packetId": "a72d70cd-...", "paid": 240 } }Hepsi HTTP 200 + { success:false, message } (rate limit 429 hariç). Gerçek mesajlar:
| Kural | message (teyitli) |
|---|---|
Normal satırın id'si tenant'ın yöntemi değil | unknown_payment_method (400) |
| Tenant'ta hiç ödeme yöntemi tanımlı değil | no_payment_methods_configured (400) |
Yeni paid paketin total'ını aşıyor | Paid (999) exceeds total (51.9). |
| Paket bulunamadı | Packet not found |
orders:write onaylı değil | plugin.scope.denied |
paid ≤ total invariantı geçici bozulabilir. Sıralı çağır. Nihai finansal güvence kapanışta (paid == total).