Jak stworzyć bramkę płatności WooCommerce

Opublikowany: 2021-04-26

Utwórz bramkę płatności WooCommerce Czy chcesz stworzyć bramkę płatności WooCommerce, która akceptuje niestandardową opcję płatności? W tym samouczku chcę krótko pokazać, jak utworzyć bramkę płatności w WooCommerce, aby umożliwić klientom płacenie przez tę niestandardową bramkę płatności WooCommerce.

Możliwe jest stworzenie własnej niestandardowej bramki płatności. Można to osiągnąć na 2 sposoby. Możesz użyć wtyczki lub niestandardowego kodu.

Należy jednak pamiętać, że wtyczki spowodują rozdęcie witryny. Dlatego użyjemy niestandardowego fragmentu kodu.

Omówimy szczegółowo każdy krok, aby umożliwić nowicjuszom korzystanie z tej metody.

Jak stworzyć bramkę płatności WooCommerce

W tym poście stworzymy wtyczkę, aby dodać nową bramkę płatności. Oznacza to, że musisz mieć umiejętności programistyczne, aby to zrobić.

Rozszerzymy klasę WooCommerce. WooCommerce udostępnia nam kilka podstawowych klas, takich jak bramka płatności czy klasy e-mail.

Zajęcia te można rozbudowywać o własną funkcjonalność, co pozwala zaoszczędzić czas na rozwój. Zapewnia również, że Twoja wtyczka działa w standardowy sposób.

Klasa WC_Payment_Gateway

Klasa WC_Payment_Gateway rozszerza to, aby zapewnić nam strukturę i funkcje, które będą specyficzne dla metod płatności, takie jak możliwość uzyskania sum zamówienia lub adres URL strony z podziękowaniami.

Możemy skorzystać ze struktury, jeśli rozszerzymy tę klasę. To obsłuży dla nas niektóre funkcje, w tym uzyskanie tytułu i opisu oraz wyświetlenie ich na stronie kasy.

Należy zauważyć, że wszystkie bramki płatności w WooCommerce rozpoczną się od rozszerzenia klasy WC_Payment_Gateway.

Oto kroki, które musisz wykonać:

1. Sprawdź, czy WooCommerce jest aktywny

Ponieważ będziemy rozszerzać klasę WooCommerce, musimy sprawdzić, czy jest aktywna:

// Make sure WooCommerce is active

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

2. Zbuduj swoją klasę dziecka

Aby to zrobić, najpierw musimy zapakować to w funkcję init i podłączyć do plugins_loaded później niż domyślny priorytet.

Po sprawdzeniu, czy WooCommerce jest aktywne, ładujemy naszą klasę po rdzeniu WooCommerce. To sprawia, że ​​jest to dodatkowa kontrola przed krytycznymi błędami.

Zapewnia również dostępność klasy WC_Payment_Gateway. o rozszerz zajęcia, będziesz postępować zgodnie z formatem:

class My_Child_Class rozszerza The_Parent_Class { }

Oto jak to będzie wyglądać w naszej wtyczce:

/**

* 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. Zbuduj bramę

Ponieważ mamy swoją klasę, musimy zbudować naszą funkcję __construct(). Gwarantuje to, że zmienne, które musimy uwzględnić w naszej klasie.

Oto wymagane zmienne:

  • $this->id
  • $this->ikona
  • $this->has_fields = prawda lub fałsz (bool)
  • $this->method_title
  • $this->method_description

Po ustawieniu zmiennych konstruktor będzie potrzebował kilku innych funkcji.

Pola formularza zostaną ustawione w funkcji init_form_fields(). Ta funkcja dodaje wszystkie pola ustawień, takie jak włączenie bramy i dodanie tytułu.

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

4. Rozpocznij pola formularza

W tej sekcji stworzymy funkcję init_form_fields(), aby skonfigurować pola formularza dla naszej bramki płatności.

Funkcja nie robi nic w klasie nadrzędnej, ale upewnia się, że nie ma błędów krytycznych, jeśli jej nie zastąpisz.

Jednak nadamy mu pewną funkcjonalność w naszej klasie potomnej.

Podstawowymi polami, które powinniśmy uwzględnić to włączony tytuł i opis.

/**

* 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. Przetwórz płatność

To najważniejsza sekcja, jeśli chodzi o tworzenie bramki płatności. Musimy dodać funkcję do obsługi przetwarzania zamówienia, informującą WooCommerce, jaki powinien być status i dokąd klienci udają się po jego użyciu:

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. Dodaj informacje o bramce płatności do otrzymanych zamówień i wiadomości e-mail

Dodana przez nas bramka wymaga dalszych instrukcji, aby dokończyć płatność. Musimy upewnić się, że te instrukcje są wyświetlane zarówno na stronie z podziękowaniami, jak i w wiadomościach e-mail z zamówieniami, korzystając z metod pośredniczących thankyou_page() i 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. Dodaj do bramek płatności WooCommerce

Ostatnim krokiem jest upewnienie się, że bramka płatności jest dostępna w WooCommerce > Ustawienia > Kasa .

Wykorzystamy filtr woocommerce_payment_gateways, który da nam tablicę wszystkich dostępnych bramek. Oznacza to, że dodamy naszą bramę do tej tablicy, a następnie zwrócimy tablicę z dodaną bramą.

function wc_offline_add_to_gateways( $gateways ) {

$gateways[] = 'WC_Gateway_Offline';

return $gateways;

}

add_filter( 'woocommerce_payment_gateways', 'wc_offline_add_to_gateways' );

Wniosek

To wszystko, co musisz zrobić, aby dodać niestandardową bramkę płatności. Po prostu sklonowaliśmy funkcjonalność bramki „czekowej”.

Jeśli integrujesz się z procesorem płatności, pamiętaj, że musisz uwzględnić publikowanie i otrzymywanie informacji od procesora płatności.

Jeśli ten proces jest zbyt złożony, możesz zatrudnić wykwalifikowanego programistę. Zapewni to, że nie zepsujesz swojej witryny.

Podobne artykuły

  1. Przekierowanie WooCommerce po wylogowaniu [Najlepszy przewodnik]
  2. Jak dostosować strony produktów WooCommerce?
  3. Jak zmienić punkty końcowe kasy WooCommerce