開発者/はじめに

CardV Merchant API

CardVは、ギフトカード、ゲームのチャージ、eSIMなどのプリペイド型デジタル商品を法人向けに販売しています。Merchant APIを使うと、貴社のサーバーからこれらの商品を自動で購入できます。残高の確認、商品の検索、価格の確認、注文、コードの受け取りまでをAPIで行えます。代金は、CardVに前払いでチャージしたウォレットから支払われます。入金や注文履歴の確認など、それ以外の操作はMerchant Portal(管理画面)で行います。

#ドキュメント一覧

ドキュメント内容
認証リクエストヘッダー、注文の署名、APIキーの設定
商品と注文残高、商品、価格、注文、コード
共通ルール金額、日時、ID、レート制限、エラー
Webhook貴社サーバーに届く注文の通知
Sandboxテスト方法と本番開始前のチェックリスト
セキュリティAPIキーとコードの守り方

#環境

LiveSandbox
APIのベースURLhttps://b2b.cardv.net/api/v1https://sandbox.cardv.net/api/v1
Merchant Portalhttps://b2b.cardv.net/portal/同じPortalで Sandbox に切り替え

Sandboxは、テスト用の資金で動くCardVの独立したテスト環境です。APIキー、残高、注文、商品IDは環境ごとに別々です。

#クイックスタート

  1. 申し込み:Portalでマーチャントアカウントを申し込み、メールアドレスを確認します。

  2. 審査を待つ:CardVが貴社の事業内容を審査します。承認されると、M00000001 のようなMerchant IDが発行されます。

  3. Sandboxを開く:Portalにサインインし、画面上部で Sandbox を選びます。テスト用の資金として1,000 USDが入っています。

  4. APIキーを作成する:Portalで Integrations → API keys を開きます。キーを作成し、CardVからメールで届く確認コードを入力してキーを表示します。表示したキーはシークレット管理ツールに保存してください。

  5. 残高を確認する:

    Shell
    export CARDV_BASE=https://sandbox.cardv.net
    export CARDV_MERCHANT_ID=M00000001     # yours
    export CARDV_API_KEY=cvb2b_...         # from your secret store
    AUTH=(-H "X-Merchant-Id: $CARDV_MERCHANT_ID" -H "X-Api-Key: $CARDV_API_KEY")
    
    curl -sS "$CARDV_BASE/api/v1/balance" "${AUTH[@]}"
  6. 商品を探す:

    Shell
    curl -sS "$CARDV_BASE/api/v1/skus?search=steam&limit=20" "${AUTH[@]}"

    "availability": "available" の商品を選び、その sku_id を控えておきます。

  7. 価格を確認する:

    Shell
    curl -sS "$CARDV_BASE/api/v1/skus/S000001/quote?quantity=1" "${AUTH[@]}"

    merchant_price を控えておきます。これが1個あたりの購入価格です。

  8. 注文する:この呼び出しには署名が必要です。認証のサンプルコードに、次のリクエスト本文を入れて送信します。

    JSON
    {
      "external_order_id": "TEST-0001",
      "items": [
        {"sku_id": "S000001", "quantity": 1, "expected_unit_price": "9.2500"}
      ]
    }

    成功するとHTTP 201が返り、O-00001234 のようなCardVの注文IDが発行されます。

  9. コードを受け取る:ステータスが succeeded になるまで GET/api/v1/orders/O-00001234 を呼び出します。コードは items[].deliveries[].display_fields に入っています。注文の完了はWebhookで受け取ることもできます。

  10. 本番を開始する:Sandboxのチェックリストをすべて終えてから、本番に切り替えます。

上記のIDと価格は例です。実際には、貴社のカタログで返される値を使ってください。

#APIの概要

エンドポイントは7つです。パスはすべて /api/v1 から始まります。

エンドポイント用途署名
GET/account会社情報とAPIの利用状況不要
GET/balance使える残高不要
GET/skus購入できる商品の一覧(貴社の価格付き)不要
GET/skus/{sku_id}1つの商品の詳細不要
GET/skus/{sku_id}/quote指定した数量での現在の価格不要
POST/orders注文(ウォレットから支払い)必要
GET/orders/{order_id}注文のステータスとコード不要

これ以外のエンドポイントをAPIキーで呼び出すと、HTTP 403が返ります。

JSON
{"detail": "This operation is only available in the Merchant Portal."}

携帯電話のチャージ(通話料のチャージ)はAPIでは利用できません。

#ID

種類例補足
Merchant IDM00000001貴社のIDです。変わることはありません。
SKU(購入できる商品)S000456価格の確認と注文に使います。
CardVの注文IDO-00001234自社の注文と一緒に保存してください。
自社の注文番号SHOP-10001貴社が自由に決める番号です(external_order_id)。

IDは文字列として保存し、中身を解析しないでください。詳しくは共通ルールをご覧ください。

#Merchant Portalで行う操作

  • ウォレットへの入金と、残高が少なくなったときのメール通知
  • 注文履歴の確認、検索、CSVの書き出し
  • 注文の請求書
  • ウォレットの取引履歴と照合
  • Webhookの設定、送信履歴、再送
  • APIキー
  • IP許可リスト
  • チームメンバーと権限
  • 監査ログ
  • 2段階認証(2FA)
  • LiveとSandboxの切り替え

#互換性とサポート

レスポンスのフィールドやステータスの値は、予告なく追加されることがあります。知らないフィールドは無視してください。知らない注文ステータスは「まだ完了していない」ものとして扱ってください。エラーメッセージの文言には依存しないでください。

お問い合わせは [email protected] まで、Merchant ID、環境、注文ID、日時(UTC)、HTTPステータスを添えてご連絡ください。APIキー、署名、Webhookのシークレット、カードのコードは絶対に送らないでください。

連携についてご不明な点は、Merchant ID と注文 ID またはリクエスト ID を添えて [email protected] までお問い合わせください。