101pay.

連携ドキュメント

101payプラットフォームのREST API

← ダッシュボード

概要

101pay APIはJSON REST APIです。すべてのリクエストとレスポンスは次の形式を使用します application/json. ベースURL:

https://api-production-4983.up.railway.app

認証

APIはエンドポイントに応じて3種類の認証情報を受け付けます:

1 · APIキーペア — Charge API用

公開鍵(pk_test_…)と秘密鍵(sk_test_…)。鍵管理で生成します。2つの鍵が一致するペアを形成したときのみ取引が決済されます。ペアはリクエストボディで渡します。

2 · セッショントークン(JWT) — アカウント・管理エンドポイント用

次のエンドポイントからトークンを取得し POST /v1/auth/login Authorization: Bearer <token> として送信します。チェックアウトセッション作成、鍵管理、取引明細、KYC、決済方法に使用します。

3 · 加盟店APIキー — x402決済履歴用

サインアップ時に一度のみ表示(ap_test_…)。次のエンドポイントに Authorization: Bearer <apiKey> として送信します GET /v1/payments.

クイックスタート

  • 1 — ダッシュボードでアカウントを作成(または POST /v1/auth/register)。
  • 2 — 鍵管理を開いて鍵ペアを生成。秘密鍵を保管してください。
  • 3 — Charge API(下記)で最初の取引を決済。

Charge API

鍵ペアで取引を決済します。ヘッダー認証は不要 — ペアはボディで送信されます。

POST /v1/transactions/charge

リクエストボディ

  • publicKey — 文字列、必須
  • privateKey — 文字列、必須
  • amount — 小数文字列、必須(例: "9.99"
  • currency USDC · USDT · JPY · USD (既定値 USDC
  • description — 文字列、任意
curl -X POST https://api-production-4983.up.railway.app/v1/transactions/charge \
  -H "content-type: application/json" \
  -d '{
    "publicKey":  "pk_test_…",
    "privateKey": "sk_test_…",
    "amount":     "9.99",
    "currency":   "USD",
    "description":"order #1024"
  }'

レスポンス 200

{
  "orderNo":     "20260517000000042",
  "transaction": "0x…",
  "amount":      "999",
  "currency":    "USD",
  "status":      "settled"
}

ペアが一致しない場合は次を返します 401 key_pair_invalid amount はマイナー単位で返されます(リファレンス参照)。

ホスト型チェックアウト

チェックアウトセッションを作成し、顧客をホスト型のurlへ誘導します。顧客は暗号資産の決済方法(USDC、BTC、ETH、…)を選び、ホストページ上の requires_action → confirm フローで支払います。

POST /v1/checkout/sessions · Bearer JWT
curl -X POST https://api-production-4983.up.railway.app/v1/checkout/sessions \
  -H "authorization: Bearer <JWT>" \
  -H "content-type: application/json" \
  -d '{ "amount":"1500", "currency":"JPY", "description":"Pro plan" }'

# → { "session": { "id": "…", "status": "open", … }, "url": "https://…/checkout/<id>" }
GET /v1/checkout/sessions/:id · 公開 — セッション状態をポーリング
POST /v1/checkout/sessions/:id/pay/intent · 公開 — ボディ { method } → 支払い手順
POST /v1/checkout/sessions/:id/pay/confirm · 公開 — ボディ { paymentId } → 決済

本番ではconfirmステップは決済プロバイダのWebhookで駆動されます。ホストページがこれを代行します。

USDT 決済

TRONネットワーク(TRC20)でUSDTを受け取ります。プラットフォームはノンカストディアル — 資金はあなた自身の受取アドレスに直接着金します。

1 · 受取口座を設定

ダッシュボードで「受取口座」を開き、USDT-TRC20アドレスを追加します。あなたのアカウントのUSDT決済はすべてそこに着金します。

2 · 決済を作成

サーバーからClient IDとシークレットキー(Keysページの秘密鍵のひとつ)で以下のエンドポイントを呼び出します。不一致の場合は401を返します。

POST /v1/payments

リクエストボディ

  • clientId 15桁のClient ID
  • secret キーペアの秘密鍵 (sk_test_…)
  • amount 小数文字列、例: "1.00"
  • currency 請求通貨 — USDC · USDT
  • method 決済レール — usdt
curl -X POST https://api-production-4983.up.railway.app/v1/payments \
  -H "content-type: application/json" \
  -d '{
    "clientId": "101000000000000",
    "secret":   "sk_test_…",
    "amount":   "1.00",
    "currency": "USDT",
    "method":   "usdt"
  }'

レスポンス

レスポンスはcryptoPayLinkを返します — 顧客を誘導するホスト型チェックアウトURLです。

{
  "success": true,
  "payment": { "id": "…", "status": "open", "amount": "1.00", "currency": "USDT", "method": "usdt" },
  "cryptoPayLink": "https://…/en/checkout/<id>"
}

3 · 顧客が支払う

顧客はcryptoPayLinkを開き、USDTを選び、受取アドレスと正確な金額が表示されます。オンチェーン送金がTronGridで確認されると、注文は支払い済みになります。

金額にはオンチェーンで照合するための一意のサブセント接尾辞が付きます。顧客は正確にその金額を送金し、確認されるまでチェックアウトページを開いたままにする必要があります。

エージェント決済(x402)

x402プロトコルで任意のリソースに価格を付与し、AIエージェントがリクエストごとに支払えるようにします。

GET /v1/resource/:sku?merchant=<merchantId>

X-PAYMENTヘッダーがない場合、エンドポイントはPaymentRequirements付きで402を返します。エージェントはEIP-3009認可に署名し、X-PAYMENTヘッダー付きで再試行します。ファシリテーターが検証・決済し、リソースが返されます。決済履歴: GET /v1/payments (加盟店APIキー)。

リファレンス

通貨

  • USDC — 小数6桁 · USD — 小数2桁 · JPY — 小数0桁
  • レスポンスの金額は整数のマイナー単位です(例:USD「999」= $9.99、JPY「1500」= ¥1500)。

決済方法

  • usdc · btc · eth · usdt · bnb · sol · ada · xrp · doge · dot
  • すべての方法は暗号資産レール — 顧客は入金アドレスへ送金します。

注文番号

すべての取引に一意の17桁の注文番号が付与されます:取引日の8桁(YYYYMMDD)+ 9桁のシーケンス — 例: 20260517000000042

エラー

エラーはJSONボディと対応するHTTPステータスを返します:

{ "error": "key_pair_invalid", "message": "the public key and private key do not form a valid pair" }
  • 400 invalid_request · 401 unauthorized · 402 payment_rejected
  • 404 not_found · 409 conflict · 500 internal_error

このドキュメントはログイン済みの加盟店のみに表示されます。