Paket Ödemeleri — 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.

İstek

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 }
  ]
}
  • Scope: 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.
  • Boş payments: []paid: 0 (ödemeleri sıfırlar).

Ödeme yöntemi doğrulaması (ÖNEMLİ)

Ö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ırKural
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.
Geri uyumluluk: gerçek yöntem id'leri kullanan eklentiler etkilenmez; keyfi/uydurma id gönderenler artık unknown_payment_method alır.

Yanıt

{ "success": true, "data": { "packetId": "a72d70cd-...", "paid": 240 } }

Kurallar & hatalar

Hepsi HTTP 200 + { success:false, message } (rate limit 429 hariç). Gerçek mesajlar:

Kuralmessage (teyitli)
Normal satırın id'si tenant'ın yöntemi değilunknown_payment_method (400)
Tenant'ta hiç ödeme yöntemi tanımlı değilno_payment_methods_configured (400)
Yeni paid paketin total'ını aşıyorPaid (999) exceeds total (51.9).
Paket bulunamadıPacket not found
orders:write onaylı değilplugin.scope.denied
Eşzamanlılık: aynı paket için update-orders ile EŞ ZAMANLI çağırmapaid ≤ total invariantı geçici bozulabilir. Sıralı çağır. Nihai finansal güvence kapanışta (paid == total).