> ## Documentation Index
> Fetch the complete documentation index at: https://docs.zafapay.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 暗号資産決済

> ホスト型チェックアウトでUSDC決済を受け付ける方法

## 概要

暗号資産決済は**ホスト型チェックアウト**で **USDC** を受け付けます。APIで決済を作成後、顧客を `payment_url` にリダイレクトします。チェックアウトページには専用の入金アドレス（QRコード付き）が表示され、顧客がそこへUSDCを送金すると、オンチェーンで入金が確認され次第、決済が自動的に完了します。

<Info>
  各決済ごとに使い切りの入金アドレスが発行されます。金額は決済通貨（例: USD）で提示され、顧客はそれに相当する額のUSDCで支払います。
</Info>

## 決済フロー

<Steps>
  <Step title="決済作成">
    `POST /v1/payments` を呼び出して決済を作成し、`payment_url` を取得
  </Step>

  <Step title="顧客をリダイレクト">
    顧客を `payment_url` にリダイレクト
  </Step>

  <Step title="顧客がUSDCを送金">
    顧客がチェックアウトページに表示された入金アドレスへUSDCを送金
  </Step>

  <Step title="オンチェーン確認">
    入金が検知され、オンチェーンで確認されます（通常1分以内）
  </Step>

  <Step title="完了">
    決済ステータスが `succeeded` になり、Webhookが送信されます
  </Step>
</Steps>

## 実装例

```javascript theme={null}
// 1. APIで決済を作成
const response = await fetch('https://api.sandbox.zafapay.com/v1/payments', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    amount: 100,
    currency: 'usd',
    external_id: 'order_12345'
  })
});

const payment = await response.json();

// 2. 顧客をホスト型チェックアウトページ（入金アドレス + QR）にリダイレクト
window.location.href = payment.payment_url;
```

### 暗号資産フローへの振り分け

暗号資産決済は、アカウントに割り当てられた決済フローを通じて提供されます。暗号資産がデフォルトフローの場合、追加のパラメータは不要です。複数の決済方法を利用している場合は、`flow_id` に暗号資産フローを指定して決済を暗号資産に振り分けます：

```json theme={null}
{
  "amount": 100,
  "currency": "usd",
  "flow_id": "flow_xxxxxxxx"
}
```

## Webhook連携

顧客はオンチェーンで支払うため、決済は非同期で完了します。確実に結果を確認するためWebhookを設定してください：

```javascript theme={null}
// Webhookハンドラー
app.post('/webhooks/zafapay', async (req, res) => {
  const { event, external_id } = req.body;

  if (event === 'payment.succeeded') {
    // 注文ステータスを更新
    await updateOrder(external_id, 'paid');
  }

  res.json({ received: true });
});
```

<Note>
  顧客が請求額より少ない額を送金した場合、決済は `succeeded` として完了しません。過少入金の扱いはアカウント設定に従います。部分入金の照合が必要な場合はサポートにお問い合わせください。
</Note>

<Info>
  APIパラメータとレスポンスの詳細は、[決済作成](/api-reference/payments/create-payment) APIリファレンスをご覧ください。
</Info>
