지불의 반복 및 보상
지불의 반복 및 보상
1) 재생이 필요한 이유
변환: 소프트 오류 (타임 아웃, 3DS 오류, 네트워크 오류) 는 종종 반복적으로 복구됩니다: + 2-7 pp to Auth Rate.
견고성: 현지 PSP/ACS/은행 고장은 대체 경로가있는 retras에 의해 완화됩니다.
플레이어 경험: 올바르게 구축 된 리플레이는 이중 충전없이 인프라의 "노이즈" 를 숨 깁니다.
2) 기본 원칙
1. "지불 의도" (PI) 수준의 이념성: 하나의 작업 = 하나의 'idempotency _ key'; 모든 상환은 화폐 조건을 변경하지 않습니다.
2. 오류 분리:- 하드 쇠퇴 (예: 엄격한 발행자 정책 인 '불충분 한 자금' 으로 '명예하지 마십시오') → 일반적으로 즉시 재발행하지 않습니다.
- 소프트 거부/기술 (타임 아웃, '사용할 수 없음', '다시 시도') → 재 트레이를 허용했습니다.
- 3. Backoff + 한계 시도: 지연을 기하 급수적으로 증가시키고 지터를 추가하며 한계를 초과하지 않습니다 (일반적으로 2-3 시도).
- 4. 번들 라우팅: 리트레이는 "동일한 PSP의 반복" 일뿐만 아니라 PSP/MID/3DS 모드/방법의 변경이기도합니다.
- 5. 관찰 가능성: 각 홉은 Route Journal (PSP, 이유, 대기 시간, 3DS 모드, 수수료, 결과) 에 기록됩니다.
3) 퇴각 결정을위한 오류 분류
4) 백오프 전략 (실습)
4. 1 지터가있는 지수 백오프 (권장)
지연 _ n = 분 (베이스 2 ² n, max _ 지연) '
Jitter: 'delay = rand (0, delay _ n)' -많은 요청이 동시에 반복 될 때 스탬프를 줄입니다.
일반적인 매개 변수는 'base = 200-500 ms', 'max _ delay = 5-10 s', 'n
4. 2 선형 백오프
네트워크에서 "불안" 으로 간단하지만 더 나쁩니다. 지수 + 지터에 열등합니다.
4. 3 시간 초과 정책
클라이언트 타임 아웃 (귀하의), PSP SLA (예: 3-5 초), 그렇지 않으면 중복/동결의 위험이 증가합니다.
웹 후크/확인 대기 시간을 별도로 설정합니다. 확인이 오지 않으면 → 보상 조정 (원장/PSP).
5) 이념과 테이크에 대한 보호
결제 의도 (PI) 는 상태, 양, 방법, 'dedempotency _ key', 경로 내역을 저장합니다.
각 홉 및 재 시도는 동일한 키를 사용합니다.
트랜잭션 보상: 동기화되지 않은 경우 (PSP에서 승인하면 타임 아웃이 있음) - "조정 풀" + 원장 조정.
웹 후크를 다시 전달할 때 @ info: whatsthis
6) 3DS/SCA 및 반복
마찰없는 → 도전 후 소프트 감소.
ACS 타임 아웃/사용할 수 없음 → 지수 백오프, 대체 채널 (오픈 뱅킹/APM) 또는 다른 PSP.
ACS의 질량 저하-회로 차단기, 성장 '챌린지 속도', 금액에 대한 시간 제한.
7) APM/오픈 뱅킹 담당자
오픈 뱅킹/인스턴트 레일 (SEPA Instant/FPS/Pix/UPI):- 배상은 제한되어 있습니다: 공급자 측의 demmpotence와 지연된 웹 후크 'ax의 상태를 확인하십시오.
- 무기한 상태-백오프 및 엄격한 조정으로 폴링.
- 바우처/현금: 배상은 "온라인 거래" 에 대해서는 적용되지 않지만 마감일 제어 및 "상태 새로 고침" 이 적용됩니다.
8) 지불: 재생 및 대기열
KYT/속도 실패 → retrayem, 수동 검사로 전송
은행/PSP 기술 실패 → 백오프 드레인이있는 대기 지불.
큐 우선 순위: VIP/소량/신청 연령; SLA 및 자동 에스컬레이션 마감일.
두 번째 철회 단계에서 대체 레일 (RTP/FPS/SEPA Instant/Pix).
9) 회로 차단기 및 retrai
로컬 (PSP/MID/BIN): 오류가 급증하면이 경로에서 배상을 중지하고 대체 경로로 전환하십시오.
글로벌 (메소드/영역별): 시스템 저하 → 메소드를 비활성화하면 APM/오픈 뱅킹이 제공됩니다.
하프 오픈: 트래픽의 일부 (1-5%) 를 반환하여 전체 반품 전에 복구를 확인하십시오.
10) 재방송 전략의 의사 코드
python def pay_with_retries(pi):
ensure_idempotency(pi.key)
if not compliance_pass(pi): return REJECT
routes = rank_candidates(pi) # по вероятности approve, fee, health attempts = 0 for route in routes:
policy3ds = select_3ds(pi, route)
res = call_psp(route, pi, policy3ds, pi.key, timeout=3.0)
log_attempt(pi, route, res)
if res.approved: return APPROVED
if is_soft_decline(res) or is_transient_error(res):
while attempts < MAX_ATTEMPTS and not breaker_open(route):
delay = backoff_with_jitter(base=0.3, attempt=attempts, cap=8.0)
sleep(delay)
policy3ds = maybe_toggle_3ds(policy3ds, res)
res = call_psp(route, pi, policy3ds, pi.key, timeout=3.0)
log_attempt(pi, route, res)
attempts += 1 if res.approved: return APPROVED if is_hard_decline(res): break перейти к следующему маршруту (PSP-B/APM/open banking)
return DECLINED
11) KPI 및 대상
재 시도의 증분 승인: + 2-7 pp ~ 기본 변환.
승인 된 Tx 당 Avg 재시도 시도: 1. 2–1. 5 (1 미만을 유지하십시오. 7).
성공률 재시도 (소프트/테크): 25-40% 이상
중복 속도: 정확한 demempotency를 가진 0.
P95 Latency (배상 포함): 최종 응답까지 <7 초
지불 SLA (즉시 공유): 쉬운 점검의 70% 이상, 연체 된 <대상 임계 값.
12) 사건 플레이 북
PSP-A의 A. 대량 타임 아웃
1. PSP-A.를위한 로컬 차단기를 엽니 다
2. 재배치는 PSP-B/APM으로 재배치됩니다.
3. 지터와의 지수 백오프, 2-3 시도 제한.
4. 카나리아는 10-15 분 후에 반쯤 열립니다.
ACS/3DS의 B. 분해
1. 성장 '소프트 쇠퇴', 타임 아웃에 의한 탐지.
2. 챌린지 속도 증가; 트래픽의 일부 → 오픈 뱅킹.
3. 무거운 점검을 따로 설정하고 속도 제한을 켜십시오.
C. 지불 지연
1. VIP/소량의 우선 순위 지정 대기열로 전송하십시오.
2. 대체 레일 배치 (RTP/FPS/SEPA Instant/Pix).
3. 플레이어와의 커뮤니케이션 + 자동 에스컬레이션.
13) 관찰 및 데이터
Route Journal: PSP/MID, BIN/issuer, 이유, 대기 시간, 3DS-ре
대시 보드: 청구 률 (은행 별), 재시도 성공, Avg 시도, 거부 믹스, p95 대기 시간, 지불 대기 시간 깊이.
경고: 이유 코드별로 급증, 시도/대기 시간 증가, 출력 대기열 오버플로.
14) 구현 점검표
아키텍처/데이터
- Payment Intent + 'dedempotency _ key' н응용 프로그램 홉.
- 이유 코드 설정 매트릭스: 재시도 가능 대 복구 불가능.
- 서명 된 웹 후크, PSP 참조에 의한 중복 제거.
백오프/규칙
- 지터와의 지수 백오프; 시도 및 창 시간 제한.
- 스마트 재 시도: 3DS/MID/PSP/메소드 변경; vs APM/오픈 뱅킹 카드에 대한 구별.
- 서킷 브레이커 (로컬/글로벌), 반 오픈 카나리아.
원장/화해
- "정지 된" 상태와의 거래 보상.
- T + 0/T + 1 조정: PSP 금융 은행 화폐 원장.
- 확인/웹 후크에 대한 시간 및 SLA 정책.
운영/준수
- 배상 전 RG/제재/PEP/age.
- KYT/specity не지불; 수동 검토 규칙.
- 사건/에스컬레이션을위한 런북 및 RACI.
15) 경제와 위험
3DS-phia, FX, chargeback-값, retray-oververse를 고려한 효과적인 속도를 고려하십시오.
하드 제한은 캐지백 노출 및 매장량을 오버 클럭싱하지 않도록 고위험 세그먼트로 배상됩니다.
16) 결론
반복은 제어 가능할 때 작동합니다: dempotency, 명확한 이유 코드 행렬, 지터가있는 지수 백오프, 시도 제한 및 라우팅이있는 번들 (PSP/3DS/메소드 변경). 회로 차단기, 지불 대기 행렬 및 강력한 조정을 추가하면 테이크와 현금 구멍을 만들지 않고 지속적으로 변환을 높일 수 있습니다.