Cum se creează un gateway de plată WooCommerce

Publicat: 2021-04-26

Creați poarta de plată WooCommerce Doriți să creați WooCommerce Payment Gateway care acceptă opțiunea dvs. de plată personalizată? În acest tutorial, vreau să vă arăt pe scurt cum să creați un gateway de plată în WooCommerce pentru a le permite clienților să plătească prin acest gateway de plată personalizat WooCommerce.

Este posibil să vă creați propriul gateway personalizat de plată. Există 2 moduri de a realiza acest lucru. Puteți utiliza fie un plugin, fie un cod personalizat.

Cu toate acestea, este important să rețineți că pluginurile vă vor umfla site-ul. Acesta este motivul pentru care vom folosi un fragment de cod personalizat.

Vom discuta fiecare pas în detaliu, pentru a permite începătorilor să folosească această metodă.

Cum se creează un gateway de plată WooCommerce

În această postare, vom crea un plugin pentru a adăuga o nouă poartă de plată. Aceasta înseamnă că trebuie să aveți abilități de programare pentru a face acest lucru.

Vom extinde o clasă WooCommerce. WooCommerce ne oferă mai multe clase de bază, cum ar fi gateway-ul de plată sau cursurile de e-mail.

Aceste clase pot fi extinse pentru a adăuga propriile funcționalități, ceea ce economisește timp la dezvoltare. De asemenea, asigură că pluginul dumneavoastră funcționează într-un mod standard.

Clasa WC_Payment_Gateway

Clasa WC_Payment_Gateway extinde acest lucru pentru a ne oferi o structură și funcții care vor fi specifice metodelor de plată, cum ar fi capacitatea de a obține totalul comenzilor sau adresa URL a paginii de mulțumire.

Putem beneficia de structură dacă extindem această clasă. Aceasta va gestiona unele funcții pentru noi, inclusiv obținerea titlului și descrierea și afișarea acestora pe pagina de finalizare a achiziției.

Este important de reținut că toate gateway-urile de plată din WooCommerce vor începe prin extinderea clasei WC_Payment_Gateway.

Iată pașii pe care trebuie să-i urmezi:

1. Verificați dacă WooCommerce este activ

Deoarece vom extinde o clasă WooCommerce, trebuie să verificăm dacă este activă:

// Make sure WooCommerce is active

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

2. Construiește-ți clasa copilului

Pentru a face acest lucru, trebuie mai întâi să o încapsulăm într-o funcție de inițializare și să o conectăm la plugins_loaded mai târziu decât prioritatea implicită.

După ce verificăm dacă WooCommerce este activ, ne încărcăm clasa după nucleul WooCommerce. Acest lucru îl face o verificare secundară împotriva erorilor fatale.

De asemenea, se asigură că clasa WC_Payment_Gateway este disponibilă. o extindeți o clasă, veți urma formatul:

clasa My_Child_Class extinde The_Parent_Class { }

Iată cum va arăta în pluginul nostru:

/**

* 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. Construiți Gateway-ul

Deoarece avem clasa out, trebuie să ne construim funcția __construct(). Acest lucru asigură că variabilele pe care trebuie să le includem în clasa noastră.

Iată variabilele care sunt necesare:

  • $this->id
  • $this->pictogramă
  • $this->has_fields = adevărat sau fals (bool)
  • $this->method_title
  • $this->method_description

După ce variabilele au fost setate, constructorul va avea nevoie de câteva alte funcții.

Câmpurile Formular vor fi setate în funcția init_form_fields(). Această funcție adaugă toate câmpurile de setări, cum ar fi activarea gateway-ului și adăugarea unui titlu.

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

4. Porniți câmpurile de formular

În această secțiune, vom crea o funcție init_form_fields() pentru a configura câmpurile de formular pentru poarta noastră de plată.

Funcția nu face nimic în clasa părinte, dar se asigură că nu există erori fatale dacă nu o suprascrieți.

Cu toate acestea, îi vom oferi o anumită funcționalitate în clasa noastră de copii.

Câmpurile de bază pe care ar trebui să le includem sunt titlul și descrierea activate.

/**

* 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. Procesați plata

Aceasta este cea mai importantă secțiune când vine vorba de crearea unui gateway de plată. Trebuie să adăugăm o funcție pentru a gestiona procesarea comenzii, spunându-i lui WooCommerce ce statut ar trebui să aibă și unde merg clienții după ce este utilizat:

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. Adăugați informații despre Gateway de plată la comanda primită și la e-mailuri

Poarta de acces pe care am adăugat-o necesită instrucțiuni suplimentare pentru a finaliza plata. Trebuie să ne asigurăm că aceste instrucțiuni sunt afișate atât pe pagina de mulțumire, cât și pe e-mailurile de comandă, folosind metodele stub 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. Adăugați la WooCommerce Payment Gateways

Ultimul pas este să vă asigurați că gateway-ul de plată este disponibil sub WooCommerce > Setări > Checkout .

Vom folosi filtrul woocommerce_payment_gateways care ne oferă gama tuturor gateway-urilor disponibile. Aceasta înseamnă că vom adăuga gateway-ul nostru în această matrice și apoi vom returna matricea cu gateway-ul adăugat.

function wc_offline_add_to_gateways( $gateways ) {

$gateways[] = 'WC_Gateway_Offline';

return $gateways;

}

add_filter( 'woocommerce_payment_gateways', 'wc_offline_add_to_gateways' );

Concluzie

Asta tot ce trebuie să faceți pentru a adăuga o poartă de plată personalizată. Pur și simplu am clonat funcționalitatea gateway-ului „Cec”.

Dacă vă integrați cu un procesator de plăți, este important să rețineți că trebuie să includeți informații de postare și primire de la procesorul de plăți.

Dacă acest proces este prea complex, puteți angaja un dezvoltator calificat. Acest lucru vă va asigura că nu vă deteriorați site-ul.

Articole similare

  1. Redirecționare WooCommerce după deconectare [Ghid final]
  2. Cum să personalizați paginile produselor WooCommerce
  3. Cum se schimbă punctele finale de checkout WooCommerce