0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AI Agentの決済プロトコルAP2を試してみた

0
Posted at

はじめに

AI Agent(以下、Agent)の普及によって、Eコマースにおいては単に商品を探すだけでなく、ユーザーに代わって購入や決済まで行う未来が現実味を帯びてきています。このようなAgentic Commerceの世界においては、「Agentはどのように決済を行い、ユーザーの購入意思をどのように証明するのか」が極めて重要となります。

今回は、Googleが公開している Agent Payments Protocol(AP2) のサンプルコードを実際に動かし、その仕組みを確認してみました。

Agent Payments Protocol(AP2)とは

AP2は、Agentがユーザーに代わって決済する際の認可や証跡を扱うオープンプロトコルです。
単にAgentから決済APIを呼び出すだけではなく、以下の情報を改ざん防止・検証可能な形で扱います。

  • 誰が購入を許可したのか
  • 何を購入するのか
  • いくら支払うのか
    といった情報をAP2では、**Mandate(マンデート/認可情報)**と呼ばれるデータ構造で保持・管理します
User
 ↓
Agent
 ↓
Checkout
 ↓
Mandate
 ↓
Payment

補足
AP2自体が決済サービスを提供するわけではなく、クレジットカード決済やx402といった既存の決済手段と組み合わせて利用する設計

AP2の基本的な流れ

AP2では、主に Checkout MandatePayment Mandate の2つの認可情報を使用します。

User
 ↓
Shopping Agent
 ↓
Merchant
 ↓
Checkout
 ↓
Checkout Mandate
 ↓
Payment Mandate
 ↓
Payment
  • Checkout Mandate: 購入する商品やその条件を表す
  • Payment Mandate: その購入に対する支払いの認可を表す

これらを組み合わせることで、何を購入し、その支払いを誰が認可したのかを客観的に検証できるようになる。

利用環境

今回はAP2公式リポジトリにあるPythonのサンプルを利用する。

動作環境・必要なツール

  • Python 3.11以上
  • uv
  • Google API Key

事前準備

git clone https://github.com/google-agentic-commerce/AP2.git
cd AP2
uv sync
export GOOGLE_API_KEY="YOUR_API_KEY"

ツールおよびAPIキーの取得手順は以下を参照してください

サンプルを動かす

AP2にはユーザー不在で自動決済するシナリオ(Human-not-present / Autonomous)も用意されていますが、今回は基本となるユーザーがその場で確認・認可する(Human Present)のクレジットカード決済シナリオを動かしてみます。

bash code/samples/python/scenarios/a2a/human-present/cards/run.sh

実行すると、以下のようにローカルテスト用のURLが表示されるため、指定のポートへアクセスします。

$ bash code/samples/python/scenarios/a2a/human-present/cards/run.sh
Setting up the Python virtual environment...
Virtual environment activated.
Installing project in editable mode...

~中略~

INFO:     Started server process [36541]
INFO:     Waiting for application startup.

+-----------------------------------------------------------------------------+
| ADK Web Server started                                                      |
|                                                                             |
| For local testing, access at http://0.0.0.0:8000.                         |
+-----------------------------------------------------------------------------+

INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)

・・・

ブラウザからShopping Agentの画面にアクセスする

image.png

Agentの動き

1.商品選択〜カートに追加

ユーザーが「コーヒーメーカーが欲しい」といった要望を入力すると、root_agentが起動します。続いてshopperAgentが起動し、予算などを考慮して該当する商品を検索・提案します。
image.png
image.png

2.配送先・支払い方法設定

shipping_address_collectorpayment_method_collectorによって配送先情報と支払い方法の収集・設定が行われます。
image.png
image.png

3.Mandateの生成・保存

今回の例では、商品と合計金額が8,980円、支払い方法としてAMEXの下四桁4444のカードが選択されている(注:デモ用のダミーデータ)。
image.png

ADK(Agent Development Kit)のTraceを確認すると、決済処理の裏側で Mandate がどのように生成・受け渡されているかを追跡できます。

image.png

一連の呼び出しの流れは以下の通りです
1.create_checkout_mandateが実行され、購入内容に対するCheckout Mandateを生成
2.create_payment_mandateが実行され、支払いに関するPayment Mandateを生成
3.send_signed_mandates_to_credentials_providerによって署名付きのMandateがCredentials Providerへ送信
4.最終的にinitiate_paymentを実行して最終的な決済処理を開始

State を確認すると、認可情報として payment_mandate_sdjwt が生成されていることがわかります。
image.png

SD-JWTについて
AP2では認可情報(Mandate)のデータ表現に SD-JWT(Selective Disclosure JWT)を採用しています。これにより、ユーザーのプライバシーに配慮しつつ、必要な検証機関(決済事業者など)に対して必要な情報のみを選択的に開示・検証させることが可能になります。

Payment Mandateには、取引ID、支払先、支払金額・通貨、支払い手段など、今回の支払いを特定するための情報が含まれている。

payment_mandate_sdjwtの中身(SD-JWTデコード)

{
  "vct": "mandate.payment.1",
  "transaction_id": "R1cKwn3W6I5BCh6o2Qb2ywX8sE9vSPQB8rZ_FsnBNgM",
  "payee": {
    "id": "merchant_1",
    "name": "Generic Merchant",
    "website": "https://demo-merchant.example"
  },
  "payment_amount": {
    "amount": 898000,
    "currency": "JPY"
  },
  "payment_instrument": {
    "id": "stub",
    "type": "card",
    "description": "Card ••••2424"
  },
  "iat": 1789946958,
  "exp": 1789950558
}
  • transaction_id: この取引を一意に識別するID
  • payee: 誰に支払うかを表す支払先(加盟店)情報
  • payment_amount: いくら支払うかを表す金額と通貨
  • payment_instrument: どの支払い方法(クレジットカードの種類など)を使うか

4.認証・決済

OTP(ワンタイムパスワード)認証などを経て、最終的な支払いが実行されます。
image.png

ポイント

1.AP2対応の明示(Agent Card等による宣言)

Merchant Agent や Credentials Provider がプロトコルレベルでAP2に対応していることを、Agent Card 等を通じて相互に宣言・確認します。

2.証明可能な認可情報(Mandate)の安全な授受

Agentは単に「この商品を購入します」というリクエストを送るのではなく、「誰に・いくら・どの手段で支払うか」を明記し、電子署名されたMandateを安全に受渡します。

3.改ざん耐性と安全な決済実行

決済事業者や Credentials Provider は、渡されたMandateの署名と内容を検証したうえで、必要なユーザー認証(OTP等)を経て安全に決済を完了します。

まとめ

今回は、Googleが公開している Agent Payments Protocol(AP2) のサンプルコードを通じて、Agentic Commerceの決済メカニズムを確認しました。
AP2では、Checkout Mandate と Payment Mandate を組み合わせることで、Agent主導の購入・決済に対して「確実な合意形成」と「検証可能性」をもたらしています。
AI Agentの役割が「情報の検索・提案」から「操作の代行・決済」へと進化する中で、「Agentにどこまでの権限を委任し、その操作の正当性をいかに証明するか」 は業界全体の大きなテーマです。AP2は、これからのAgentic Commerce時代を支える標準プロトコルの有力な候補として、非常に参考になるプロトコルと言えます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?