☰ Menü · Idempotency
Başlarken

Idempotency

Ağ bağlantısı isteğin ortasında kopabilir. Her yazma isteği güvenle tekrarlanabilir, böylece misafir tek bir fiş için iki kez cashback almaz.

Fişler ve ziyaretler: external_id

POST /v1/transactions ve POST /v1/visits için external_id zorunludur: fişin veya ziyaretin sizin sisteminizdeki numarası. Her external_id bir işletmede yalnızca bir kez uygulanır. Aynı değeri tekrar gönderirseniz 201 yerine 200 ile kayıtlı sonuç döner ve kartta hiçbir şey değişmez. Bu kural bir günle sınırlı değildir, süresizdir. Kasa çevrimdışı kaldıktan sonra tüm vardiyayı yeniden göndermek güvenlidir.

Diğer yazma isteklerinde (üye kaydı, ödül verme, ürün oluşturma) benzersiz bir değerle Idempotency-Key başlığı gönderin, örneğin ilk denemeden önce ürettiğiniz bir UUID. Yanıtı 24 saat saklarız. Aynı anahtar ve aynı gövdeyle yapılan tekrar, bu yanıtı Idempotent-Replayed: true başlığıyla döndürür. Aynı anahtar farklı bir gövdeyle gelirse 409 idempotency_key_reused ile reddedilir.

curl
curl https://loyaltyfy.io/api/v1/members \
  -H "Authorization: Bearer sk_test_..." \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 3f6d1c0a-9b0e-4d2b-8e57-enrol-77" \
  -d '{ "phone": "+37366791102", "first_name": "Ion", "consent": true }'

# repeat the same call: same body, same status, plus the header
# Idempotent-Replayed: true

Nasıl tekrar denenir

  • Ağ hatalarında, zaman aşımlarında ve 429, 500, 502, 503 yanıtlarında tekrar deneyin. Diğer 4xx yanıtlarında tekrar denemeyin, sonuç değişmez.
  • Her denemeden önce bekleyin ve bekleme süresini her seferinde artırın, örneğin 1, 2, 4, 8 saniye.
  • Aynı işlemin tüm denemelerinde aynı external_id veya Idempotency-Key değerini kullanın. Yeni bir değer yeni bir işlem demektir.
Entegrasyonla ilgili sorularınız için: api@loyaltyfy.io. Bir iş günü içinde yanıt veriyoruz.