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

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

WooCommerceゲートウェイテンプレートは、WooCommerce POS用の独自のカスタム決済ゲートウェイを作成するための出発点を提供します。このテンプレートには、完全に機能する決済ゲートウェイを構築するために必要なすべてのボイラープレートコードと構造が含まれています。

機能

完全なテンプレート

必要なすべてのメソッドを持つ準備済みのゲートウェイ構造

POS統合

WooCommerce POS互換性のためにあらかじめ設定されています

自動設定

スクリプトベースのテンプレートカスタマイズ

拡張可能

特定の決済プロバイダーのために簡単に変更および拡張可能

始め方

オプション1: 自動テンプレート生成

テンプレートには、特定のゲートウェイに対して自動的にテンプレートをカスタマイズするスクリプトが含まれています:

  1. リポジトリをクローンする:

    git clone https://github.com/wcpos/woocommerce-gateway-template.git
    cd woocommerce-gateway-template
  2. セットアップスクリプトを実行する:

    ./create-gateway.sh
  3. プロンプトに従う:

    • ゲートウェイの名前を入力します(例: "My Payment Gateway")
    • ゲートウェイスラグを入力します(例: "my-payment")
    • 説明を提供します
    • スクリプトがカスタマイズされたプラグインを生成します

オプション2: 手動テンプレートの使用

手動でカスタマイズすることを好む場合:

  1. テンプレートをダウンロードする:

  2. テンプレートをカスタマイズする:

    • {{GATEWAY_NAME}}をゲートウェイの表示名に置き換えます
    • {{GATEWAY_SLUG}}をゲートウェイのユニークな識別子に置き換えます
    • {{GATEWAY_DESCRIPTION}}をゲートウェイの説明に置き換えます
  3. ファイル名を変更する:

    • 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() { }
}

カスタマイズガイド

基本設定

  1. ゲートウェイ情報:

    $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';
  2. サポートされる機能:

    $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開発のプラクティスに従う
  • セキュリティ: 入力をサニタイズし、データを検証し、nonceを使用する
  • 国際化: __()および_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 ) );
}

ゲートウェイのテスト

開発環境

  1. テストモード: 常にテスト/サンドボックスモードを実装する
  2. デバッグロギング: トラブルシューティングのために包括的なロギングを含める
  3. エラーシナリオ: 様々な失敗条件をテストする
  4. POSテスト: 特にPOS環境でテストする

テストケース

  • 成功した決済: 注文が正しく完了することを確認する
  • 失敗した決済: 適切なエラーハンドリングを確認する
  • 返金: サポートされている場合、返金機能をテストする
  • エッジケース: 様々な注文金額や構成でテストする

展開

プラグインのパッケージ化

  1. 開発ファイルの削除: テストファイルと開発ツールをクリーンアップする
  2. バージョン管理: プラグインヘッダーのバージョン番号を更新する
  3. ドキュメント: インストール手順を含むREADMEを含める
  4. ZIPパッケージ: インストール可能なZIPファイルを作成する

配布

  • GitHubリリース: バージョン管理のためにGitHubリリースを使用する
  • WordPressプラグインディレクトリ: WordPress.orgに提出を検討する
  • プライベート配布: 必要に応じて自分のサーバーにホストする

高度な機能

Webhooks

リアルタイム決済更新のために:

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開発者コミュニティに参加

例のゲートウェイ

実装例としてこれらの既存のカスタムゲートウェイを研究してください: