크립토 결제 API 연동은 제공자와 무관하게 예측 가능한 형태를 따릅니다: 인보이스를 생성하고, 체크아웃을 리디렉트하거나 임베드하고, 결제가 진행됨에 따라 비동기 웹훅을 받고, 검증하고, 자체 기록과 대조합니다. 어려운 부분은 정상 경로가 아니라 가장자리입니다.
핵심 흐름
대부분의 게이트웨이는 동일한 생애주기를 가진 REST API를 노출합니다. 서버 측에서 호출하고(브라우저에 API 키를 절대 노출하지 말 것), 주문 결제 여부의 진실 원천으로는 브라우저 리디렉트가 아니라 웹훅을 취급하세요.
주문 상태 머신을 먼저 설계하세요: 대기 → 미납/결제 → 컨펌 → 완료, 만료와 초과 결제에 대한 명시적 분기와 함께. 이를 미리 배선하면 이중 처리를 유발하는 얽힌 조건문을 예방합니다.
- 금액, 통화, 주문 ID, 웹훅 URL로 인보이스를 생성.
- 호스팅 체크아웃을 보여주거나 주소와 금액을 직접 렌더링.
- 각 상태 변화마다 웹훅을 받고 서명을 검증.
- 결제가 필요한 컨펌 수에 도달했는지 확인한 뒤 이행.
- 웹훅을 온체인 트랜잭션 및 주문과 대조해 정산.
인보이스 생성
인보이스는 특정 금액을 특정 주문에 제한 시간 동안 묶습니다. 웹훅이 추측 없이 되짚어 매칭할 수 있도록 주문 ID를 메타데이터로 보내고, 게이트웨이가 반환하는 인보이스 ID를 저장하세요.
시세는 만료됩니다 — 게이트웨이가 몇 분간 환율을 고정합니다. 인보이스의 만료와 상태를 저장해 UI가 카운트다운을 표시하고, 늦은 결제가 잃어버린 주문이 아니라 정산 케이스로 처리되게 하세요.
웹훅이 진실의 원천이다
결제 후 브라우저 리디렉트는 편의일 뿐 보장이 아닙니다 — 사용자가 탭을 닫을 수 있습니다. 서버가 받는 웹훅이 행동의 근거입니다. 모든 웹훅을 검증하세요: 필드 하나라도 신뢰하기 전에 서명(보통 시크릿으로 원문 본문에 대한 HMAC)을 확인하세요.
웹훅 처리를 멱등하게 만드세요. 게이트웨이는 전달을 재시도하므로 같은 '결제됨' 이벤트가 두 번 도착할 수 있습니다. 이벤트나 인보이스 ID를 키로 삼아 반복 전달이 아무 일도 하지 않게 하세요. 2xx를 빠르게 반환하고 느린 작업은 비동기로 처리해 게이트웨이가 타임아웃으로 불필요하게 재시도하지 않게 하세요.
컨펌과 확정성
결제는 확정되기 훨씬 전에 (멤풀에서 또는 0 컨펌으로) 보일 수 있습니다. 금액과 체인에 맞는 컨펌 임계값을 정하고, 충족될 때만 이행하세요. 빠른 체인의 소액 스테이블코인 결제는 이것이 빠르고, 큰 금액은 더 기다리세요.
본인의 첫 목격이 아니라 게이트웨이의 '컨펌됨' 상태를 신뢰하고, 위험을 감수하지 않는 한 0 컨펌 결제로 상품을 내주지 않음으로써 재구성(reorg)과 이중지불을 방어하세요.
정산과 실패 케이스
정산은 모든 '결제됨' 주문이 실제 온체인 트랜잭션에 대응되고 그 반대도 성립함을 매일 증명하는 일입니다. 각 주문에 트랜잭션 해시, 수령 금액, 네트워크를 저장하면 불일치가 조사가 아니라 쿼리가 됩니다.
미납(구매자가 적게 보냄), 초과(차액 환불 또는 크레딧), 잘못된 네트워크 전송, 만료 후 결제된 인보이스를 명시적으로 대비하세요. 물량이 많으면 이는 드문 예외가 아니라 매주 벌어지는 일이며, 이를 조용히 처리하는 시스템이 곧 '프로덕션 준비 완료'의 실제 의미입니다.
자주 묻는 질문
브라우저 리디렉트와 웹훅 중 무엇을 믿어야 하나요?
웹훅입니다. 리디렉트는 사용자가 탭을 닫으면 사라질 수 있고 위조될 수도 있습니다. 서버 측에서 웹훅 서명을 검증하고, 주문이 결제되었다는 권위 있는 신호로 취급하세요.
웹훅이 두 번 처리되는 것을 어떻게 막나요?
처리를 멱등하게 만드세요. 게이트웨이는 전달을 재시도하므로 인보이스나 이벤트 ID를 키로 삼아 반복이 아무 일도 하지 않게 하세요. 같은 '결제됨' 이벤트가 다시 왔다고 주문을 두 번 이행하지 마세요.
컨펌은 몇 번 기다려야 하나요?
금액과 체인에 따라 다릅니다. 빠른 네트워크의 소액 스테이블코인 결제는 거의 즉시 확정으로 볼 수 있고, 큰 금액은 더 많은 컨펌을 정당화합니다. 본인의 첫 목격이 아니라 게이트웨이의 '컨펌됨' 상태를 사용하세요.
고객이 미납하거나 초과 결제하면 어떻게 되나요?
둘 다 명시적으로 처리하세요. 게이트웨이가 미납을 표시하면 차액을 요청하거나 환불하고, 초과의 경우 초과분을 환불하거나 크레딧합니다. 이 분기를 미리 구축하는 것이 데모와 프로덕션의 차이입니다.