EC-CUBE / EC-CUBE/sample-payment-plugin
ACP checkout 向け決済ハンドラの参考実装 (mock)
- Dominant language
- PHP
- Stars
- 32
- Forks
- 14
- PR merge metrics
- No merged PRs in 30d
Description
## 概要
EC-CUBE 本体のエージェントコマース対応のうち、**ACP (Agentic Commerce Protocol) checkout** における決済ハンドラの**公開された参考実装 (mock)** を本サンプルプラグインに用意する。
本サンプルプラグインはダミーゲートウェイを持つため、実 PSP に依存しない **ACP 決済ハンドラの参考実装**として最適。
- 本体トラッキング: EC-CUBE/ec-cube#6776 (ACP checkout) / 共通基盤 EC-CUBE/ec-cube#6777
- 関連 (UCP 版): #51
> [!NOTE]
> **前提: 本サンプルプラグインの EC-CUBE 4.4 (Symfony 7 / PHP 8.2+ / Doctrine ORM 3 / attribute マッピング) 対応が必要。**
> 現状の `support-4.3` ブランチはアノテーションマッピング (`@ORM\...`) で、Doctrine ORM 3.x (`doctrine/annotations` 非同梱) の 4.4 ではエンティティをロードできない。4.4 対応は別途予定のため、本 issue の実装は 4.4 対応ブランチ上で行う。
## 設計方針
- エージェント決済は web の `PaymentMethodInterface` フロー (`verify()`/`apply()`/`checkout()` + form/twig/session/redirect) を**使わない**。本体は `Eccube\Service\AgentCommerce\AgentCheckoutPurchaseFlowAdapter` 経由で `Cart` → `Order` → shopping flow を再利用する。
- 既存の `CreditCard` クラスを流用するのではなく、**エージェント用ハンドラを新設**し、既存の足回り (ダミーゲートウェイ・`Config`・`OrderTrait`・`PaymentStatus` 遷移・`PurchaseFlow` commit/rollback) を共有する。
- 実 PSP SDK 不要 (mock)。**eccube-api4 非依存** (ACP インバウンド認証は本体側で処理。決済ハンドラは認証と無関係)。
## 本体側の前提インターフェイス
- 共通基底 `Eccube\Service\AgentCommerce\Payment\AgentCheckoutPaymentHandlerInterface` (`authorize()` / `capture()` / `supports()`) — EC-CUBE/ec-cube#6777 Phase 1b (PR #6825) で実装済。
- ACP 派生インターフェイス `AcpPaymentHandlerInterface` (Shared Payment Token の償還相当のメソッドを追加) — 本体 EC-CUBE/ec-cube#6776 で定義予定。
## やること
- [ ] (前提) 本プラグインの EC-CUBE 4.4 対応ブランチ上で作業する
- [ ] `AcpPaymentHandlerInterface` を実装する **mock ハンドラ**を追加 (Shared Payment Token を擬似償還 → authorize/capture → `PaymentStatus` 遷移 → `PurchaseFlow::commit()`、失敗時 rollback)
- [ ] tagged service として登録 (本体のハンドラ収集口に乗せる)
- [ ] `Config` にエージェント決済用のダミー設定を必要に応じて追加
- [ ] `OrderTrait` に ACP 決済トークン/認可 ID 等の保持フィールドを必要に応じて追加
- [ ] mock ハンドラの単体テスト (authorize/capture 成功・失敗、在庫超過等のビジネス系結果)
- [ ] (4.4 対応後) E2E テスト
## スコープ外
- 実 PSP との接続・本番決済 (本 issue は mock 参考実装に限定)
- 特定 PSP の内部仕様や非公開スキーマ (公開可能な汎用 mock のみ扱う)
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.