Credit transfer — mobil entegrasyon
Kredi transferi mobil istemci akışı
Mobil Entegrasyon Rehberi: Kredi Transfer Mesaj Sistemi
Migration rehberi
Yapılandırma sırası için Migration şablonu. Yeni düzenlemelerde Amaç → Önkoşullar → Endpoint → Request/Response → Hata kodları → Client adımları → İlgili sayfalar bölümlerini tercih edin.
Bu döküman, yeni kredi transfer mesaj sisteminin ve socket bildirimlerinin mobil tarafta entegrasyonu için gereken değişiklikleri özetlemektedir.
1. Kredi Transferi Gerçekleştirme (API)
Kullanıcılar arasında kredi transferi yapmak için aşağıdaki endpoint kullanılır. Bu işlem başarılı olduğunda, sistem otomatik olarak bir credit_transfer mesajı oluşturur ve alıcıya socket üzerinden bildirim gönderir.
POST /messages/credit-transfer
İstek Gövdesi (Request Body):
{
"recipientId": "alıcı_kullanıcı_id",
"amount": 25
}Başarılı Yanıt (Success Response):
{
"senderId": "gönderen_id",
"recipientId": "alıcı_id",
"transferredAmount": 25,
"senderBalance": 175,
"recipientBalance": 50
}2. Socket Bildirimleri (Real-time)
/chat namespace'i kullanıcıya özel bildirimleri destekleyecek şekilde güncellendi.
Bağlantı
Mobil uygulama /chat namespace'ine bağlı olmalıdır.
Kanal Aboneliği
joinChat eventi ile bir odaya katıldığınızda, sunucu sizi otomatik olarak kişisel bildirim odanıza da (user:${userId}) dahil eder. Mevcut joinChat kullanımınızda bir değişiklik yapmanıza gerek yoktur.
Yeni Event: creditTransferReceived
Alıcı tarafında anlık "Kredi Alındı" bildirimi veya uyarısı göstermek için bu eventi dinlemelisiniz.
socket.on('creditTransferReceived', (message) => {
// message: MessageResponseDto tipindedir
const { amount, senderId } = message.creditTransfer;
console.log(`${senderId} kullanıcısından ${amount} kredi aldınız.`);
// UI Bildirimi/Alert uygulayın
});3. Mesaj Tipleri ve Chat Ekranı
Yeni bir mesaj tipi olan credit_transfer eklendi.
Mesaj Nesnesi Yapısı
GET /messages/chat/:chatId ile geçmişi çekerken veya socket üzerinden newMessage alırken type alanını kontrol edin.
{
"_id": "mesaj_id",
"chatId": "chat_id",
"senderId": "gönderen_id",
"type": "credit_transfer",
"content": null,
"creditTransfer": {
"amount": 25,
"recipientId": "alıcı_id",
"senderId": "gönderen_id"
},
"createdAt": "2024-02-04T11:00:00Z"
}UI Render Önerileri
type === 'credit_transfer' olan mesajlar için:
- Gönderen (Siz): "[amount] kredi gönderdiniz."
- Alıcı: "[Kullanıcı Adı] size [amount] kredi gönderdi."
- Bu mesajlar için standart metin balonu yerine, chat listesinde özel bir "Sistem/İşlem" kartı (örneğin ortalanmış, gri bir kutucuk içinde) kullanılması önerilir.
contentalanı bu tip mesajlardanulldönecektir.