Skip to Content
API 레퍼런스개요
View as Markdown

API 레퍼런스

아래의 모든 엔드포인트는 JSON으로 통신하며, https://api.infraio.xyz(프로덕션) 또는 https://api-dev.infraio.xyz(테스트) 아래에 존재하고, HMAC-SHA256으로 인증합니다 — 요청 서명은 인증을, 오류 envelope 형식은 오류를 참조하세요.

이 페이지는 가맹점 연동용 엔드포인트를 나열합니다. 자체 페이지가 없는 엔드포인트는 관련 개념 페이지에 설명되어 있습니다.

/b2b/v1/* 아래의 엔드포인트는 시크릿 키(sk_…)로 HMAC 서명합니다. 가맹점 백엔드가 호출하는 표면입니다. 가맹점 대시보드와 호스팅 결제 페이지는 자체 엔드포인트를 사용하며, 이는 연동 API에 포함되지 않습니다.

체크아웃

메서드경로용도비고
POST/b2b/v1/checkout-sessions/quick한 번의 호출로 세션 생성 — 주문 + 체크아웃 세션을 함께 발급.요청 본문과 샘플은 빠른 시작을 참조하세요.
POST/b2b/v1/checkout-sessions기존 주문에 대해 세션 생성. 플랫폼에 자체 주문 모델이 있고 시도당 하나의 세션을 원할 때 사용.2단계 흐름.
GET/b2b/v1/checkout-sessions/by-order/{order_id}한 주문에 대해 발급된 모든 세션 목록.구매자가 세션을 포기했고 대시보드에 이전 시도를 표시하고 싶을 때 유용합니다.

주문

주문은 시간을 초월하는 청구 가능한 엔티티입니다. 하나의 주문이 여러 체크아웃 세션을 지원할 수 있습니다(예: 구매자 포기, 재시도).

메서드경로용도비고
POST/b2b/v1/orders세션 없이 주문 생성.즉시 리디렉션하는 대신 나중에 구매자에게 결제 링크를 보내려는 경우 사용합니다.
GET/b2b/v1/orders/{id}라인 아이템 + 상태가 포함된 단일 주문 읽기.상태: PENDING → PAID | PARTIAL_PAID | CANCELED. 환불 후: PARTIALLY_REFUNDED | REFUNDED.
GET/b2b/v1/orders/by-merchant/{merchant_id}가맹점의 주문 목록. 커서 페이지네이션.커서 프로토콜은 커서 페이지네이션을 참조하세요.
PATCH/b2b/v1/orders/{id}/cancel미결제 주문을 취소로 표시. order.canceled를 발생시킵니다.주문이 이미 결제된 경우 실패합니다.
PATCH/b2b/v1/orders/{id}/reopen자동 취소(canceled_reason=payment_timeout)를 되돌립니다.TTL 만료 후 구매자가 돌아오는 경우 유용합니다.

환불

saga 흐름과 토큰 라이프사이클은 환불 개념 페이지를 참조하세요.

가맹점 시작

메서드경로용도비고
POST/b2b/v1/merchants/{merchant_id}/refunds가맹점 시작 환불. 자동 승인(PENDING 건너뜀).payment.refund.approved를 즉시 발생시킵니다.

고객 시작 — 환불 요청 토큰

구매자는 저희 호스팅 페이지에서 환불 양식을 작성합니다. 가맹점은 토큰을 발급하고 URL을 전달하기만 하면 됩니다. 백엔드(아래)에서 또는 가맹점 대시보드에서 토큰을 발급할 수 있습니다. 갱신과 취소는 대시보드에서 처리합니다.

메서드경로인증용도
POST/b2b/v1/merchants/{merchant_id}/refund-requestsHMAC (sk_…)백엔드에서 토큰 발급. 본문: {ref_type, ref_value, amount, ttl_seconds?, metadata?, hide_summary?, hide_header?}. ref_type은 order_id / order_number / session_id / session_key 중 하나. ref_value는 매칭되는 식별자. amount는 필수이며 구매자가 제출할 수 있는 최대값을 잠급니다. 기본 TTL 30분. refund_request.created(source: b2b)를 발생시킵니다.

환불 라이프사이클 (생성 후)

두 흐름 모두에 적용됩니다. 아래 엔드포인트는 요청 토큰이 아닌 환불 자체 (id가 rfn_…로 시작)에 작동합니다.

메서드경로용도비고
GET/b2b/v1/refunds/{id}단일 환불 읽기.상태: PENDING → APPROVED → EXECUTED | REJECTED.
GET/b2b/v1/refunds/by-merchant/{merchant_id}환불 목록. 커서 페이지네이션.—
POST/b2b/v1/refunds/{id}/approvePENDING 환불 승인(고객 시작만 — 가맹점 시작은 이미 APPROVED 상태).암호화폐: APPROVED로 도착하면 다음 /submit-tx를 호출합니다.
POST/b2b/v1/refunds/{id}/rejectPENDING 환불 거부.payment.refund.rejected를 발생시킵니다.
POST/b2b/v1/refunds/{id}/submit-tx암호화폐 전용 — 브로드캐스트한 온체인 tx 해시를 스탬프.본문: {tx_hash, network, token_address} — 세 개 모두 필수.

카탈로그 (읽기 전용)

메서드경로용도
GET/v1/supported/networksInfraIO Pay가 정산할 수 있는 모든 체인(메인넷 + 테스트넷, env로 필터링됨).
GET/v1/supported/tokens해당 체인의 모든 스테이블코인.
GET/v1/supported/currenciesorder.currency에 허용되는 통화.

헬스

메서드경로인증용도
GET/health없음 (공개)라이브니스 확인. {"status":"ok"}를 반환합니다. 업타임 모니터를 여기에 지정하세요.

커서 페이지네이션

모든 목록 엔드포인트는 동일한 쿼리 매개변수를 받고 동일한 envelope를 반환합니다. 커서는 불투명하며 오프셋 대신 사용되므로, 페이지를 넘기는 동안 새 행이 도착해도 페이지가 이동하지 않습니다.

쿼리 매개변수타입기본값비고
cursorstring—불투명 — 이전 응답의 next_cursor를 그대로 복사합니다.
limitint201..100.
sort_dir'asc' | 'desc'desc(created_at, id) 기준 정렬.
from / toRFC3339—선택적 시간 윈도우 필터.
searchstring—지원되는 경우 자유 텍스트 필터.

응답 envelope:

{ "orders": [ /* page rows */ ], "next_cursor": "eyJjcmVhdGVkX2F0IjoiMjAyNi0wNS0...", "has_next": true }

has_next는 항상 존재합니다. next_cursor는 has_next가 false일 때 생략됩니다. 커서는 불투명한 문자열로 다루세요.

이 페이지에서 누락된 항목

이 페이지는 가맹점 연동용 엔드포인트를 다룹니다. 나열되지 않은 엔드포인트나 OpenAPI 스펙이 필요하면 지원팀에 문의하세요.