メインコンテンツへスキップ

概要

トークンを使用すると、自社の決済フォームでカード情報を安全に収集できます。カードデータはJavaScript SDKと公開キーを使用してブラウザ上でトークン化されるため、生のカード番号がサーバーに送信されることはありません。

トークン作成

POST /v1/tokens 認証: 公開キー(pk_test_* / pk_live_*)をBearerトークンとして使用
このエンドポイントは fetch やその他のHTTPクライアントから直接呼び出せます。JavaScript SDK はオプションです。クライアントサイドのバリデーションやシンプルなAPIを提供しますが、必須ではありません。

リクエストパラメータ

card
object
必須
カード情報オブジェクト

レスポンス

id
string
トークンID(tok_ プレフィックス)。有効期限30分、1回のみ使用可能。
card
object
マスクされたカード情報
connector_id
string
トークン化に使用されたコネクタID
created_at
string
作成日時(ISO 8601形式)
expires_at
string
有効期限(ISO 8601形式)。作成から30分後。
curl -X POST https://api.sandbox.zafapay.com/v1/tokens \
  -H "Authorization: Bearer pk_test_xxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "card": {
      "number": "4242424242424242",
      "exp_month": 12,
      "exp_year": 2027,
      "cvc": "123",
      "cardholder_name": "John Doe"
    }
  }'
{
  "id": "tok_xxxxxxxxxxxxxxxxxxxxxx",
  "card": {
    "bin": "424242",
    "last4": "4242",
    "brand": "visa",
    "exp_month": 12,
    "exp_year": 2027
  },
  "connector_id": "conn_xxx",
  "created_at": "2026-04-07T10:30:00.000Z",
  "expires_at": "2026-04-07T11:00:00.000Z"
}

トークンエラー

コードHTTPステータス説明
validation_error400カード情報が不正(番号、有効期限、CVC)
tokenization_failed400カードデータのトークン化に失敗
payment_token_expired400トークンの有効期限切れ(30分制限)
payment_token_already_used400トークンは既に決済に使用済み

トークンを使った決済

トークン作成後、POST /v1/payments に渡します:
{
  "amount": 10.00,
  "currency": "usd",
  "token": "tok_xxxxxxxxxxxxxxxxxxxxxx",
  "return_url": "https://your-site.com/complete"
}
完全な統合ガイドはサーバー間決済 (S2S)をご覧ください。

JavaScript SDK

JavaScript SDKはオプションの便利なラッパーで、クライアントサイドのカードバリデーションとシンプルなAPIを提供します。
<script src="https://js.zafapay.com/v1/zafapay.js"></script>
const zafapay = Zafapay('pk_test_xxxxx');

const { token, card, expires_at } = await zafapay.createToken({
  number: '4242424242424242',
  exp_month: 12,
  exp_year: 2027,
  cvc: '123',
  cardholder_name: 'John Doe'
});
// token: "tok_xxxxxxxxxxxxxxxxxxxxxx"
// card: { bin, last4, brand, exp_month, exp_year }
SDKはトークンIDを token として返します(APIレスポンスのフィールド名は id ですが、SDKが便宜上リネームしています)。