Sağlayıcı Düzeyinde Basamaklama
1) Basamaklı nedir ve neden iGaming'de
Sağlayıcı basamaklandırması - aynı ödeme girişimi veya genel olarak trafik dağıtımı için birkaç PSP/alıcı arasında dinamik seçim ve/veya sıralı geçiş. Hedefler:- AR↑/ DR↓: "Kaprisli" ihraççıları atlamak, belirli bir BIN/geo/yöntem için en iyi PSP'yi seçmek.
- ↓ maliyeti: Sepet kısmında IC + +/işaretleme daha düşük, mikro bilet üzerindeki düzeltmeyi en aza indirir.
- Esneklik: Olaylarda yük devretme, 3DS'nin bozulması, düşen ödeme koridorları.
- Uyum: Jeopolitiğe uyum, yaptırımlar, yerel yasaklar ve lisanslar.
2) Basamaklı desenler
1. Sıralı
PSP_A - (yumuşak düşüş/tekhnichesky reddi) - PSP_B - PSP_C.
Retrays'in'dar bir penceresi ", birden fazla fon tutmanın tekrarları/riskleri yaratmamak için kullanılır.
2. Paralel (bölünmüş trafik/çoklu kol)
Karşılaştırma, kural öğrenme ve ilişkili hata azaltma için birden fazla PSP arasında akış dağılımı (%/kural).
3. Yapışkan BIN/Yapışkan GEO
Belirli bir BIN/ihraççı/geo (TTL ile karar önbellekleri) için'en iyi "PSP'yi ezberlemek.
4. Method-aware/Özellik-aware
Kartlar, A2A, cüzdanlar, yerel yöntemler için farklı sağlayıcılar; 3DS-rails özelliklerini dikkate alarak, DCC/FX davranışı, tokenization.
5. Limit-aware/SLA-aware
Sağlayıcı limitleri, rezervler, SLA olayları, kesinti ve finansman gecikmeleri için muhasebe.
3) Kurallar-motor: girişler
Kart özellikleri: BIN/IIN, marka, banka/kredi, ticari/prim, ihraççı ülke.
Coğrafi ve uyumluluk: oyuncunun ülkesi (IP/GPS/SIM/KYC), yaptırımlar, lisanslar.
İşlem: miktar (küçük birimler), para birimi, kanal (web/uygulama), risk oranı.
Sağlayıcıların geçmişi: Son 15-60 dakika için AR/DR by BIN/geo/method, yumuşak düşüş payı, 3DS-pass-rate.
Maliyet: IC + +/işaretleme/düzeltme, FX spread, yuvarlanan rezerv %.
Kısıtlamalar: oran limiti sağlayıcısı, bakım/olaylar, günlük ciro sınırları.
Çıktı: rotaların öncelikli listesi '[(PSP, MID, require_3DS, retry_window_ms, max_attempts)]'.
4) Geri çekilmeler, idempotans ve güvenlik
Deneme başına idempotency anahtarı (user_id+order_id+nonce), kaskaddaki tüm sağlayıcılar için ortaktır.
Sadece yumuşak düşüşte (network/3DS/timeout/insufficient fonlar), asla "sert" kodlarla (çalıntı, tekrar onurlandırmayın, vb.)
Anti-duling: 'AUTHORIZED'/' CAPTURED' durumu kademeli olarak kapanır; Diğer tüm şubeler iptal edildi.
Windows: 1. geri ödeme ≤ 2-5 saniye, toplam bütçe ≤ 15-30 saniye, UX dahil.
3DS politikası: Birincisi 3DS olmadan düşerse, ikinci/üçüncü şubede olası adım atma.
5) 3DS, sorumluluk değişimi и AR
'Önceliksiz'/' meydan okuma' seçimi riske ve PSP desteğine (delegated auth, TRA, whitelisting) bağlıdır.
"Zor" coğrafi/ihraççılar - sepetin bir parçası üzerinde 3DS zorladı.
Sağlayıcıların sorumluluk değişimini takip edin: daha sık elde edildiği yerlerde - riskli BIN'leri oraya aktarın.
6) Maliyet: IC++, harmanlanmış, düzeltme ve FX
Her PSP için, etkili take-rate = değişim + şema + işaretleme + sabit + FX kaymasını göz önünde bulundurun.
Kaskadda, rotayı puanlarken fiyat işlevini kullanın:- 'Puan = w1AR_live + w2 (−Cost_bps) + w3 (SLA_health) + w4 (FX_quality) +..'
- Mikro bilet: Düzeltmenin ağırlığı daha yüksektir - düşük düzeltmeli sağlayıcılar tercih edilir.
- Ayrı olarak, rezerv % ve fon T + N düşünün - önbellek akışını etkiler.
7) Olaylar, kesme ve yönlendirme
Sağlık beslemesi: PSP/koridor durumları (auth API, 3DS ACS, ödeme rayları).
Otomatik yük devretme: AR/sağlık eşiğin altına düştüğünde anında yeniden yönlendirme.
Cut-off-aware: Bir anlaşmayı kapatmadan önce, garip bir T + N ile bir PSP'de kısmi yakalama yapmaktan kaçının.
Kısma: sağlayıcının limitini "yakmamak" için, trafik gönderin.
8) Minimal veri modeli
sql
-- Providers and MIDs
CREATE TABLE ref. providers (
provider TEXT PRIMARY KEY, model TEXT, pricing_model TEXT, fx_policy TEXT, reserve_pct NUMERIC, meta JSONB
);
CREATE TABLE ref. mids (
mid TEXT PRIMARY KEY, provider TEXT REFERENCES ref. providers, country TEXT, method TEXT, descriptor TEXT, meta JSONB
);
-- Cascade Rules/Profiles
CREATE TABLE ref. cascade_profiles (
profile_id BIGSERIAL PRIMARY KEY, name TEXT, version TEXT, enabled BOOLEAN, meta JSONB
);
CREATE TABLE ref. cascade_rules (
rule_id BIGSERIAL PRIMARY KEY, profile_id BIGINT REFERENCES ref. cascade_profiles,
geo TEXT, bin_from TEXT, bin_to TEXT, method TEXT,
provider TEXT, mid TEXT, require_3ds BOOLEAN, priority INT,
retry_on_soft JSONB, max_attempts INT, ttl_seconds INT, enabled BOOLEAN, meta JSONB
);
-- Online Provider Performance Metrics (Sliding Window)
CREATE TABLE live. provider_stats_15m (
provider TEXT, method TEXT, geo TEXT, bin6 TEXT,
approvals INT, declines INT, soft_declines INT, three_ds_pass INT,
avg_latency_ms INT, updated_at TIMESTAMP
);
-- Transactions with idempotency and selected route
CREATE TABLE payments. auth_attempts (
attempt_id BIGSERIAL PRIMARY KEY, idempotency_key TEXT, step INT,
provider TEXT, mid TEXT, require_3ds BOOLEAN, status TEXT, decline_code TEXT,
amount_minor BIGINT, currency TEXT, bin TEXT, geo TEXT,
started_at TIMESTAMP, finished_at TIMESTAMP, meta JSONB
);
9) SQL analiz şablonları
9. 1. Çevrimiçi sağlayıcı değerlendirmesi (AR ve yumuşak düşüş payı)
sql
SELECT provider, method, geo,
SUM(approvals) AS appr,
SUM(declines) AS decl,
ROUND(100. 0 SUM(approvals) / NULLIF(SUM(approvals+declines),0), 2) AS ar_pct,
ROUND(100. 0 SUM(soft_declines) / NULLIF(SUM(declines),0), 2) AS soft_share_pct
FROM live. provider_stats_15m
WHERE updated_at > now() - INTERVAL '20 minutes'
GROUP BY 1,2,3
ORDER BY ar_pct DESC, soft_share_pct DESC;
9. 2. Siparişlerde basamaklı etki (adım dönüştürme)
sql
WITH s AS (
SELECT idempotency_key,
MAX(step) AS steps,
BOOL_OR(status='APPROVED') AS approved
FROM payments. auth_attempts
WHERE started_at BETWEEN:from AND:to
GROUP BY 1
)
SELECT steps,
COUNT() AS orders,
100. 0 SUM(approved::int) / NULLIF(COUNT(),0) AS conv_pct
FROM s
GROUP BY 1
ORDER BY 1;
9. 3. Yapışkan BIN: en iyi BIN6 sağlayıcı
sql
SELECT bin6,
provider,
ROUND(100. 0 SUM(approved)::NUMERIC / NULLIF(COUNT(),0), 2) AS ar_pct
FROM (
SELECT LEFT(bin,6) AS bin6, provider, (status='APPROVED') AS approved
FROM payments. auth_attempts
WHERE started_at BETWEEN:from AND:to
) t
GROUP BY 1,2
QUALIFY ROW_NUMBER() OVER (PARTITION BY bin6 ORDER BY ar_pct DESC) = 1;
9. 4. All-in take-rate
sql
SELECT provider,
SUM(amount_reporting) AS volume_rep,
SUM(interchange_amt + scheme_amt + markup_amt + auth_amt + refund_amt + cb_amt + gateway_amt + fx_spread_amt) AS fees_rep,
100. 0 SUM(interchange_amt + scheme_amt + markup_amt + auth_amt + refund_amt + cb_amt + gateway_amt + fx_spread_amt)
/ NULLIF(SUM(amount_reporting),0) AS take_rate_pct
FROM finance. settlement_fees
JOIN dw. transactions_flat USING (provider)
WHERE period_start_at >=:from AND period_end_at <:to
GROUP BY 1
ORDER BY take_rate_pct;
10) KPI'lar ve gösterge panoları
Sağlayıcıya göre AR/DR ve BIN/geo/method (çevrimiçi pencereler 15/60 dakika ve günlük).
Adım dönüştürme: 1., 2., 3. şubedeki onayların paylaşımı.
Take-Rate % ve sağlayıcı/MID tarafından FX kayması.
3DS geçiş oranı ve sorumluluk değişim payı.
Sağlık/SLA: gecikme, zaman aşımları, hata oranı, olaylar.
Rezerv ve Finansman: Sağlayıcı tarafından rezerv % ve T + N hit-rate.
11) Uyarılar ve eşikler
Yönlendirme Bozulması: Seçilen sağlayıcıda AR düşüşü> 10-30 dakika içinde Y bps.
Yumuşak düşüş dalgalanması: Yumuşak düşüşün payında bir artış - kaskadın ek bir dalına izin verir.
3DS Anomalisi: Belirli ihraççı/BIN kümesinde 3DS geçiş hızı düşüşü> % X.
Take-Rate Spike: all-in maliyet artışı> bps eşiği.
Health Down: SLA ihlali (gecikme/hata) - авто - failover.
Policy Drift - idempotency_key/bez basamaklı profili olmayan girişimler - P1.
12) AB testleri ve kural eğitimi
Çok kollu haydut veya yeni rotalara sabit bölünmüş trafik.
Explore/Exploit: Yapışkan BIN'i "öğrenmek" için trafiğin bir kısmını saklayın.
Değerlendirme ufukları: Olaylar için çevrimiçi (15/60 dakika) ve maliyet için hafta/ay.
Korkuluklar: Deneyi durdurmak için minimum AR/max alma oranı.
13) Uyum ve "aşırı" durumlar
Yaptırımlara/lisanslara/coğrafi kilitlere saygı gösterin: Bazı sağlayıcılar tek tek ülkelere/yöntemlere hizmet veremez.
Same-method/Return-to-source: Basamaklama, iade politikasını bozmamalıdır.
Tokenization/PCI: PSP'ler arasında tek bir belirteç şeması (ağ belirteçleri/kasa).
Ters ibrazlar: Hangi dalın ele geçirildiğini kaydedin - anlaşmazlıklar için.
14) En iyi uygulamalar (kısa)
1. Tek bir idempotency_key ile sadece yumuşak düşüşü geri çekin.
2. Canlı telemetri AR/3DS/soft-decline ve sağlık sağlayıcıları tutun.
3. Rota fiyatlandırma fonksiyonunu oluşturun (AR vs Cost vs SLA vs FX).
4. Yapışkan BIN ve AB testleri kullanın; Basamaklı profilleri sürüm oluşturma.
5. Cut-off-aware olun: Günün sonunda kısmi yakalama üretmeyin.
6. Oyun kitaplarının yük devretmesini sağlayın: PSP/ACS/ödeme koridoru düşüşü.
7. Ayrı veri ve sorumluluk: PAN'ı kimin elinde tuttuğu, anlaşmazlıkları kimin yönettiği.
8. Sağlayıcıya göre rezerv defteri tutun: bültenler ve yazılar.
15) Uygulama kontrol listesi
- Sağlayıcı Kartı/MID, Fiyatlandırma (IC + +/harmanlanmış), FX Politikaları, Rezervler, T + N.
- Kurallar-motoru: profiller, kurallar, yazılım kodları, 3DS politikası, limitler.
- Yönlendirici: idempotency, retrays, zaman aşımları, yapışkan BIN önbellek.
- Telemetri: canlı AR/DR/3DS/latency/health metrikleri; Uyarılar.
- Olay yönetimi ve yük devretme oyun kitapları.
- Ücretler/FX/rezerv için ETL; take-rate ve step-conversion vitrinleri.
- AB test prosedürleri ve korkuluklar.
- Belgeler: uyumluluk kısıtlamaları, aynı yöntem iadeleri, sorumluluk.
Özet
Sağlayıcı düzeyinde basamaklama "başka bir PSP deneyin'değil, bir disiplindir: canlı metrikler, akıllı kurallar-motor, sıkı idempotence, doğru 3DS taktikleri, rezervlerin maliyet/FX/ve hazır yük devretme senaryoları için muhasebe. Bu mimari AR'yi artırır, hepsi bir arada alım hızını azaltır ve ödeme döngüsünü çökmelere ve düzenleyici kısıtlamalara karşı dayanıklı hale getirir.