WooCommerce PaymentGatewayを作成する方法

公開: 2021-04-26

WooCommerce PaymentGatewayを作成する カスタム支払いオプションを受け入れるWooCommercePayment Gatewayを作成しますか? このチュートリアルでは、WooCommerceで支払いゲートウェイを作成して、顧客がこのカスタムWooCommerce支払いゲートウェイを介して支払いできるようにする方法を簡単に説明します。

独自のカスタム支払いゲートウェイを作成することが可能です。 これを実現するには2つの方法があります。 プラグインまたはカスタムコードのいずれかを使用できます。

ただし、プラグインはサイトを肥大化させることに注意することが重要です。 これが、カスタムコードスニペットを使用する理由です。

初心者がこの方法を使用できるように、各ステップについて詳しく説明します。

WooCommerce PaymentGatewayを作成する方法

この投稿では、新しい支払いゲートウェイを追加するためのプラグインを作成します。 これは、これを行うにはプログラミングスキルが必要であることを意味します。

WooCommerceクラスを拡張します。 WooCommerceは、支払いゲートウェイや電子メールクラスなど、いくつかのコアクラスを提供します。

これらのクラスを拡張して独自の機能を追加すると、開発にかかる時間を節約できます。 また、プラグインが標準的な方法で機能することを保証します。

WC_Payment_Gatewayクラス

WC_Payment_Gatewayクラスはこれを拡張して、注文合計やお礼ページのURLを取得する機能など、支払い方法に固有の構造と関数を提供します。

このクラスを拡張すると、この構造の恩恵を受けることができます。 これにより、タイトルと説明の取得やチェックアウトページへの表示など、いくつかの機能が処理されます。

WooCommerceのすべての支払いゲートウェイは、WC_Payment_Gatewayクラスを拡張することから始まることに注意することが重要です。

従う必要のある手順は次のとおりです。

1.WooCommerceがアクティブかどうかを確認します

WooCommerceクラスを拡張するので、それがアクティブかどうかを確認する必要があります。

// Make sure WooCommerce is active

if ( ! in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) return;

2.あなたの子供クラスを構築します

これを行うには、最初にこれをinit関数でラップし、デフォルトの優先度よりも後でplugins_loadedにフックする必要があります。

WooCommerceがアクティブかどうかを確認した後、WooCommerceコアの後にクラスをロードします。 これにより、致命的なエラーに対する二次チェックが行われます。

また、WC_Payment_Gatewayクラスが使用可能であることを確認します。 oクラスを拡張する場合は、次の形式に従います。

class My_Child_Class extends The_Parent_Class {}

プラグインでこれがどのように表示されるかを次に示します。

/**

* Offline Payment Gateway

* @class       WC_Gateway_Offline

* @extends     WC_Payment_Gateway

* @version     1.0.0

* @package     WooCommerce/Classes/Payment

* @author      Njengah

*/

add_action( 'plugins_loaded', 'wc_offline_gateway_init', 11 );

function wc_offline_gateway_init() {

class WC_Gateway_Offline extends WC_Payment_Gateway {

// You plugin code starts here

} // end \WC_Gateway_Offline class

}

3.ゲートウェイを構築します

クラスがないので、__ construct()関数を作成する必要があります。 これにより、クラスに含める必要のある変数が確実になります。

必要な変数は次のとおりです。

  • $ this-> id
  • $ this-> icon
  • $ this-> has_fields = trueまたはfalse(bool)
  • $ this-> method_title
  • $ this-> method_description

変数が設定された後、コンストラクターには他のいくつかの関数が必要になります。

フォームフィールドは、init_form_fields()関数で設定されます。 この関数は、ゲートウェイの有効化やタイトルの追加など、すべての設定フィールドを追加します。

$this->init_form_fields();
$this->init_settings();

4.フォームフィールドを初期化します

このセクションでは、支払いゲートウェイのフォームフィールドを設定するためのinit_form_fields()関数を作成します。

この関数は親クラスでは何もしませんが、オーバーライドしない場合は致命的なエラーが発生しないようにします。

ただし、子クラスでいくつかの機能を提供します。

含める必要のある基本フィールドは、有効なタイトルと説明です。

/**

* Initialize Gateway Settings Form Fields

*/

public function init_form_fields() {

$this->form_fields = apply_filters( 'wc_offline_form_fields', array(

'enabled' => array(

'title'   => __( 'Enable/Disable', 'wc-gateway-offline' ),

'type'    => 'checkbox',

'label'   => __( 'Enable Offline Payment', 'wc-gateway-offline' ),

'default' => 'yes'

),

'title' => array(

'title'       => __( 'Title', 'wc-gateway-offline' ),

'type'        => 'text',

'description' => __( 'This controls the title for the payment method the customer sees during checkout.', 'wc-gateway-offline' ),

'default'     => __( 'Offline Payment', 'wc-gateway-offline' ),

'desc_tip'    => true,

),

'description' => array(

'title'       => __( 'Description', 'wc-gateway-offline' ),

'type'        => 'textarea',

'description' => __( 'Payment method description that the customer will see on your checkout.', 'wc-gateway-offline' ),

'default'     => __( 'Please remit payment to Store Name upon pickup or delivery.', 'wc-gateway-offline' ),

'desc_tip'    => true,

),

'instructions' => array(

'title'       => __( 'Instructions', 'wc-gateway-offline' ),

'type'        => 'textarea',

'description' => __( 'Instructions that will be added to the thank you page and emails.', 'wc-gateway-offline' ),

'default'     => '',

'desc_tip'    => true,

),

) );

}

5.支払いを処理します

これは、支払いゲートウェイの作成に関して最も重要なセクションです。 注文の処理を処理する関数を追加して、WooCommerceにどのようなステータスが必要で、使用後に顧客がどこに行くかを伝える必要があります。

public function process_payment( $order_id ) {

$order = wc_get_order( $order_id );

// Mark as on-hold (we're awaiting the payment)

$order->update_status( 'on-hold', __( 'Awaiting offline payment', 'wc-gateway-offline' ) );

// Reduce stock levels

$order->reduce_order_stock();

// Remove cart

WC()->cart->empty_cart();

// Return thankyou redirect

return array(

'result'    => 'success',

'redirect'  => $this->get_return_url( $order )

);

}

6.受信および電子メールの注文に支払いゲートウェイ情報を追加します

追加したゲートウェイでは、支払いを完了するためにさらに手順が必要です。 thankyou_page()およびemail_instructions()スタブメソッドを使用して、これらの手順がありがとうページと注文メールの両方に表示されるようにする必要があります。

/**

* Output for the order received page.

*/

public function thankyou_page() {

if ( $this->instructions ) {

echo wpautop( wptexturize( $this->instructions ) );

}

}

/**

* Add content to the WC emails.

*

* @access public

* @param WC_Order $order

* @param bool $sent_to_admin

* @param bool $plain_text

*/

public function email_instructions( $order, $sent_to_admin, $plain_text = false ) {

if ( $this->instructions && ! $sent_to_admin && 'offline' === $order->payment_method && $order->has_status( 'on-hold' ) ) {

echo wpautop( wptexturize( $this->instructions ) ) . PHP_EOL;

}

}

7. WooCommerce PaymentGatewayに追加します

最後のステップは、支払いゲートウェイがWooCommerce> Settings> Checkoutで利用可能であることを確認することです。

利用可能なすべてのゲートウェイの配列を提供するwoocommerce_payment_gatewaysフィルターを使用します。 これは、ゲートウェイをこの配列に追加してから、ゲートウェイが追加された配列を返すことを意味します。

function wc_offline_add_to_gateways( $gateways ) {

$gateways[] = 'WC_Gateway_Offline';

return $gateways;

}

add_filter( 'woocommerce_payment_gateways', 'wc_offline_add_to_gateways' );

結論

カスタム支払いゲートウェイを追加するために必要なことはこれだけです。 「Cheque」ゲートウェイの機能のクローンを作成しただけです。

支払い処理業者と統合する場合は、支払い処理業者からの情報の投稿と受信を組み込む必要があることに注意することが重要です。

このプロセスが複雑すぎる場合は、資格のある開発者を雇うことができます。 これはあなたがあなたのサイトを壊さないことを確実にするでしょう。

同様の記事

  1. ログアウト後のWooCommerceリダイレクト[究極のガイド]
  2. WooCommerceの製品ページをカスタマイズする方法
  3. チェックアウトエンドポイントを変更する方法WooCommerce