ゲートウェイテンプレート
ゲートウェイテンプレートは、POS専用の決済ゲートウェイを独自に構築するための出発点です。ニーズに合わせてインストールおよびカスタマイズできる、PHPファイル1つだけのWordPressプラグインを生成します。
機能
最小限のコード
必要なものだけを含む単一のPHPファイルで、読みやすく変更も簡単です
POS専用
デフォルトではウェブのチェックアウトで無効になっており、WCPOSの設定から有効にできます
セットアップの自動化
シェルスクリプトがプレースホルダーをすべて置き換えます
GitHubリリース
バージョンを更新してプッシュすると、GitHub Actionsがダウンロード可能なZIPをビルドします
はじめに
テンプレートリポジトリをクローンする
git clone https://github.com/wcpos/woocommerce-gateway-template.git
cd woocommerce-gateway-template
または、GitHubリポジトリのこのテンプレートを使用ボタンをクリックして、自分用のコピーを作成してください。
セットアップスクリプトを実行する
./create-gateway.sh
スクリプトでゲートウェイ名、短い説明、GitHubユーザー名などを入力すると、指定したディレクトリにすぐに使えるプラグインが生成されます。
プラグインをインストールする
方法は2つあります:
方法A — フォルダーを直接コピーする(サーバーにアクセスできる場合):
生成されたゲートウェイフォルダーをサイトのwp-content/plugins/ディレクトリにコピーします。
方法B — ZIPにしてアップロードする(ほとんどの方におすすめ):
- 生成されたフォルダーを
.zipファイルに圧縮します - WordPressでプラグイン > 新規追加 > プラグインのアップロードに進みます
- ZIPファイルを選択し、今すぐインストールをクリックします
WCPOSで有効にする
- WP Admin > POS > 設定 > チェックアウトに進みます
- 一覧から新しいゲートウェイを見つけて有効にします
ゲートウェイはデフォルトで通常のウェブチェックアウトでは無効です。POSに表示するゲートウェイは、WCPOS独自の設定で制御します。
手動でセットアップする
スクリプトを使わない場合は、プレースホルダーを自分で置き換えることができます。各ファイルをテキストエディターで開き、次の項目を検索して置換してください:
| プレースホルダー | 入力する値 | 例 |
|---|---|---|
{{GATEWAY_NAME}} | ゲートウェイの表示名 | 現金払い |
{{GATEWAY_SLUG}} | URLで使用できる識別子(小文字、ハイフン) | cash-payment |
{{GATEWAY_DESCRIPTION}} | ゲートウェイの短い説明 | WCPOSで現金払いを受け付ける |
{{GATEWAY_DEFAULT_DESCRIPTION}} | チェックアウト時にレジ係に表示するテキスト | POSで現金で支払う |
{{GITHUB_USERNAME}} | GitHubユーザー名 | kilbot |
{{REPO_NAME}} | リポジトリ名 | cash-payment-gateway |
{{AUTHOR_NAME}} | 名前 | kilbot |
{{GATEWAY_ID}} | ハイフンをアンダースコアに置き換えたスラッグ | cash_payment |
{{GATEWAY_CLASS_NAME}} | 各単語を大文字で始め、アンダースコアで連結した名前 | Cash_Payment |
{{GATEWAY_FUNCTION_PREFIX}} | Gateway IDと同じ値 | cash_payment |
次に、wcpos-{{GATEWAY_SLUG}}.phpをスラッグに合わせて名前変更します(例: wcpos-cash-payment.php)。
セットアップスクリプトは名前とスラッグからGATEWAY_ID、GATEWAY_CLASS_NAME、GATEWAY_FUNCTION_PREFIXを自動的に生成します。手動でセットアップする場合にのみ、これらを指定してください。
仕組み
生成されたプラグインはWooCommerceの決済ゲートウェイクラスを登録します。主なポイントは次のとおりです:
$this->enabled = 'no'— ゲートウェイをウェブチェックアウトでは非表示にします。WCPOSはPOSの設定に基づいて有効にします。process_payment()—$order->payment_complete()を呼び出し、注文を支払い済みにして在庫を自動的に減らします。init_form_fields()— WooCommerceの設定に表示される「タイトル」と「説明」フィールドを定義します。
ゲートウェイをカスタマイズする
決済フィールドを追加する
ゲートウェイでレジ係からの入力(参照番号など)が必要な場合は、payment_fields()メソッドをオーバーライドします:
public function payment_fields() {
if ( $this->description ) {
echo wpautop( wptexturize( $this->description ) );
}
woocommerce_form_field( 'my_gateway_reference', array(
'type' => 'text',
'label' => __( 'Reference Number', 'your-text-domain' ),
'required' => true,
) );
}
送信された値は、process_payment()を使って$_POST['my_gateway_reference']で読み取れます。入力値は必ずsanitize_text_field()でサニタイズしてください。
決済動作を変更する
デフォルトのテンプレートでは、注文はすぐに支払い済みになります。請求書のように後から支払うワークフローでは、payment_complete()をステータス更新に置き換えてください:
public function process_payment( $order_id ) {
$order = wc_get_order( $order_id );
// Set to pending — the customer will pay later.
$order->update_status( 'pending', __( 'Awaiting payment', 'your-text-domain' ) );
// Stock must be reduced manually when not using payment_complete().
wc_reduce_stock_levels( $order_id );
return array(
'result' => 'success',
'redirect' => $this->get_return_url( $order ),
);
}
変更と更新
ゲートウェイのインストール後も、プラグインファイルを編集して決済ロジックを調整できます。更新版をインストールするには:
- 生成されたフォルダー内の
wcpos-your-slug.phpを編集します - プラグインヘッダーの
Version:番号を更新します(例:0.1.0から0.2.0) - フォルダーをZIPにしてプラグイン > 新規追加 > プラグインのアップロードから再度アップロードするか、
wp-content/plugins/内のフォルダーを直接置き換えます
同じプラグイン名のZIPをアップロードすると、WordPressは既存のプラグインを置き換えるか尋ねます。更新するにはアップロードしたもので現在のものを置き換えるをクリックします。
GitHubでリリースを自動化する
ゲートウェイをGitHubリポジトリにプッシュすると、テンプレートに含まれるGitHub Actionsワークフローがリリースを自動作成します:
- プラグインヘッダーの
Version:番号を更新します mainブランチにコミットしてプッシュします- GitHub Actionsがバージョン変更を検出し、ダウンロード可能なZIP付きの新しいリリースを作成します
他のユーザーはリポジトリのリリースページからZIPをダウンロードし、他のWordPressプラグインと同じようにインストールできます。
トラブルシューティング
ゲートウェイがPOSに表示されない
- WP Admin > プラグインでプラグインが有効化されていることを確認します
- WP Admin > POS > 設定 > チェックアウトに進み、ゲートウェイが有効になっていることを確認します
- WooCommerceがインストールされ、有効化されていることを確認します
ゲートウェイがウェブのチェックアウトに表示される
- ゲートウェイのコンストラクターで
$this->enabled = 'no';が設定されていることを確認します - WCPOSはPOSリクエストに対してこの設定を上書きするため、ゲートウェイはPOSにのみ表示されるはずです
注文が「処理中」のままで「完了」にならない
- WooCommerceは商品タイプに基づいて注文ステータスを設定します。物理商品を含む注文が「処理中」のままになるのは、WooCommerceの通常の動作です。仮想商品またはダウンロード商品のみを含む注文だけが自動的に「完了」になります。
要件
リソース
- GitHub: woocommerce-gateway-template
- WooCommerce決済ゲートウェイAPI: WC_Payment_Gatewayドキュメント
例ゲートウェイ
これらの既存のゲートウェイは、同じアプローチで構築されており、良い参考例です:
- メール請求書 — 顧客が後で支払えるよう請求書のメールを送信
- Webチェックアウト — 支払いのためにWebストアにリダイレクト