メインコンテンツにスキップ
バージョン: 1.x

ゲートウェイテンプレート

ゲートウェイテンプレートは、POS専用の決済ゲートウェイを独自に構築するための出発点です。ニーズに合わせてインストールおよびカスタマイズできる、PHPファイル1つだけのWordPressプラグインを生成します。

機能​

最小限のコード

必要なものだけを含む単一のPHPファイルで、読みやすく変更も簡単です

POS専用

デフォルトではウェブのチェックアウトで無効になっており、WCPOSの設定から有効にできます

セットアップの自動化

シェルスクリプトがプレースホルダーをすべて置き換えます

GitHubリリース

バージョンを更新してプッシュすると、GitHub Actionsがダウンロード可能なZIPをビルドします

はじめに​

1

テンプレートリポジトリをクローンする

git clone https://github.com/wcpos/woocommerce-gateway-template.git
cd woocommerce-gateway-template

または、GitHubリポジトリのこのテンプレートを使用ボタンをクリックして、自分用のコピーを作成してください。

2

セットアップスクリプトを実行する

./create-gateway.sh

スクリプトでゲートウェイ名、短い説明、GitHubユーザー名などを入力すると、指定したディレクトリにすぐに使えるプラグインが生成されます。

3

プラグインをインストールする

方法は2つあります:

方法A — フォルダーを直接コピーする(サーバーにアクセスできる場合): 生成されたゲートウェイフォルダーをサイトのwp-content/plugins/ディレクトリにコピーします。

方法B — ZIPにしてアップロードする(ほとんどの方におすすめ):

  1. 生成されたフォルダーを.zipファイルに圧縮します
  2. WordPressでプラグイン > 新規追加 > プラグインのアップロードに進みます
  3. ZIPファイルを選択し、今すぐインストールをクリックします
4

WCPOSで有効にする

  1. WP Admin > POS > 設定 > チェックアウトに進みます
  2. 一覧から新しいゲートウェイを見つけて有効にします
ノート

ゲートウェイはデフォルトで通常のウェブチェックアウトでは無効です。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 ),
);
}

変更と更新​

ゲートウェイのインストール後も、プラグインファイルを編集して決済ロジックを調整できます。更新版をインストールするには:

  1. 生成されたフォルダー内のwcpos-your-slug.phpを編集します
  2. プラグインヘッダーのVersion:番号を更新します(例: 0.1.0から0.2.0)
  3. フォルダーをZIPにしてプラグイン > 新規追加 > プラグインのアップロードから再度アップロードするか、wp-content/plugins/内のフォルダーを直接置き換えます
ヒント

同じプラグイン名のZIPをアップロードすると、WordPressは既存のプラグインを置き換えるか尋ねます。更新するにはアップロードしたもので現在のものを置き換えるをクリックします。

GitHubでリリースを自動化する​

ゲートウェイをGitHubリポジトリにプッシュすると、テンプレートに含まれるGitHub Actionsワークフローがリリースを自動作成します:

  1. プラグインヘッダーのVersion:番号を更新します
  2. mainブランチにコミットしてプッシュします
  3. GitHub Actionsがバージョン変更を検出し、ダウンロード可能なZIP付きの新しいリリースを作成します

他のユーザーはリポジトリのリリースページからZIPをダウンロードし、他のWordPressプラグインと同じようにインストールできます。

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

ゲートウェイがPOSに表示されない
  • WP Admin > プラグインでプラグインが有効化されていることを確認します
  • WP Admin > POS > 設定 > チェックアウトに進み、ゲートウェイが有効になっていることを確認します
  • WooCommerceがインストールされ、有効化されていることを確認します
ゲートウェイがウェブのチェックアウトに表示される
  • ゲートウェイのコンストラクターで$this->enabled = 'no';が設定されていることを確認します
  • WCPOSはPOSリクエストに対してこの設定を上書きするため、ゲートウェイはPOSにのみ表示されるはずです
注文が「処理中」のままで「完了」にならない
  • WooCommerceは商品タイプに基づいて注文ステータスを設定します。物理商品を含む注文が「処理中」のままになるのは、WooCommerceの通常の動作です。仮想商品またはダウンロード商品のみを含む注文だけが自動的に「完了」になります。

要件​

WCPOS: POSチェックアウトにはProバージョンが必要です
WordPress: WooCommerceがインストールされたWordPress
PHP: ゲートウェイをカスタマイズするための基本的なPHP知識

リソース​

例ゲートウェイ​

これらの既存のゲートウェイは、同じアプローチで構築されており、良い参考例です: