PAY.JP
PAY.JP

メタデータ

各種リソースに任意のデータを保存できるメタデータ機能の使い方

メタデータとは

メタデータは PAY.JP の各種リソース(支払い、顧客、商品など)に任意のデータをキーバリュー形式で保存できる機能です。 自社システムの ID や EC サイトの注文情報を PAY.JP のオブジェクトと紐づけるなど、柔軟な用途で利用できます。

基本的な使い方

メタデータは JSON オブジェクトとして各リソースの metadata フィールドに設定します。

データ型

メタデータの値としては JSON として扱える以下のデータ型がサポートされています

  • 文字列(string)
  • 整数(integer)
  • 真偽値(boolean)

配列やネストされたオブジェクトは使用できません。

制約事項

メタデータには以下の制約があります。

項目制約
キー1つのキーあたり最大40文字
1つの値あたり最大500文字(文字列の場合)
キー数1つのオブジェクトあたり最大20個

使用方法

メタデータの作成

各種リソースの作成時に、 metadata キーにオブジェクトとして指定することでメタデータを設定できます。

以下は Checkout Session を作成する際にメタデータを設定する例です。

curl https://api.pay.jp/v2/checkout/sessions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "success_url": "https://example.com/success",
    "line_items": [
      {
        "price": "price_xxxxx",
        "quantity": 1
      }
    ],
    "mode": "payment",
    "metadata": {
      "order_id": "order_12345",
      "campaign": "summer_sale",
      "quantity": 3,
      "is_gift": true
    }
  }'

メタデータの取得

メタデータをセットしたリソースを取得すると、セットしたメタデータがレスポンスに含まれています。

{
  "id": "cs_xxxxxxxxxxxxx",
  "object": "checkout.session",
  "metadata": { 
    "order_id": "order_12345",
    "campaign": "summer_sale",
    "quantity": 3,
    "is_gift": true
  },
  ...
}

メタデータの更新

メタデータを更新する場合、既存のキーに対して新しい値を送信すると、設定済みの値が上書きされます。既存のキーを指定しなかった場合はそのまま保持されます。

以下の場合、既存のメタデータは保持されたまま、新しいキー(total_orders, is_vip)が追加されます。

# 新しいキーを追加
curl https://api.pay.jp/v2/customers/cus_xxxxx \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "metadata": {
      "total_orders": 5,
      "is_vip": true
    }
  }'

メタデータの削除

特定のキーを削除するには、そのキーに空の値を送信します。

curl https://api.pay.jp/v2/customers/cus_xxxxx \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "metadata": {
      "campaign": "",
    }
  }'

メタデータの間接的な設定

Checkout Session 作成時に引数として payment_flow_data.metadata または setup_flow_data.metadata を指定すると、 Payment Flow または Setup Flow が生成される際に、そのデータがリソースのメタデータとして自動的に引き継がれます。