ゲートウェイテンプレート
WooCommerceゲートウェイテンプレートは、WooCommerce POS用の独自のカスタムペイメントゲートウェイを作成するための出発点を提供します。このテンプレートには、完全に機能するペイメントゲートウェイを構築するために必要なすべてのボイラープレートコードと構造が含まれています。
機能
- 完全なテンプレート: 必要なすべてのメソッドを含む、すぐに使用できるゲートウェイ構造
- POS統合: WooCommerce POSとの互換性のために事前設定済み
- 自動セットアップ: スクリプトベースのテンプレートカスタマイズ
- ベストプラクティス: WordPressおよびWooCommerceのコーディング基準に従う
- 拡張性: 特定のペイメントプロバイダー向けに簡単に修正および拡張可能
はじめに
オプション1: 自動テンプレート生成
テンプレートには、特定のゲートウェイ用にテンプレートを自動的にカスタマイズするスクリプトが含まれています:
-
リポジトリをクローンする:
git clone https://github.com/wcpos/woocommerce-gateway-template.git
cd woocommerce-gateway-template -
セットアップスクリプトを実行する:
./create-gateway.sh -
プロンプトに従う:
- ゲートウェイの名前を入力(例: "My Payment Gateway")
- ゲートウェイスラグを入力(例: "my-payment")
- 説明を提供
- スクリプトがカスタマイズされたプラグインを生成します
オプション2: 手動テンプレートの使用
手動カスタマイズを好む場合:
-
テンプレートをダウンロードする:
- ゲートウェイテンプレートリポジトリを訪問
- 最新のリリースをダウンロードするか、リポジトリをクローンする
-
テンプレートをカスタマイズする:
{{GATEWAY_NAME}}をゲートウェイの表示名に置き換える{{GATEWAY_SLUG}}をゲートウェイのユニークIDに置き換える{{GATEWAY_DESCRIPTION}}をゲートウェイの説明に置き換える
-
ファイル名を変更する:
wcpos-{{GATEWAY_SLUG}}.phpをゲートウェイスラグに合わせて変更する- ファイルヘッダーとプラグイン情報を更新
テンプレート構造
メインプラグインファイル
メインプラグインファイル(wcpos-{{GATEWAY_SLUG}}.php)には:
- プラグインヘッダー: WordPressプラグイン情報
- ゲートウェイクラス: メインペイメントゲートウェイクラス
- 初期化: プラグインのセットアップとフック
- 統合: WooCommerce POSとの互換性
主要コンポーネント
ゲートウェイクラスの構造:
class WCPOS_Gateway_{{GATEWAY_CLASS}} extends WC_Payment_Gateway {
// Gateway configuration
public function __construct() { }
// Admin settings form
public function init_form_fields() { }
// Process payment (main logic goes here)
public function process_payment( $order_id ) { }
// POS-specific methods
public function payment_fields() { }
}
カスタマイズガイド
基本設定
-
ゲートウェイ情報:
$this->id = 'your_gateway_id';
$this->title = 'Your Gateway Name';
$this->description = 'Gateway description for customers';
$this->method_title = 'Admin title';
$this->method_description = 'Admin description'; -
サポートされている機能:
$this->supports = array(
'products',
'refunds',
'subscriptions', // if applicable
);
支払い処理
コアの支払いロジックはprocess_payment()メソッドに入ります:
public function process_payment( $order_id ) {
$order = wc_get_order( $order_id );
// Your payment processing logic here
// Example: API calls, validation, etc.
if ( $payment_successful ) {
$order->payment_complete();
return array(
'result' => 'success',
'redirect' => $this->get_return_url( $order )
);
} else {
wc_add_notice( 'Payment failed', 'error' );
return array(
'result' => 'failure'
);
}
}
管理者設定
init_form_fields()内で管理者設定を構成します:
public function init_form_fields() {
$this->form_fields = array(
'enabled' => array(
'title' => 'Enable/Disable',
'type' => 'checkbox',
'label' => 'Enable Your Gateway',
'default' => 'yes'
),
'api_key' => array(
'title' => 'API Key',
'type' => 'text',
'description' => 'Enter your API key',
'default' => '',
'desc_tip' => true,
),
// Add more settings as needed
);
}
POS統合
POS特有の機能を実装するために、以下を行います:
public function payment_fields() {
// Custom payment form for POS
if ( is_admin() && isset( $_GET['page'] ) && $_GET['page'] === 'wc-pos' ) {
// POS-specific payment fields
echo '<div class="pos-payment-fields">';
// Your custom POS interface
echo '</div>';
} else {
// Standard web checkout fields
parent::payment_fields();
}
}
開発ベストプラクティス
コード標準
- WordPressコーディング基準: WordPress PHPコーディング基準に従う
- WooCommerceガイドライン: WooCommerce開発の慣行に従う
- セキュリティ: 入力をサニタイズし、データを検証し、ノンスを使用する
- 国際化:
__()および_e()を使用して文字列を翻訳可能にする
エラーハンドリング
// Proper error handling
try {
$result = $this->process_api_call( $data );
if ( is_wp_error( $result ) ) {
throw new Exception( $result->get_error_message() );
}
} catch ( Exception $e ) {
$order->add_order_note( 'Payment failed: ' . $e->getMessage() );
wc_add_notice( 'Payment processing error', 'error' );
return array( 'result' => 'failure' );
}
ロギング
// Add logging for debugging
if ( $this->debug ) {
$this->log( 'Payment processing started for order ' . $order_id );
}
private function log( $message ) {
if ( empty( $this->logger ) ) {
$this->logger = wc_get_logger();
}
$this->logger->info( $message, array( 'source' => $this->id ) );
}
ゲートウェイのテスト
開発環境
- テストモード: 常にテスト/サンドボックスモードを実装する
- デバッグロギング: トラブルシューティング用に包括的なログを含める
- エラーシナリオ: 様々な失敗条件をテストする
- POSテスト: 特にPOS環境でテストする
テストケース
- 成功した支払い: 注文が正しく完了することを確認する
- 失敗した支払い: 適切なエラーハンドリングを確認する
- 返金: サポートされている場合は返金機能をテスト
- エッジケース: 様々な注文金額や構成でテストする
デプロイ
プラグインのパッケージング
- 開発ファイルの削除: テストファイルや開発ツールをクリーンアップする
- バージョン管理: プラグインヘッダーにあるバージョン番号を更新
- ドキュメント: インストール手順を含むREADMEを追加
- ZIPパッケージ: インストール可能なZIPファイルを作成する
配布
- GitHubリリース: バージョン管理のためにGitHubリリースを使用
- WordPressプラグインディレクトリ: WordPress.orgへの提出を検討する
- プライベート配布: 必要に応じて独自のサーバーにホスト
高度な機能
ウェブフック
リアルタイムの支払い更新のために:
public function handle_webhook() {
$payload = file_get_contents( 'php://input' );
$data = json_decode( $payload, true );
// Verify webhook signature
if ( $this->verify_webhook_signature( $payload ) ) {
$this->process_webhook_data( $data );
}
}
サブスクリプションサポート
定期支払いのために:
// Add subscription support
$this->supports[] = 'subscriptions';
$this->supports[] = 'subscription_cancellation';
$this->supports[] = 'subscription_suspension';
多通貨
国際的な支払いのために:
public function get_supported_currencies() {
return array( 'USD', 'EUR', 'GBP', 'CAD' );
}
リソース
ドキュメント
テンプレートリポジトリ
- GitHub: woocommerce-gateway-template
- 問題: テンプレートの問題を報告するか、機能をリクエスト
- 貢献: プルリクエストを通じて改善案を提出
サポートを受ける
開発サポートについて:
- テンプレート特有の問題についてはGitHubリポジトリを訪問
- APIに関する質問はWooCommerce開発者ドキュメントを確認
- 一般的なガイダンスについてWooCommerce開発者コミュニティに参加
例のゲートウェイ
実装例のためにこれらの既存のカスタムゲートウェイを研究してください:
- Stripe Terminal: ハードウェア統合の例
- SumUp Terminal: APIベースのターミナル統合
- Email Invoice: シンプルなメールベースのゲートウェイ
- Web Checkout: ウェブ統合ゲートウェイ