概要
EC-CUBE 本体のエージェントコマース対応のうち、UCP (Universal Commerce Protocol) checkout における決済ハンドラの公開された参考実装 (mock) を本サンプルプラグインに用意する。
本体 (EC-CUBE/ec-cube) 側では、エージェント経由のチェックアウトをセッション/フォームに依存しない形で処理する基盤を実装しており、決済の具象は決済プラグイン側に置く設計になっている。本サンプルプラグインはダミーゲートウェイを持つため、実 PSP に依存しない UCP 決済ハンドラの参考実装 として最適。
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 非依存 (UCP インバウンド認証は本体側で RFC 9421 署名により処理。決済ハンドラは認証と無関係)。
本体側の前提インターフェイス
やること
スコープ外
実 PSP との接続・本番決済 (本 issue は mock 参考実装に限定)
特定 PSP の内部仕様 (公開可能な汎用 mock のみ扱う)
概要
EC-CUBE 本体のエージェントコマース対応のうち、UCP (Universal Commerce Protocol) checkout における決済ハンドラの公開された参考実装 (mock) を本サンプルプラグインに用意する。
本体 (EC-CUBE/ec-cube) 側では、エージェント経由のチェックアウトをセッション/フォームに依存しない形で処理する基盤を実装しており、決済の具象は決済プラグイン側に置く設計になっている。本サンプルプラグインはダミーゲートウェイを持つため、実 PSP に依存しない UCP 決済ハンドラの参考実装として最適。
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 対応ブランチ上で行う。設計方針
PaymentMethodInterfaceフロー (verify()/apply()/checkout()+ form/twig/session/redirect) を使わない。本体はEccube\Service\AgentCommerce\AgentCheckoutPurchaseFlowAdapter経由でCart→Order→ shopping flow を再利用する。CreditCardクラスを流用するのではなく、エージェント用ハンドラを新設し、既存の足回り (ダミーゲートウェイ・Config・OrderTrait・PaymentStatus遷移・PurchaseFlowcommit/rollback) を共有する。本体側の前提インターフェイス
Eccube\Service\AgentCommerce\Payment\AgentCheckoutPaymentHandlerInterface(authorize()/capture()/supports()) — ACP/UCP 共通基盤: エージェントコマース向け CheckoutSession・マッピング層の整備 ec-cube#6777 Phase 1b (PR #6825) で実装済。UcpPaymentHandlerInterface(token exchange 相当のexchangePaymentToken()を追加) — 本体 ユニバーサル コマース プロトコル(UCP)の対応 ec-cube#6574 で定義予定。やること
UcpPaymentHandlerInterfaceを実装する mock ハンドラを追加 (token exchange を擬似実行 → authorize/capture →PaymentStatus遷移 →PurchaseFlow::commit()、失敗時 rollback)payment_handlers(逆ドメイン名キーのレジストリ) へ寄与Configにエージェント決済用のダミー設定 (エンドポイント/キー等) を必要に応じて追加OrderTraitに UCP 決済トークン/認可 ID 等の保持フィールドを必要に応じて追加スコープ外