Skip to Content
Tham chiếu APITổng quan
View as Markdown

Tham chiếu API

Mọi endpoint dưới đây nói JSON, sống dưới https://api.infraio.xyz (prod) hoặc https://api-dev.infraio.xyz (test), và xác thực qua HMAC-SHA256 — xem Xác thực cho việc ký request và Lỗi cho hình dáng error envelope.

Trang này liệt kê các endpoint cho tích hợp merchant. Nếu một endpoint không có trang riêng, nó được mô tả trong trang khái niệm liên quan.

Các endpoint dưới /b2b/v1/* được ký HMAC với khóa secret (sk_…) của bạn. Đây là surface mà backend của bạn gọi. Dashboard merchant và trang checkout do hệ thống host dùng các endpoint riêng, không thuộc API tích hợp.

Checkout

MethodPathMục đíchGhi chú
POST/b2b/v1/checkout-sessions/quickTạo session trong một lệnh — order + checkout-session được mint cùng nhau.Xem Bắt đầu nhanh cho request body và sample.
POST/b2b/v1/checkout-sessionsTạo session ứng với order đã có. Dùng khi platform của bạn đã có mô hình order riêng và bạn muốn một session cho mỗi lần thử.Luồng hai bước.
GET/b2b/v1/checkout-sessions/by-order/{order_id}Liệt kê mọi session từng được mint cho một order.Hữu ích khi người mua từ bỏ session và bạn muốn surface các lần thử trước trong dashboard của mình.

Orders

Order là entity tính phí trường tồn. Một order có thể đứng sau nhiều checkout session (ví dụ người mua từ bỏ, retry).

MethodPathMục đíchGhi chú
POST/b2b/v1/ordersTạo order mà không có session.Dùng khi bạn muốn gửi cho người mua một link thanh toán sau này thay vì redirect họ ngay.
GET/b2b/v1/orders/{id}Đọc một order với line items + trạng thái.Trạng thái: PENDING → PAID | PARTIAL_PAID | CANCELED. Sau refund: PARTIALLY_REFUNDED | REFUNDED.
GET/b2b/v1/orders/by-merchant/{merchant_id}Liệt kê order của bạn, cursor-paginated.Xem Cursor pagination cho protocol cursor.
PATCH/b2b/v1/orders/{id}/cancelĐánh dấu một order chưa thanh toán là canceled. Phát order.canceled.Fail nếu order đã thanh toán.
PATCH/b2b/v1/orders/{id}/reopenĐảo ngược một auto-cancel (canceled_reason=payment_timeout).Hữu ích nếu người mua quay lại sau khi TTL hết.

Refunds

Xem trang khái niệm Hoàn tiền cho luồng saga và vòng đời token.

Merchant khởi tạo

MethodPathMục đíchGhi chú
POST/b2b/v1/merchants/{merchant_id}/refundsRefund do merchant khởi tạo. Auto-approve (bỏ qua PENDING).Phát payment.refund.approved ngay lập tức.

Khách hàng khởi tạo — token refund-request

Người mua điền form refund trên trang do hệ thống host của chúng tôi; bạn chỉ phát hành token và giao URL. Bạn có thể phát hành token từ backend (bên dưới) hoặc từ dashboard merchant. Renewal và hủy được xử lý trong dashboard.

MethodPathAuthMục đích
POST/b2b/v1/merchants/{merchant_id}/refund-requestsHMAC (sk_…)Phát hành token từ backend của bạn. Body: {ref_type, ref_value, amount, ttl_seconds?, metadata?, hide_summary?, hide_header?}. ref_type là một trong order_id / order_number / session_id / session_key; ref_value là định danh tương ứng. amount là bắt buộc và khóa số tối đa mà người mua có thể submit. TTL mặc định 30 phút. Phát refund_request.created (source: b2b).

Vòng đời refund (sau khi tạo)

Áp dụng cho cả hai luồng. Các endpoint bên dưới thao tác trên chính refund (id bắt đầu rfn_…), không phải request token.

MethodPathMục đíchGhi chú
GET/b2b/v1/refunds/{id}Đọc một refund.Trạng thái: PENDING → APPROVED → EXECUTED | REJECTED.
GET/b2b/v1/refunds/by-merchant/{merchant_id}Liệt kê refund của bạn, cursor-paginated.—
POST/b2b/v1/refunds/{id}/approveApprove một refund PENDING (chỉ do khách hàng khởi tạo — do merchant khởi tạo đã ở APPROVED).Crypto: vào APPROVED, bạn gọi /submit-tx tiếp theo.
POST/b2b/v1/refunds/{id}/rejectTừ chối một refund PENDING.Phát payment.refund.rejected.
POST/b2b/v1/refunds/{id}/submit-txChỉ crypto — đóng dấu tx hash on-chain bạn đã broadcast.Body: {tx_hash, network, token_address} — cả ba bắt buộc.

Catalog (chỉ đọc)

MethodPathMục đích
GET/v1/supported/networksMọi chain InfraIO Pay có thể settle (mainnet + testnet, được filter theo env).
GET/v1/supported/tokensMọi stablecoin trên các chain đó.
GET/v1/supported/currenciesCurrency được chấp nhận cho order.currency.

Health

MethodPathAuthMục đích
GET/healthKhông (public)Kiểm tra liveness. Trả về {"status":"ok"}. Point uptime monitor của bạn ở đây.

Cursor pagination

Mọi endpoint list chấp nhận cùng các query param, trả về cùng envelope. Cursor là opaque và được dùng thay vì offset, để một trang không bao giờ shift khi một row mới vào trong lúc bạn đang phân trang.

Query paramTypeMặc địnhGhi chú
cursorstring—Opaque — copy next_cursor nguyên văn từ response trước.
limitint201..100.
sort_dir'asc' | 'desc'descSort theo (created_at, id).
from / toRFC3339—Filter cửa sổ thời gian tùy chọn.
searchstring—Filter tự do nơi được hỗ trợ.

Envelope response:

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

has_next luôn có mặt. next_cursor bị bỏ qua khi has_next là false. Hãy coi cursor là một chuỗi opaque.

Thiếu gì trên trang này

Trang này cover các endpoint dành cho tích hợp merchant. Nếu bạn cần một endpoint không được liệt kê, hoặc một spec OpenAPI, hãy liên hệ support.