OpenCart 4.1にJPYC決済を組み込む — CIHPAY決済プラグイン開発ログ(Polygon/EIP-3009ガスレス)

OpenCart 4.1にJPYC決済を組み込む — CIHPAY決済プラグイン

CIH合同会社が開発する暗号資産決済ゲートウェイ「CIHPAY」を、OpenCart 4.1系のECサイトに組み込むための決済プラグインを実装した。本稿はその開発ログである。JPYC(日本円ステーブルコイン)をPolygonネットワーク上で、しかもガス代不要(EIP-3009 transferWithAuthorization)で受け取れるのが特徴だ。

アーキテクチャ:ゲートウェイ本体+カート連携プラグイン

CIHPAYは2層構成になっている。決済処理の本体(ウォレット接続・EIP-3009署名・リレー送金・コールバック)は cih-pay.com/pay/ に1つだけ置く「ゲートウェイ本体」。各ECカート(OpenCart / EC-CUBE / WooCommerce / Welcart)側には、署名付きURLを生成してゲートウェイへリダイレクトし、Webhookで入金を受け取るだけの軽量な「連携プラグイン」を置く。ショップは shops.jsonshop_id で引き分けるため、本体は1つのまま、カートが増えても1行追加するだけで対応できる。

決済フローの契約(GET+HMAC)

OpenCartの「注文を確定する」で、プラグインは注文金額を整数JPY(JPYC 1:1)に換算し、次のGETリクエストでゲートウェイの入口へリダイレクトする。

GET https://cih-pay.com/pay/index.php
    ?shop_id&order_id&amount&return_url&nonce&mode&masscon_address&hmac

HMAC = hash_hmac('sha256',
   "shop_id|order_id|amount|return_url|nonce|mode|masscon_address",
   shop_secret)

shop_secret(64桁hex)はCIH-Webが発行する共有秘密鍵で、改ざん防止のHMAC-SHA256署名に使う。ゲートウェイ側は署名検証後にセッションを生成し、支払い画面(pay.php)へ進める。

ガスレス送金:EIP-3009 × Polygon

CIHPAYの最大の特徴は、購入者がPOL(Polygonのガス代)を1枚も持っていなくても決済できる点だ。JPYCはEIP-3009(transferWithAuthorization)に対応しており、購入者はウォレットで署名するだけ。実際のオンチェーン送金はリレーサービス(jpyc-relayer)がガス代を肩代わりして実行する。Polygon Mainnet(chain_id 137)上でJPYCコントラクトへ着金する。暗号資産決済の最大のハードルである「ガス代の用意」を消してあるのが実務上の強みである。

OpenCart 4.1プラグインの構造とハマりどころ

拡張コードは cihpaycihpay.ocmod.zip をInstaller→Paymentsの順で導入する。実装で踏んだ落とし穴を残しておく。

  • zipを upload/ で包まない。 OpenCart 4.1のInstallerは upload/ を剥がさず extension/cihpay/<そのままのパス> に展開するため、admin/catalog/install.json をzip直下に置く。
  • POSTはhtmlspecialchars済みで渡る。 system/library/request.php の clean() が ENT_COMPAT のため、JSON貼り付け欄の二重引用符が &quot; になる。save()側で html_entity_decode() してから json_decode() する。
  • zipファイル名は <code>.ocmod.zip。code がそのまま extension/<code>/ になる。

Webhook:ボディ全体のHMACで冪等受信

決済完了時、ゲートウェイは shops.jsonwebhook_url(OpenCartでは index.php?route=extension/cihpay/webhook)へJSONをPOSTする。受信側は生リクエストボディの hash_hmac('sha256', body, shop_secret)X-CIH-Signature ヘッダと照合し、timestampの許容(15分)と冪等性(既にpaidなら200)を担保して注文を入金済みにする。

結果:実機で本番JPYC決済に成功

OpenCart 4.1.0.4の実機で、注文→ウォレット接続→EIP-3009署名→リレー送金→コールバックまで通し、Polygon上で実際のJPYC着金(オンチェーンtx確認済み)まで成功した。現在このOpenCart向けCIHPAY(JPYC)決済プラグインは v1.0.0 として運用可能な段階にある。EC-CUBE向け(CihPay v0.2.1)も同一のゲートウェイ契約で近日リリース予定だ。

キーワード:JPYC, USDC, ステーブルコイン, Polygon, EIP-3009, gasless payment, Web3決済, OpenCart plugin, EC-CUBE, WooCommerce, HMAC-SHA256, transferWithAuthorization

上部へスクロール