[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-2026-ton-gaebal-ton-pay-sdk-telegram-mini-apps-amhohwapye-gyeolje":3},{"article":4,"author":56},{"id":5,"category_id":6,"title":7,"slug":8,"excerpt":9,"content_md":10,"content_html":11,"locale":12,"author_id":13,"published":14,"published_at":15,"meta_title":16,"meta_description":17,"focus_keyword":18,"og_image":19,"canonical_url":19,"robots_meta":20,"created_at":15,"updated_at":15,"tags":21,"category_name":35,"related_articles":36},"d0000000-0000-0000-0000-000000000603","a0000000-0000-0000-0000-000000000054","2026년 TON 개발: TON Pay SDK로 Telegram Mini Apps에서 암호화폐 결제 구현하기","2026-ton-gaebal-ton-pay-sdk-telegram-mini-apps-amhohwapye-gyeolje","TON 생태계는 월간 5억 명 이상의 Mini App 활성 사용자, 3,600개 이상의 앱, 4억 개 이상의 지갑으로 성장했습니다. 이 가이드에서는 지갑 인증부터 Jetton 전송까지 Telegram Mini Apps에 TON Pay SDK를 통합하는 방법을 안내합니다.","## 2026년의 TON 생태계\n\nThe Open Network(TON)은 Telegram을 기반으로 한 블록체인 프로젝트에서 세계에서 가장 활발하게 사용되는 암호화폐 생태계 중 하나로 발전했습니다. 2026년 3월 기준, 수치가 인상적인 이야기를 들려줍니다:\n\n- **월간 5억 명 이상의 활성 사용자** — Telegram Mini Apps 전체\n- **3,600개 이상의 활성 Mini Apps** — Telegram Mini App 카탈로그에 등재\n- **4억 개 이상의 TON 지갑** — Telegram Wallet, Tonkeeper, TON Space를 통해 생성\n- **42억 달러의 총 잠금 가치** — TON DeFi 프로토콜\n- **매일 1,200만 건의 온체인 거래** — TON 메인넷\n\n이 수치는 TON을 활성 사용자 수 기준으로 가장 널리 보급된 블록체인으로 만들며, Ethereum(L2 포함)과 Solana를 능가합니다. 성장은 단일 요인에 의해 주도됩니다: **Telegram 통합**. 전 세계적으로 월간 9억 5천만 명 이상의 활성 Telegram 사용자가 있으며, Mini App 및 지갑 사용으로의 작은 전환율도 막대한 수치를 만들어냅니다.\n\n### 왜 결제에 TON을 선택하는가?\n\n결제 기능이 있는 애플리케이션을 구축하는 개발자에게 TON은 다른 블록체인 대비 세 가지 구조적 이점을 제공합니다:\n\n1. **배포** — Mini App은 사용자가 이미 매일 사용하는 메시징 플랫폼인 Telegram 내에서 발견 가능합니다. 앱 스토어 제출 불필요, 다운로드 마찰 없음, 지갑 설치 불필요.\n2. **거의 제로에 가까운 수수료** — TON 거래 수수료는 평균 $0.005-0.01로, 배치 처리나 L2 복잡성 없이도 소액 결제와 인앱 구매를 경제적으로 실현 가능하게 합니다.\n3. **서브세컨드 최종성** — TON의 샤딩 아키텍처는 약 5초의 블록 시간과 1-2블록 내 실질적 최종성을 달성합니다. 사용자는 10초 이내에 확인된 결제를 볼 수 있습니다.\n\n## TON Pay SDK: 아키텍처 개요\n\nTON Pay SDK는 Telegram Mini Apps를 위한 공식 결제 통합 라이브러리입니다. 2025년 4분기에 출시되었으며, 통합 API를 제공합니다:\n\n- **TON Connect** — 지갑 인증\n- **Toncoin 결제** — 네이티브 TON 전송\n- **Jetton 결제** — TRC-20 토큰 표준: USDT, NOT, 커스텀 토큰\n- **구독 결제** — 사전 승인된 스마트 컨트랙트를 통한 반복 Jetton 과금\n- **결제 영수증** — 메타데이터가 포함된 온체인 결제 증명\n\nSDK는 npm 패키지(`@tonconnect\u002Fpay-sdk`)로 제공되며 클라이언트 사이드(브라우저)와 서버 사이드(Node.js) 모두 지원합니다.\n\n### 사전 요구 사항\n\nTON Pay SDK를 통합하기 전에 다음을 준비하세요:\n\n1. Mini App 기능이 있는 등록된 Telegram Bot(`@BotFather` → `\u002Fnewapp`)\n2. 결제 수신용 TON 지갑 주소(가맹점 지갑)\n3. Node.js 20+ 및 TypeScript 5.x 개발 환경\n4. Telegram Mini App API(`window.Telegram.WebApp`)에 대한 기본 이해\n\n## 1단계: TON Connect 지갑 인증\n\nTON Connect는 TON 지갑을 dApp 및 Mini Apps에 연결하기 위한 표준 프로토콜입니다. 인증 레이어로 기능합니다 — 결제를 수락하기 전에 사용자가 어떤 지갑에서 결제하려는지 알아야 합니다.\n\n### TON Connect 설정\n\n```typescript\nimport { TonConnect } from \"@tonconnect\u002Fsdk\";\nimport { TonPaySDK } from \"@tonconnect\u002Fpay-sdk\";\n\n\u002F\u002F 매니페스트로 TON Connect 초기화\nconst tonConnect = new TonConnect({\n  manifestUrl: \"https:\u002F\u002Fyourapp.com\u002Ftonconnect-manifest.json\",\n});\n\n\u002F\u002F 이전에 연결된 지갑이 있는지 확인\nconst existingWallet = tonConnect.wallet;\nif (existingWallet) {\n  console.log(\"연결됨:\", existingWallet.account.address);\n}\n```\n\n### 지갑 연결 흐름\n\n지갑 연결 흐름은 사용자의 지갑 제공업체에 따라 다릅니다:\n\n```typescript\nimport { toUserFriendlyAddress } from \"@tonconnect\u002Fsdk\";\n\nasync function connectWallet(): Promise\u003Cstring> {\n  const walletList = await tonConnect.getWallets();\n\n  \u002F\u002F Telegram Mini Apps에서는 TON Space(내장)를 우선\n  const tonSpace = walletList.find(\n    (w) => w.appName === \"tonspace\"\n  );\n\n  if (tonSpace) {\n    await tonConnect.connect({\n      jsBridgeKey: tonSpace.jsBridgeKey,\n    });\n  } else {\n    const universalLink = tonConnect.connect({\n      universalLink: walletList[0].universalLink,\n      bridgeUrl: walletList[0].bridgeUrl,\n    });\n    window.open(universalLink, \"_blank\");\n  }\n\n  return new Promise((resolve) => {\n    tonConnect.onStatusChange((wallet) => {\n      if (wallet) {\n        const address = toUserFriendlyAddress(\n          wallet.account.address\n        );\n        resolve(address);\n      }\n    });\n  });\n}\n```\n\n### 세션 지속성\n\nTON Connect 세션은 Mini App 재시작 간에 유지됩니다. SDK는 세션 데이터를 `localStorage`에 저장합니다:\n\n```typescript\nasync function initAuth(): Promise\u003Cstring | null> {\n  await tonConnect.restoreConnection();\n  if (tonConnect.connected && tonConnect.wallet) {\n    return toUserFriendlyAddress(\n      tonConnect.wallet.account.address\n    );\n  }\n  return null;\n}\n```\n\n## 2단계: Toncoin 결제 수락\n\n지갑이 연결되면 TON Pay SDK를 사용하여 네이티브 TON 전송을 요청할 수 있습니다.\n\n### 간단한 결제 요청\n\n```typescript\nimport { TonPaySDK, PaymentRequest } from \"@tonconnect\u002Fpay-sdk\";\n\nconst tonPay = new TonPaySDK({\n  tonConnect,\n  merchantWallet: \"EQD...가맹점-주소\",\n  webhookUrl: \"https:\u002F\u002Fyourapi.com\u002Fwebhooks\u002Fton-pay\",\n});\n\nasync function requestPayment(\n  amount: number,\n  orderId: string\n): Promise\u003Cstring> {\n  const payment: PaymentRequest = {\n    amount: amount.toString(),\n    payload: orderId,\n    description: `주문 #${orderId}`,\n  };\n\n  const result = await tonPay.requestPayment(payment);\n\n  if (result.status === \"confirmed\") {\n    return result.txHash;\n  } else if (result.status === \"rejected\") {\n    throw new Error(\"사용자가 결제를 거부했습니다\");\n  } else {\n    throw new Error(`결제 실패: ${result.error}`);\n  }\n}\n```\n\n### 서버 사이드 결제 검증\n\n클라이언트 사이드 결제 확인만 신뢰하지 마세요. 백엔드에서 모든 결제를 검증하세요:\n\n```typescript\nimport { TonClient } from \"@ton\u002Fton\";\nimport { Address, fromNano } from \"@ton\u002Fcore\";\n\nconst tonClient = new TonClient({\n  endpoint: \"https:\u002F\u002Ftoncenter.com\u002Fapi\u002Fv2\u002FjsonRPC\",\n  apiKey: process.env.TONCENTER_API_KEY,\n});\n\nasync function verifyPayment(\n  txHash: string,\n  expectedAmount: string,\n  expectedPayload: string,\n  merchantAddress: string\n): Promise\u003Cboolean> {\n  const tx = await tonClient.getTransaction(\n    Address.parse(merchantAddress),\n    txHash\n  );\n\n  if (!tx) return false;\n\n  const receivedAmount = fromNano(tx.inMessage?.value ?? 0n);\n  if (parseFloat(receivedAmount) \u003C parseFloat(expectedAmount)) {\n    return false;\n  }\n\n  const payload = tx.inMessage?.body?.toString() ?? \"\";\n  if (payload !== expectedPayload) {\n    return false;\n  }\n\n  return true;\n}\n```\n\n## 3단계: Jetton(토큰) 결제\n\nJetton은 TON에서 ERC-20 토큰에 해당합니다. 결제에 가장 일반적인 Jetton은 **TON의 USDT**(Tether)로, 2026년 3월 기준 TON 네트워크에서 12억 달러 이상이 유통되고 있습니다.\n\n```typescript\nimport { JettonPaymentRequest } from \"@tonconnect\u002Fpay-sdk\";\n\nasync function requestUSDTPayment(\n  amount: number,\n  orderId: string\n): Promise\u003Cstring> {\n  const USDT_MASTER = \"EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs\";\n\n  const payment: JettonPaymentRequest = {\n    jettonMaster: USDT_MASTER,\n    amount: (amount * 1e6).toString(),\n    payload: orderId,\n    description: `$${amount} USDT — 주문 #${orderId}`,\n    forwardTonAmount: \"50000000\",\n  };\n\n  const result = await tonPay.requestJettonPayment(payment);\n\n  if (result.status === \"confirmed\") {\n    return result.txHash;\n  }\n  throw new Error(`Jetton 결제 실패: ${result.error}`);\n}\n```\n\n## 4단계: 구독 결제\n\nTON Pay SDK는 사전 승인된 구독 컨트랙트를 통한 반복 결제를 지원합니다.\n\n```typescript\nimport { SubscriptionRequest } from \"@tonconnect\u002Fpay-sdk\";\n\nasync function createSubscription(\n  userId: string\n): Promise\u003Cstring> {\n  const subscription: SubscriptionRequest = {\n    jettonMaster: USDT_MASTER,\n    amount: \"4990000\",\n    period: 30 * 24 * 60 * 60,\n    maxCharges: 12,\n    payload: `sub-${userId}`,\n    description: \"프리미엄 — $4.99\u002F월\",\n  };\n\n  const result = await tonPay.createSubscription(subscription);\n\n  if (result.status === \"active\") {\n    return result.subscriptionAddress;\n  }\n  throw new Error(\"구독 생성 실패\");\n}\n```\n\n## Telegram Mini Apps 수익화 전략\n\n결제는 수익화 퍼즐의 한 조각일 뿐입니다. 성공적인 Mini Apps가 여러 수익원을 어떻게 결합하는지 소개합니다:\n\n### 1. Telegram 광고 플랫폼\n\nTelegram의 네이티브 광고 플랫폼을 통해 Mini Apps는 광고를 표시하고 TON으로 수익을 얻을 수 있습니다. 통합하려면 `@AdsBot`를 통해 퍼블리셔로 등록해야 합니다.\n\n상위 Mini Apps는 Tier 1 국가의 보상형 동영상 광고에서 **$5-15 eCPM**을 보고합니다.\n\n### 2. Telegram Stars를 통한 인앱 구매\n\nTelegram Stars는 Telegram 내장 가상 화폐로 2024년부터 사용 가능합니다. 사용자는 법정 화폐(Apple Pay, Google Pay, 신용카드)로 Stars를 구매하고 Mini Apps에서 사용합니다. 개발자는 Stars 수익의 70%를 받습니다.\n\n### 3. 크립토 네이티브 수익화\n\nTON Pay SDK 결제와 DeFi 메커니즘을 결합합니다:\n\n- **토큰 게이트 접근** — 프리미엄 기능 접근에 특정 Jetton 또는 SBT(Soulbound Token) 보유 요구\n- **NFT 마켓플레이스** — 디지털 수집품 판매(TON NFT는 TEP-62 표준 사용)\n- **스테이킹 보상** — 사용자가 Mini App의 스마트 컨트랙트에서 TON이나 Jetton을 스테이킹하여 수익 획득\n- **추천 수수료** — 스마트 컨트랙트를 통해 Jetton으로 추천 보너스 지급\n\n### 수익화 모델 비교\n\n| 모델 | 결제 방법 | 개발자 몫 | 사용자 마찰 | 최적 대상 |\n|------|----------|----------|------------|----------|\n| Telegram 광고 | 광고 노출 | 광고 수익의 50-70% | 낮음(수동적) | 높은 DAU의 무료 앱 |\n| Telegram Stars | 법정 화폐 → Stars | 70% | 중간(인앱 구매) | 디지털 상품, 캐주얼 게임 |\n| TON Pay(Toncoin) | 크립토 지갑 | 100%(가스 제외) | 높음(지갑 필요) | 크립토 네이티브 사용자 |\n| TON Pay(USDT) | 크립토 지갑 | 100%(가스 제외) | 높음(지갑 필요) | 안정적 가치 거래 |\n| 구독 | 크립토 지갑 | 100%(가스 제외) | 중간(일회성 승인) | SaaS, 프리미엄 콘텐츠 |\n\n## 프로덕션 배포 체크리스트\n\n결제 기능이 있는 Mini App을 출시하기 전에:\n\n1. **가맹점 지갑 보안** — 결제 수신에 멀티시그 지갑(예: TON Safe)을 사용하세요. 단일 키 핫 지갑은 사용하지 마세요.\n2. **결제 검증** — 항상 서버 사이드에서 결제를 검증하세요. 금액, 페이로드, 발신자 주소를 확인하세요.\n3. **에러 처리** — 네트워크 타임아웃, 거부된 거래, 잔액 부족을 적절히 처리하세요.\n4. **환불 정책** — 환불 메커니즘을 구현하세요. TON 거래는 되돌릴 수 없으므로 환불은 별도의 출금 거래가 필요합니다.\n5. **속도 제한** — 결제 웹훅 엔드포인트를 남용으로부터 보호하세요.\n6. **로깅** — 분쟁 해결을 위해 거래 해시와 함께 모든 결제 이벤트를 기록하세요.\n7. **테스트** — 개발에 TON 테스트넷을 사용하세요.\n\n## 자주 묻는 질문\n\n### TON Mini Apps는 얼마나 많은 사용자에게 도달할 수 있나요?\n\nTelegram은 월간 9억 5천만 명 이상의 활성 사용자를 보유하고 있습니다. Mini Apps는 아무것도 설치하지 않고도 모든 사용자가 접근할 수 있습니다. 상위 Mini Apps(Notcoin, Hamster Kombat)는 3,000-4,000만 명의 사용자에 도달했습니다.\n\n### TON 결제의 거래 수수료는 얼마인가요?\n\n네이티브 TON 전송은 약 0.005-0.01 TON(현재 가격 기준 $0.01-0.02)입니다. Jetton 전송은 추가 스마트 컨트랙트 실행으로 인해 약간 더 비싸며, 일반적으로 0.03-0.05 TON($0.06-0.10)입니다. 수수료는 가맹점이 아닌 발신자가 부담합니다.\n\n### Telegram Mini App에서 법정 화폐 결제를 받을 수 있나요?\n\n네, Telegram Stars(내장) 또는 서드파티 결제 제공업체를 통해 가능합니다.\n\n### TON 결제를 받으려면 KYC가 필요한가요?\n\n가맹점의 경우: 관할권과 거래량에 따라 다릅니다. 사용자의 경우: TON 지갑 생성에 KYC는 필요하지 않지만, 사용자가 TON을 구매하는 중앙화 거래소는 KYC를 시행합니다.\n\n### 결제에서 TON과 Ethereum의 차이점은?\n\nTON은 더 낮은 수수료($0.01 vs Ethereum L1의 $0.50-5.00), 더 빠른 최종성(10초 vs 12-15분), 내장된 Telegram 배포를 제공합니다. Ethereum은 더 큰 DeFi 생태계, 더 많은 기관 채택, 더 강한 탈중앙화 보장을 가지고 있습니다.\n\n### 분쟁과 차지백은 어떻게 처리하나요?\n\n블록체인 결제는 되돌릴 수 없습니다 — 차지백이 없습니다. 자체 환불 및 분쟁 해결 시스템을 구현해야 합니다. 모범 사례: 가맹점 지갑으로 보내기 전에 분쟁 기간(24-72시간) 동안 에스크로 스마트 컨트랙트에 자금을 보유하세요.","\u003Ch2 id=\"2026-ton\">2026년의 TON 생태계\u003C\u002Fh2>\n\u003Cp>The Open Network(TON)은 Telegram을 기반으로 한 블록체인 프로젝트에서 세계에서 가장 활발하게 사용되는 암호화폐 생태계 중 하나로 발전했습니다. 2026년 3월 기준, 수치가 인상적인 이야기를 들려줍니다:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>월간 5억 명 이상의 활성 사용자\u003C\u002Fstrong> — Telegram Mini Apps 전체\u003C\u002Fli>\n\u003Cli>\u003Cstrong>3,600개 이상의 활성 Mini Apps\u003C\u002Fstrong> — Telegram Mini App 카탈로그에 등재\u003C\u002Fli>\n\u003Cli>\u003Cstrong>4억 개 이상의 TON 지갑\u003C\u002Fstrong> — Telegram Wallet, Tonkeeper, TON Space를 통해 생성\u003C\u002Fli>\n\u003Cli>\u003Cstrong>42억 달러의 총 잠금 가치\u003C\u002Fstrong> — TON DeFi 프로토콜\u003C\u002Fli>\n\u003Cli>\u003Cstrong>매일 1,200만 건의 온체인 거래\u003C\u002Fstrong> — TON 메인넷\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>이 수치는 TON을 활성 사용자 수 기준으로 가장 널리 보급된 블록체인으로 만들며, Ethereum(L2 포함)과 Solana를 능가합니다. 성장은 단일 요인에 의해 주도됩니다: \u003Cstrong>Telegram 통합\u003C\u002Fstrong>. 전 세계적으로 월간 9억 5천만 명 이상의 활성 Telegram 사용자가 있으며, Mini App 및 지갑 사용으로의 작은 전환율도 막대한 수치를 만들어냅니다.\u003C\u002Fp>\n\u003Ch3>왜 결제에 TON을 선택하는가?\u003C\u002Fh3>\n\u003Cp>결제 기능이 있는 애플리케이션을 구축하는 개발자에게 TON은 다른 블록체인 대비 세 가지 구조적 이점을 제공합니다:\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>배포\u003C\u002Fstrong> — Mini App은 사용자가 이미 매일 사용하는 메시징 플랫폼인 Telegram 내에서 발견 가능합니다. 앱 스토어 제출 불필요, 다운로드 마찰 없음, 지갑 설치 불필요.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>거의 제로에 가까운 수수료\u003C\u002Fstrong> — TON 거래 수수료는 평균 $0.005-0.01로, 배치 처리나 L2 복잡성 없이도 소액 결제와 인앱 구매를 경제적으로 실현 가능하게 합니다.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>서브세컨드 최종성\u003C\u002Fstrong> — TON의 샤딩 아키텍처는 약 5초의 블록 시간과 1-2블록 내 실질적 최종성을 달성합니다. 사용자는 10초 이내에 확인된 결제를 볼 수 있습니다.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch2 id=\"ton-pay-sdk\">TON Pay SDK: 아키텍처 개요\u003C\u002Fh2>\n\u003Cp>TON Pay SDK는 Telegram Mini Apps를 위한 공식 결제 통합 라이브러리입니다. 2025년 4분기에 출시되었으며, 통합 API를 제공합니다:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>TON Connect\u003C\u002Fstrong> — 지갑 인증\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Toncoin 결제\u003C\u002Fstrong> — 네이티브 TON 전송\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Jetton 결제\u003C\u002Fstrong> — TRC-20 토큰 표준: USDT, NOT, 커스텀 토큰\u003C\u002Fli>\n\u003Cli>\u003Cstrong>구독 결제\u003C\u002Fstrong> — 사전 승인된 스마트 컨트랙트를 통한 반복 Jetton 과금\u003C\u002Fli>\n\u003Cli>\u003Cstrong>결제 영수증\u003C\u002Fstrong> — 메타데이터가 포함된 온체인 결제 증명\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>SDK는 npm 패키지(\u003Ccode>@tonconnect\u002Fpay-sdk\u003C\u002Fcode>)로 제공되며 클라이언트 사이드(브라우저)와 서버 사이드(Node.js) 모두 지원합니다.\u003C\u002Fp>\n\u003Ch3>사전 요구 사항\u003C\u002Fh3>\n\u003Cp>TON Pay SDK를 통합하기 전에 다음을 준비하세요:\u003C\u002Fp>\n\u003Col>\n\u003Cli>Mini App 기능이 있는 등록된 Telegram Bot(\u003Ccode>@BotFather\u003C\u002Fcode> → \u003Ccode>\u002Fnewapp\u003C\u002Fcode>)\u003C\u002Fli>\n\u003Cli>결제 수신용 TON 지갑 주소(가맹점 지갑)\u003C\u002Fli>\n\u003Cli>Node.js 20+ 및 TypeScript 5.x 개발 환경\u003C\u002Fli>\n\u003Cli>Telegram Mini App API(\u003Ccode>window.Telegram.WebApp\u003C\u002Fcode>)에 대한 기본 이해\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch2 id=\"1-ton-connect\">1단계: TON Connect 지갑 인증\u003C\u002Fh2>\n\u003Cp>TON Connect는 TON 지갑을 dApp 및 Mini Apps에 연결하기 위한 표준 프로토콜입니다. 인증 레이어로 기능합니다 — 결제를 수락하기 전에 사용자가 어떤 지갑에서 결제하려는지 알아야 합니다.\u003C\u002Fp>\n\u003Ch3>TON Connect 설정\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-typescript\">import { TonConnect } from \"@tonconnect\u002Fsdk\";\nimport { TonPaySDK } from \"@tonconnect\u002Fpay-sdk\";\n\n\u002F\u002F 매니페스트로 TON Connect 초기화\nconst tonConnect = new TonConnect({\n  manifestUrl: \"https:\u002F\u002Fyourapp.com\u002Ftonconnect-manifest.json\",\n});\n\n\u002F\u002F 이전에 연결된 지갑이 있는지 확인\nconst existingWallet = tonConnect.wallet;\nif (existingWallet) {\n  console.log(\"연결됨:\", existingWallet.account.address);\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>지갑 연결 흐름\u003C\u002Fh3>\n\u003Cp>지갑 연결 흐름은 사용자의 지갑 제공업체에 따라 다릅니다:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-typescript\">import { toUserFriendlyAddress } from \"@tonconnect\u002Fsdk\";\n\nasync function connectWallet(): Promise&lt;string&gt; {\n  const walletList = await tonConnect.getWallets();\n\n  \u002F\u002F Telegram Mini Apps에서는 TON Space(내장)를 우선\n  const tonSpace = walletList.find(\n    (w) =&gt; w.appName === \"tonspace\"\n  );\n\n  if (tonSpace) {\n    await tonConnect.connect({\n      jsBridgeKey: tonSpace.jsBridgeKey,\n    });\n  } else {\n    const universalLink = tonConnect.connect({\n      universalLink: walletList[0].universalLink,\n      bridgeUrl: walletList[0].bridgeUrl,\n    });\n    window.open(universalLink, \"_blank\");\n  }\n\n  return new Promise((resolve) =&gt; {\n    tonConnect.onStatusChange((wallet) =&gt; {\n      if (wallet) {\n        const address = toUserFriendlyAddress(\n          wallet.account.address\n        );\n        resolve(address);\n      }\n    });\n  });\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>세션 지속성\u003C\u002Fh3>\n\u003Cp>TON Connect 세션은 Mini App 재시작 간에 유지됩니다. SDK는 세션 데이터를 \u003Ccode>localStorage\u003C\u002Fcode>에 저장합니다:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-typescript\">async function initAuth(): Promise&lt;string | null&gt; {\n  await tonConnect.restoreConnection();\n  if (tonConnect.connected &amp;&amp; tonConnect.wallet) {\n    return toUserFriendlyAddress(\n      tonConnect.wallet.account.address\n    );\n  }\n  return null;\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2 id=\"2-toncoin\">2단계: Toncoin 결제 수락\u003C\u002Fh2>\n\u003Cp>지갑이 연결되면 TON Pay SDK를 사용하여 네이티브 TON 전송을 요청할 수 있습니다.\u003C\u002Fp>\n\u003Ch3>간단한 결제 요청\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-typescript\">import { TonPaySDK, PaymentRequest } from \"@tonconnect\u002Fpay-sdk\";\n\nconst tonPay = new TonPaySDK({\n  tonConnect,\n  merchantWallet: \"EQD...가맹점-주소\",\n  webhookUrl: \"https:\u002F\u002Fyourapi.com\u002Fwebhooks\u002Fton-pay\",\n});\n\nasync function requestPayment(\n  amount: number,\n  orderId: string\n): Promise&lt;string&gt; {\n  const payment: PaymentRequest = {\n    amount: amount.toString(),\n    payload: orderId,\n    description: `주문 #${orderId}`,\n  };\n\n  const result = await tonPay.requestPayment(payment);\n\n  if (result.status === \"confirmed\") {\n    return result.txHash;\n  } else if (result.status === \"rejected\") {\n    throw new Error(\"사용자가 결제를 거부했습니다\");\n  } else {\n    throw new Error(`결제 실패: ${result.error}`);\n  }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>서버 사이드 결제 검증\u003C\u002Fh3>\n\u003Cp>클라이언트 사이드 결제 확인만 신뢰하지 마세요. 백엔드에서 모든 결제를 검증하세요:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-typescript\">import { TonClient } from \"@ton\u002Fton\";\nimport { Address, fromNano } from \"@ton\u002Fcore\";\n\nconst tonClient = new TonClient({\n  endpoint: \"https:\u002F\u002Ftoncenter.com\u002Fapi\u002Fv2\u002FjsonRPC\",\n  apiKey: process.env.TONCENTER_API_KEY,\n});\n\nasync function verifyPayment(\n  txHash: string,\n  expectedAmount: string,\n  expectedPayload: string,\n  merchantAddress: string\n): Promise&lt;boolean&gt; {\n  const tx = await tonClient.getTransaction(\n    Address.parse(merchantAddress),\n    txHash\n  );\n\n  if (!tx) return false;\n\n  const receivedAmount = fromNano(tx.inMessage?.value ?? 0n);\n  if (parseFloat(receivedAmount) &lt; parseFloat(expectedAmount)) {\n    return false;\n  }\n\n  const payload = tx.inMessage?.body?.toString() ?? \"\";\n  if (payload !== expectedPayload) {\n    return false;\n  }\n\n  return true;\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2 id=\"3-jetton\">3단계: Jetton(토큰) 결제\u003C\u002Fh2>\n\u003Cp>Jetton은 TON에서 ERC-20 토큰에 해당합니다. 결제에 가장 일반적인 Jetton은 \u003Cstrong>TON의 USDT\u003C\u002Fstrong>(Tether)로, 2026년 3월 기준 TON 네트워크에서 12억 달러 이상이 유통되고 있습니다.\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-typescript\">import { JettonPaymentRequest } from \"@tonconnect\u002Fpay-sdk\";\n\nasync function requestUSDTPayment(\n  amount: number,\n  orderId: string\n): Promise&lt;string&gt; {\n  const USDT_MASTER = \"EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs\";\n\n  const payment: JettonPaymentRequest = {\n    jettonMaster: USDT_MASTER,\n    amount: (amount * 1e6).toString(),\n    payload: orderId,\n    description: `$${amount} USDT — 주문 #${orderId}`,\n    forwardTonAmount: \"50000000\",\n  };\n\n  const result = await tonPay.requestJettonPayment(payment);\n\n  if (result.status === \"confirmed\") {\n    return result.txHash;\n  }\n  throw new Error(`Jetton 결제 실패: ${result.error}`);\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2 id=\"4\">4단계: 구독 결제\u003C\u002Fh2>\n\u003Cp>TON Pay SDK는 사전 승인된 구독 컨트랙트를 통한 반복 결제를 지원합니다.\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-typescript\">import { SubscriptionRequest } from \"@tonconnect\u002Fpay-sdk\";\n\nasync function createSubscription(\n  userId: string\n): Promise&lt;string&gt; {\n  const subscription: SubscriptionRequest = {\n    jettonMaster: USDT_MASTER,\n    amount: \"4990000\",\n    period: 30 * 24 * 60 * 60,\n    maxCharges: 12,\n    payload: `sub-${userId}`,\n    description: \"프리미엄 — $4.99\u002F월\",\n  };\n\n  const result = await tonPay.createSubscription(subscription);\n\n  if (result.status === \"active\") {\n    return result.subscriptionAddress;\n  }\n  throw new Error(\"구독 생성 실패\");\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2 id=\"telegram-mini-apps\">Telegram Mini Apps 수익화 전략\u003C\u002Fh2>\n\u003Cp>결제는 수익화 퍼즐의 한 조각일 뿐입니다. 성공적인 Mini Apps가 여러 수익원을 어떻게 결합하는지 소개합니다:\u003C\u002Fp>\n\u003Ch3>1. Telegram 광고 플랫폼\u003C\u002Fh3>\n\u003Cp>Telegram의 네이티브 광고 플랫폼을 통해 Mini Apps는 광고를 표시하고 TON으로 수익을 얻을 수 있습니다. 통합하려면 \u003Ccode>@AdsBot\u003C\u002Fcode>를 통해 퍼블리셔로 등록해야 합니다.\u003C\u002Fp>\n\u003Cp>상위 Mini Apps는 Tier 1 국가의 보상형 동영상 광고에서 \u003Cstrong>$5-15 eCPM\u003C\u002Fstrong>을 보고합니다.\u003C\u002Fp>\n\u003Ch3>2. Telegram Stars를 통한 인앱 구매\u003C\u002Fh3>\n\u003Cp>Telegram Stars는 Telegram 내장 가상 화폐로 2024년부터 사용 가능합니다. 사용자는 법정 화폐(Apple Pay, Google Pay, 신용카드)로 Stars를 구매하고 Mini Apps에서 사용합니다. 개발자는 Stars 수익의 70%를 받습니다.\u003C\u002Fp>\n\u003Ch3>3. 크립토 네이티브 수익화\u003C\u002Fh3>\n\u003Cp>TON Pay SDK 결제와 DeFi 메커니즘을 결합합니다:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>토큰 게이트 접근\u003C\u002Fstrong> — 프리미엄 기능 접근에 특정 Jetton 또는 SBT(Soulbound Token) 보유 요구\u003C\u002Fli>\n\u003Cli>\u003Cstrong>NFT 마켓플레이스\u003C\u002Fstrong> — 디지털 수집품 판매(TON NFT는 TEP-62 표준 사용)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>스테이킹 보상\u003C\u002Fstrong> — 사용자가 Mini App의 스마트 컨트랙트에서 TON이나 Jetton을 스테이킹하여 수익 획득\u003C\u002Fli>\n\u003Cli>\u003Cstrong>추천 수수료\u003C\u002Fstrong> — 스마트 컨트랙트를 통해 Jetton으로 추천 보너스 지급\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>수익화 모델 비교\u003C\u002Fh3>\n\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>모델\u003C\u002Fth>\u003Cth>결제 방법\u003C\u002Fth>\u003Cth>개발자 몫\u003C\u002Fth>\u003Cth>사용자 마찰\u003C\u002Fth>\u003Cth>최적 대상\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\n\u003Ctr>\u003Ctd>Telegram 광고\u003C\u002Ftd>\u003Ctd>광고 노출\u003C\u002Ftd>\u003Ctd>광고 수익의 50-70%\u003C\u002Ftd>\u003Ctd>낮음(수동적)\u003C\u002Ftd>\u003Ctd>높은 DAU의 무료 앱\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>Telegram Stars\u003C\u002Ftd>\u003Ctd>법정 화폐 → Stars\u003C\u002Ftd>\u003Ctd>70%\u003C\u002Ftd>\u003Ctd>중간(인앱 구매)\u003C\u002Ftd>\u003Ctd>디지털 상품, 캐주얼 게임\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>TON Pay(Toncoin)\u003C\u002Ftd>\u003Ctd>크립토 지갑\u003C\u002Ftd>\u003Ctd>100%(가스 제외)\u003C\u002Ftd>\u003Ctd>높음(지갑 필요)\u003C\u002Ftd>\u003Ctd>크립토 네이티브 사용자\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>TON Pay(USDT)\u003C\u002Ftd>\u003Ctd>크립토 지갑\u003C\u002Ftd>\u003Ctd>100%(가스 제외)\u003C\u002Ftd>\u003Ctd>높음(지갑 필요)\u003C\u002Ftd>\u003Ctd>안정적 가치 거래\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>구독\u003C\u002Ftd>\u003Ctd>크립토 지갑\u003C\u002Ftd>\u003Ctd>100%(가스 제외)\u003C\u002Ftd>\u003Ctd>중간(일회성 승인)\u003C\u002Ftd>\u003Ctd>SaaS, 프리미엄 콘텐츠\u003C\u002Ftd>\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Ch2 id=\"\">프로덕션 배포 체크리스트\u003C\u002Fh2>\n\u003Cp>결제 기능이 있는 Mini App을 출시하기 전에:\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>가맹점 지갑 보안\u003C\u002Fstrong> — 결제 수신에 멀티시그 지갑(예: TON Safe)을 사용하세요. 단일 키 핫 지갑은 사용하지 마세요.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>결제 검증\u003C\u002Fstrong> — 항상 서버 사이드에서 결제를 검증하세요. 금액, 페이로드, 발신자 주소를 확인하세요.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>에러 처리\u003C\u002Fstrong> — 네트워크 타임아웃, 거부된 거래, 잔액 부족을 적절히 처리하세요.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>환불 정책\u003C\u002Fstrong> — 환불 메커니즘을 구현하세요. TON 거래는 되돌릴 수 없으므로 환불은 별도의 출금 거래가 필요합니다.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>속도 제한\u003C\u002Fstrong> — 결제 웹훅 엔드포인트를 남용으로부터 보호하세요.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>로깅\u003C\u002Fstrong> — 분쟁 해결을 위해 거래 해시와 함께 모든 결제 이벤트를 기록하세요.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>테스트\u003C\u002Fstrong> — 개발에 TON 테스트넷을 사용하세요.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch2 id=\"\">자주 묻는 질문\u003C\u002Fh2>\n\u003Ch3 id=\"ton-mini-apps\">TON Mini Apps는 얼마나 많은 사용자에게 도달할 수 있나요?\u003C\u002Fh3>\n\u003Cp>Telegram은 월간 9억 5천만 명 이상의 활성 사용자를 보유하고 있습니다. Mini Apps는 아무것도 설치하지 않고도 모든 사용자가 접근할 수 있습니다. 상위 Mini Apps(Notcoin, Hamster Kombat)는 3,000-4,000만 명의 사용자에 도달했습니다.\u003C\u002Fp>\n\u003Ch3 id=\"ton\">TON 결제의 거래 수수료는 얼마인가요?\u003C\u002Fh3>\n\u003Cp>네이티브 TON 전송은 약 0.005-0.01 TON(현재 가격 기준 \u003Cspan class=\"math math-inline\">0.01-0.02)입니다. Jetton 전송은 추가 스마트 컨트랙트 실행으로 인해 약간 더 비싸며, 일반적으로 0.03-0.05 TON(\u003C\u002Fspan>0.06-0.10)입니다. 수수료는 가맹점이 아닌 발신자가 부담합니다.\u003C\u002Fp>\n\u003Ch3 id=\"telegram-mini-app\">Telegram Mini App에서 법정 화폐 결제를 받을 수 있나요?\u003C\u002Fh3>\n\u003Cp>네, Telegram Stars(내장) 또는 서드파티 결제 제공업체를 통해 가능합니다.\u003C\u002Fp>\n\u003Ch3 id=\"ton-kyc\">TON 결제를 받으려면 KYC가 필요한가요?\u003C\u002Fh3>\n\u003Cp>가맹점의 경우: 관할권과 거래량에 따라 다릅니다. 사용자의 경우: TON 지갑 생성에 KYC는 필요하지 않지만, 사용자가 TON을 구매하는 중앙화 거래소는 KYC를 시행합니다.\u003C\u002Fp>\n\u003Ch3 id=\"ton-ethereum\">결제에서 TON과 Ethereum의 차이점은?\u003C\u002Fh3>\n\u003Cp>TON은 더 낮은 수수료($0.01 vs Ethereum L1의 $0.50-5.00), 더 빠른 최종성(10초 vs 12-15분), 내장된 Telegram 배포를 제공합니다. Ethereum은 더 큰 DeFi 생태계, 더 많은 기관 채택, 더 강한 탈중앙화 보장을 가지고 있습니다.\u003C\u002Fp>\n\u003Ch3 id=\"\">분쟁과 차지백은 어떻게 처리하나요?\u003C\u002Fh3>\n\u003Cp>블록체인 결제는 되돌릴 수 없습니다 — 차지백이 없습니다. 자체 환불 및 분쟁 해결 시스템을 구현해야 합니다. 모범 사례: 가맹점 지갑으로 보내기 전에 분쟁 기간(24-72시간) 동안 에스크로 스마트 컨트랙트에 자금을 보유하세요.\u003C\u002Fp>\n","ko","b0000000-0000-0000-0000-000000000001",true,"2026-03-28T10:44:44.870026Z","2026년 TON 개발: Telegram Mini Apps에서 암호화폐 결제","TON Pay SDK를 Telegram Mini Apps에 통합하세요. 단계별 가이드: TON Connect 인증, Toncoin 및 Jetton 결제, 구독, 수익화 전략.","TON Pay SDK Telegram Mini Apps",null,"index, follow",[22,27,31],{"id":23,"name":24,"slug":25,"created_at":26},"c0000000-0000-0000-0000-000000000015","TON","ton","2026-03-28T10:44:21.513630Z",{"id":28,"name":29,"slug":30,"created_at":26},"c0000000-0000-0000-0000-000000000010","Telegram","telegram",{"id":32,"name":33,"slug":34,"created_at":26},"c0000000-0000-0000-0000-000000000009","Web3","web3","텔레그램",[37,44,50],{"id":38,"title":39,"slug":40,"excerpt":41,"locale":12,"category_name":42,"published_at":43},"d0000000-0000-0000-0000-000000000605","Ethereum 상호운용성 레이어: 55개 이상의 L2가 하나의 체인이 되는 방법","ethereum-sangho-unyongseong-layer-55-l2-hana-chain","Ethereum에는 55개 이상의 Layer 2 롤업이 있어 유동성과 사용자 경험이 파편화되어 있습니다. Ethereum 상호운용성 레이어 — 크로스 롤업 메시징, 공유 시퀀서, 베이스드 롤업을 결합하여 — 하나의 조합 가능한 네트워크로 통합하는 것을 목표로 합니다.","블록체인","2026-03-28T10:44:44.895917Z",{"id":45,"title":46,"slug":47,"excerpt":48,"locale":12,"category_name":42,"published_at":49},"d0000000-0000-0000-0000-000000000604","롤업을 넘어선 ZK 증명: Ethereum에서의 검증 가능한 AI 추론","rolleob-eul-neomeo-zk-jeungmyeong-ethereum-geomjeung-ai-churon","영지식 증명은 더 이상 단순한 스케일링 도구가 아닙니다. 2026년, zkML은 온체인에서 검증 가능한 AI 추론을 가능하게 하고, ZK 코프로세서는 무거운 연산을 오프체인으로 이동시키며 온체인에서 검증하고, SP1과 Jolt 같은 새로운 증명 시스템이 이를 실용적으로 만들고 있습니다.","2026-03-28T10:44:44.890168Z",{"id":51,"title":52,"slug":53,"excerpt":54,"locale":12,"category_name":42,"published_at":55},"d0000000-0000-0000-0000-000000000581","EIP-7702 실전 가이드: Pectra 이후 스마트 계정 플로우 구축","eip-7702-siljeon-gaideu-pectra-ihu-seumateu-gyejeong-peulro-guchuk","EIP-7702는 모든 Ethereum EOA가 단일 트랜잭션 내에서 스마트 컨트랙트로 임시 동작할 수 있게 합니다. 새로운 계정 추상화 프리미티브를 사용한 배치 트랜잭션, 가스 후원, 소셜 리커버리 구현 방법을 소개합니다.","2026-03-28T10:44:43.377765Z",{"id":13,"name":57,"slug":58,"bio":59,"photo_url":19,"linkedin":19,"role":60,"created_at":61,"updated_at":61},"Open Soft Team","open-soft-team","The engineering team at Open Soft, building premium software solutions from Bali, Indonesia.","Engineering Team","2026-03-28T08:31:22.226811Z"]