빠른 시작
Modfolio 앱을 만드는 팀을 위한 연동 순서입니다. SDK 설치부터 첫 API 호출까지 차례로 따라가세요.
1
SDK 설치
Bun 또는 npm으로 SDK를 설치합니다.
Terminal
bun add @modfolio/pay-sdk2
클라이언트 생성
createPayClient를 import하고 인증 정보를 설정합니다. 서버 간 통신에는 API Key를, 사용자 대신 호출할 때는 JWT를 사용하세요.
TypeScript
import { createPayClient } from "@modfolio/pay-sdk";
const pay = createPayClient({
baseUrl: "https://my.modfolio.io",
auth: {
type: "api-key",
key: process.env.MODFOLIO_PAY_KEY,
sourceApp: "gistcore",
userId: "user_abc123",
},
});sourceApp 은 앱 식별자이고, 서버 간 호출용 X-API-Key 설정은인증 가이드를 참고하세요.3
첫 번째 API 호출
월렛 잔액을 조회하는 간단한 API 호출로 연동을 확인합니다. 크레딧 충전을 제공하지 않아 잔액은 현재 항상 0 입니다.
TypeScript
const wallet = await pay.wallets.get();
console.log("잔액:", wallet.balance);4
사용량 기반 과금 (현재 제공하지 않음)
크레딧 차감은 현재 제공하지 않습니다 — 아래 호출은 403 credits_disabled 를 받습니다. 제공을 재개하면 사용자의 액션마다 크레딧을 차감하고, 멱등성 키로 중복 차감을 막습니다.
TypeScript
const result = await pay.wallets.chargeAction({
sourceApp: "gistcore",
actionCode: "ai_generation",
idempotencyKey: "unique-key-123",
});5
웹훅 수신
이용권 구매(payment.completed)와 해지(subscription.cancelled)를 실시간으로 받으려면 웹훅 엔드포인트를 등록하세요.
TypeScript
// 결제 이벤트를 받으려면 웹훅 엔드포인트를 등록하세요
await pay.webhooks.create({
url: "https://gistcore.com/api/webhooks/pay",
events: ["payment.completed", "subscription.cancelled"],
});웹훅 서명 검증과 재시도 정책은웹훅 가이드에서 자세히 다룹니다.