WooCommerce 결제 게이트웨이를 만드는 방법

게시 됨: 2021-04-26

WooCommerce 결제 게이트웨이 생성 사용자 지정 결제 옵션을 허용하는 WooCommerce 결제 게이트웨이를 생성하시겠습니까? 이 튜토리얼에서는 고객이 이 맞춤형 WooCommerce 결제 게이트웨이를 통해 결제할 수 있도록 WooCommerce에서 결제 게이트웨이를 생성하는 방법을 간략하게 보여드리고자 합니다.

나만의 맞춤형 결제 게이트웨이를 만들 수 있습니다. 이를 달성하는 2가지 방법이 있습니다. 플러그인 또는 사용자 정의 코드를 사용할 수 있습니다.

그러나 플러그인으로 인해 사이트가 부풀어 오릅니다. 이것이 우리가 사용자 정의 코드 스니펫을 사용하는 이유입니다.

초보자가 이 방법을 사용할 수 있도록 각 단계에 대해 자세히 설명합니다.

WooCommerce 결제 게이트웨이를 만드는 방법

이 게시물에서는 새 결제 게이트웨이를 추가하는 플러그인을 만듭니다. 즉, 이 작업을 수행하려면 프로그래밍 기술이 필요합니다.

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. 자녀 클래스 구축

이렇게 하려면 먼저 이것을 초기화 함수로 래핑하고 기본 우선 순위보다 나중에 plugins_loaded에 연결해야 합니다.

WooCommerce가 활성 상태인지 확인한 후 WooCommerce 코어 다음에 클래스를 로드합니다. 이렇게 하면 치명적인 오류에 대한 2차 검사가 됩니다.

또한 WC_Payment_Gateway 클래스를 사용할 수 있도록 합니다. o 클래스를 확장하려면 다음 형식을 따릅니다.

클래스 My_Child_Class 확장 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 결제 게이트웨이에 추가

마지막 단계는 WooCommerce > 설정 > 결제에서 결제 게이트웨이를 사용할 수 있는지 확인하는 것입니다.

사용 가능한 모든 게이트웨이의 배열을 제공하는 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' );

결론

사용자 지정 결제 게이트웨이를 추가하기만 하면 됩니다. "수표" 게이트웨이의 기능을 간단히 복제했습니다.

지불 프로세서와 통합하는 경우 지불 프로세서로부터 정보 게시 및 수신을 통합해야 한다는 점에 유의해야 합니다.

이 프로세스가 너무 복잡하면 자격을 갖춘 개발자를 고용할 수 있습니다. 이렇게 하면 사이트가 손상되지 않습니다.

유사한 기사

  1. 로그아웃 후 WooCommerce 리디렉션 [궁극적인 가이드]
  2. WooCommerce 제품 페이지를 사용자 정의하는 방법
  3. 체크아웃 끝점을 변경하는 방법 WooCommerce