★★★★★
#결제·광고 · claude-code
Toss Payments + 에스크로 구현
프로젝트: {{appName}}
#Toss Payments#결제#escrow#Cloud Functions
변수 4개 — 여기 채우면 아래 프롬프트에 바로 들어가요
프로젝트: {{appName}}
Toss Client Key: {{tossClientKey}}
Toss Payments로 결제 + 에스크로를 구현해야 해 (buildit 패턴).
단계:
1. Toss 개발자 콘솔에서 Client Key + Secret Key 발급
2. 결제 요청 (클라이언트):
```typescript
const { requestPayment } = await import('@toss/payment-sdk');
const result = await requestPayment({
clientKey: '{{tossClientKey}}',
method: 'CARD',
amount: totalPrice,
orderId: '{{orderId}}',
orderName: '{{orderName}}',
successUrl: '/success',
failUrl: '/fail',
});
```
3. 결제 승인 (서버 — Cloud Function):
```typescript
const axios = require('axios');
exports.confirmTossPayment = onCall(async (request) => {
const { paymentKey, orderId, amount } = request.data;
const response = await axios.post(
'https://api.toss.im/v1/payments/{{paymentKey}}/confirm',
{ orderId, amount },
{ auth: { username: TOSS_SECRET_KEY, password: '' } }
);
// Firestore에 주문 저장
await admin.firestore().collection('orders').doc(orderId).set({
status: 'completed',
amount,
timestamp: admin.firestore.FieldValue.serverTimestamp(),
});
return response.data;
});
```
4. 에스크로 (선택):
- Toss Console → 에스크로 설정 → "배송완료/구매확정" 자동화
- Firestore에 shipment 상태 추가
검증: 테스트 카드 번호로 결제 → Toss Console에서 거래 확인
쓰는 법 — 위 칸에 본인 값을 채우면 아래 프롬프트에 바로 반영돼요. 복사 버튼을 누르면 채워진 그대로 클립보드에 담기니까, claude-code(또는 본인이 쓰는 AI)에 붙여넣기만 하면 됩니다. 변수가 없으면 그냥 복사해서 쓰세요.

