# OpenCart で Bitcoin 決済を受け付ける

BTCPay Server (opens new window) は無料かつオープンソースの Bitcoin 決済プロセッサです。手数料や仲介業者なしで、支払いを直接あなたのウォレットで受け取れます。

OpenCart ストアを運営している場合、BTCPay Server を統合して Bitcoin を決済オプションとして提供することで、追加のマーケティングコストなしに市場へのリーチを今すぐ拡大できます。

# OpenCart で BTCPay を使うメリット

  1. 完全自動化システム: 支払い、請求書管理、返金を BTCPay が自動で処理します。

  2. 手数料ゼロ: BTCPay Server は無料です。取引手数料も処理手数料も一切かかりません。

  3. チェックアウトで Bitcoin QR コードを表示: チェックアウト時に Bitcoin の QR コードを表示し、シンプルで安全な支払い体験を提供します。

  4. Lightning Network 統合: 即時かつ低コストで支払いや送金を行えます。

  5. 簡単なデータエクスポート: CSV エクスポートで会計レポートを簡単に管理できます。

  6. 柔軟なプラグインシステム: ニーズに合わせて BTCPay の機能を拡張できます。

  7. POS 統合: POS 統合により実店舗でも Bitcoin を受け付けできます。

  8. 多言語対応: 世界中の顧客に、理解しやすい言語でサービスを提供できます。

  9. セルフホスト対応インフラ: 完全な管理のためにセルフホスト、手軽さのためにサードパーティホストを選べます。どちらでも BTCPay の全機能を利用できます。

  10. コミュニティ主導のサポート: 専用コミュニティ(Mattermost (opens new window) または Telegram (opens new window))で支援やアドバイスを得られます。

# 必要条件

この拡張機能をインストールする前に、以下の要件を満たしていることを確認してください。

TIP

この手順は OpenCart 3 をベースにしていますが、UI と操作手順は OpenCart 4 とほぼ同じです。そのため別手順は用意していません。

# OpenCart 用 BTCPay 拡張機能のインストール手順

# 1. BTCPay 拡張機能をインストール

OpenCart 用 BTCPay 拡張機能をダウンロードする方法は 3 つあります。

# 1.1 OpenCart 管理ダッシュボードから拡張機能をインストール

注: この拡張機能は現在審査中で、まもなく利用可能になります。

# 1.2 Marketplace または GitHub から拡張機能をダウンロードしてインストール

  1. Marketplace (opens new window) または Github (opens new window) から最新の BTCPay 拡張機能をダウンロードします。
  2. メニューで Extensions -> Install に移動します。
  3. [Upload] ボタンをクリックし、ダウンロードした btcpay.ocmod.zip をアップロードします。 アップロード完了後に "Success: You have modified extensions!" という通知が表示されます。
BTCPay OpenCart: 拡張機能アップロード

# 1.3 拡張機能のインストールを完了

  1. メニューで Extensions -> Extensions に移動します。
  2. "Choose extension type" のドロップダウンで Payment を選択します。
  3. 一覧で BTCPay 拡張機能を見つけ、"Action" 列の緑色の Install ボタンをクリックします。
  4. "Success: You have modified payments!" という通知が表示されます。
BTCPay OpenCart: 拡張機能をインストール

# 2. OpenCart と BTCPay Server の接続

先に進む前に、必要条件セクションで説明した BTCPay Server インスタンスの準備が完了していることを確認してください。

OpenCart 向け BTCPay 拡張機能は、BTCPay Server(決済プロセッサ)と EC ストアの橋渡しを行います。セルフホストでもサードパーティホストでも、接続手順は同じです。

# 2.1 OpenCart で BTCPay Server 拡張機能を設定

  1. OpenCart パネルで Extensions -> Extensions に移動します。
  2. 一覧で BTCPay 拡張機能を見つけ、青色の Edit ボタンをクリックします。 BTCPay OpenCart: 新しい決済方法を追加
  3. BTCPay 拡張機能を設定します。 BTCPay OpenCart: 決済方法の詳細
  4. "Payment Method Enabled" フィールドを Enabled に設定します。
  5. "BTCPay Server URL" フィールドに、BTCPay Server インスタンスへアクセス可能な URL(例: https://mainnet.demo.btcpayserver.org/)を入力します。BTCPay Server のデプロイ手順は上記の必要条件セクションを参照してください。

続行する前に、次のセクションで説明するユーザーとストア用の API キーを作成する必要があります。すぐ戻るので、このブラウザタブは開いたままにしてください。

# 2.2 API キーを作成して権限を設定

BTCPay Server インスタンス側で以下を実施します。

  1. [Account] をクリック
  2. [Manage Account] をクリック BTCPay OpenCart: アカウント管理
  3. "API Keys" タブに移動
  4. [Generate Key] をクリックして権限を選択 BTCPay OpenCart: API Keys 概要
  5. "Label": ラベルを追加
  6. "Permissions": 重要: 次の権限について "Select specific stores" リンクをクリックし、OpenCart サイト向けに作成したストアを選択します: View invoicesCreate invoiceModify invoicesModify stores webhooksView your stores。こうすることで API キーはそのストアのみにアクセスでき、キーが漏えいしても資金が流出しないようにできます。 BTCPay OpenCart: API Keys 権限 次のような状態になります。 BTCPay OpenCart: API Keys 権限
  7. 下部の [Generate API Key] をクリック
  8. 生成された API キーをコピーし、OpenCart BTCPay settings の "BTCPay API Key" フィールドに貼り付け BTCPay OpenCart: API キーをコピー
  9. BTCPay Server インスタンスに戻り、ストア設定で Store ID をコピーして OpenCart BTCPay Settings フォームに貼り付け BTCPay OpenCart: Store ID をコピー
  10. OpenCart BTCPay settings フォームに戻り、BTPCay Server URLAPI KeyStore ID が設定されていることを確認して [Save] ボタン(右上)をクリック BTCPay OpenCart: OpenCart 設定フォームを保存

Extensions の概要ページに戻ると、"BTCPay Server Payment details have been successfully updated." という通知が表示されます。表示されない場合は、URL、API Key、Store ID の入力内容を再確認してください。 BTCPay OpenCart: OpenCart 設定フォームを保存

保存に成功すると、BTCPay 拡張機能は支払い確定または失敗時に OpenCart へ通知する webhook を自動作成します。正常に作成されたか確認するには、BTCPay 拡張機能設定を再度開き、"Webhook Data" フィールドが次のように埋まっているか確認してください。 BTCPay OpenCart: OpenCart 設定フォームを保存

BTCPay 拡張機能設定で分かるように、請求書ステータス などに応じて注文ステータスや一般設定をカスタマイズできます。デフォルト設定は良い出発点ですが、要件に合わせて調整してください。

# 3. チェックアウトをテストする

これで設定は完了です。テスト取引を実行しましょう。

テスト購入を行う: OpenCart ストアで少額の注文を行い、チェックアウトが期待どおりに動作することを確認します。 注文ステータスを確認する: OpenCart の注文ステータスが、対応する BTCPay の請求書ステータスに応じて更新されるか確認します。 Webhook イベントを確認する: BTCPay Server の請求書詳細で webhook イベントが成功していることを確認します。

# トラブルシューティング

# デバッグモードを有効にする

チェックアウト中にエラーが発生した場合、BTCPay 拡張機能設定でデバッグモードを有効にできます。メニューから Extensions -> extensions に移動し、"Choose Extension Type" ドロップダウンで "Payments" を選択して BTCPay Server 拡張機能を編集します。

BTCPay OpenCart: デバッグモードを有効化

デバッグ出力は、メニュー System -> Maintenence -> Error Logserror log で確認できます。

BTCPay OpenCart: デバッグモードを有効化

*デバッグが終わったら必ず無効化してください。無効化しないとエラーログが埋まってしまいます。**

エラー例:

2022-05-24 21:10:50 ERROR Error during POST to https://btcpay.example.com/api/v1/stores/4kD5bvAF5j8DokHqAzxb6MFDV4ikabcdefghijklm/invoices. Got response (401): {"code":"unauthenticated","message":"Authentication is required for accessing this endpoint"}

  • これは認証エラーがあることを意味します。多くの場合、API キーにそのストアで請求書を作成する権限がありません。API キーに正しい権限を付与し、正しいストアを選択し、その値を OpenCart の決済設定フォームに入力してください。

  • もう 1 つの理由として、レガシー API キーを使用している可能性があります。レガシー API キーは store settings -> Access Tokens にありますが、必要なのは Account -> Manage Account -> "API Keys" タブで作成するアカウント API キーです。2.2 API キーを作成して権限を設定を参照してください。

# 請求書は支払い済みなのに注文ステータスが更新されない

請求書詳細で webhook リクエスト送信時のエラーがないか確認してください。ホスティング事業者、ファイアウォール設定、またはセキュリティ拡張機能により、サイトへの POST リクエストがブロックされ、HTTP ステータスが "403 forbidden" になることがあります。

サイトへのリクエストをブロックする要因があるかどうかは、次の 2 つの方法で確認できます。

1. webhook コールバック URL をコピーする
OpenCart BTCPay extension settings に移動し、"Webhook Data" フィールドの "URL" をコピーします。例: https://YOURSTOREDOMAIN.TLD/index.php?route=extension/payment/btcpay/callback

BTCPay OpenCart: OpenCart 設定フォームを保存

2.1 コマンドラインで確認する(Linux または MacOS):

curl -vX POST -H "Content-Type: application/json" \
    -d '{"data": "test"}' WEBHOOK_CALLBACK_URL

WEBHOOK_CALLBACK_URL は上でコピーしたものに置き換えてください)

結果:

.... snip ....
* upload completely sent off: 16 out of 16 bytes
< HTTP/1.1 403 Forbidden
< access-control-allow-origin: *
< Content-Type: application/json; charset=UTF-8
< X-Cloud-Trace-Context: 4f07d5b2e5c2f05949d04421a8e2dd6a
< Date: Thu, 17 Feb 2022 10:06:50 GMT
< Server: Google Frontend
< Content-Length: 26

"HTTP/1.1 403 Forbidden" または "HTTP/2 403" が表示される場合、OpenCart サイトへのデータ送信が何かにブロックされています。ホスティング事業者に問い合わせるか、ファイアウォールやセキュリティ拡張がリクエストを遮断していないか確認してください。

2.2 オンラインサービスで確認する(コマンドラインが使えない場合):

  • https://reqbin.com/post-online (opens new window) にアクセス
    1. コールバック URL(上記手順 1 でコピー)を入力: https://YOURSTOREDOMAIN.TLD/index.php?route=extension/payment/btcpay/callback (この URL を手順 1 の webhook コールバック URL に置き換えてください)
  • "POST" が選択されていることを確認
    1. [Send] をクリック
BTCPay OpenCart: Webhook payload URL forbidden

"Status 403 (Forbidden)" と表示される場合、何らかの理由でサイトへの POST リクエストがブロックされています。ホスティング事業者に確認するか、ファイアウォールやセキュリティ拡張がリクエストを遮断していないことを確認してください。別のステータスコード(200、500、...)が表示される場合、ファイアウォール問題ではない可能性が高く、追加調査が必要です。

# 拡張機能の利用で問題がある、または関連する質問がある場合

サポートが必要な場合や追加の質問がある場合は、https://chat.btcpayserver.org/ (opens new window) または https://t.me/btcpayserver (opens new window) のサポートチャネルへ参加してください。