Come creare un gateway di pagamento WooCommerce
Pubblicato: 2021-04-26Vuoi creare un gateway di pagamento WooCommerce che accetti la tua opzione di pagamento personalizzata? In questo tutorial, voglio mostrarti brevemente come creare un gateway di pagamento in WooCommerce per consentire ai tuoi clienti di pagare tramite questo gateway di pagamento WooCommerce personalizzato.
È possibile creare il proprio gateway di pagamento personalizzato. Ci sono 2 modi per raggiungere questo obiettivo. Puoi utilizzare un plug-in o un codice personalizzato.
Tuttavia, è importante notare che i plugin ingrosseranno il tuo sito. Questo è il motivo per cui utilizzeremo uno snippet di codice personalizzato.
Discuteremo ogni passaggio in dettaglio, per consentire ai neofiti di utilizzare questo metodo.
Come creare un gateway di pagamento WooCommerce
In questo post creeremo un plugin per aggiungere un nuovo gateway di pagamento. Ciò significa che è necessario disporre di capacità di programmazione per farlo.
Estenderemo una lezione di WooCommerce. WooCommerce ci fornisce diverse classi di base, come gateway di pagamento o classi di posta elettronica.
Queste classi possono essere estese per aggiungere le tue funzionalità, risparmiando tempo nello sviluppo. Garantisce inoltre che il tuo plug-in funzioni in modo standard.
La classe WC_Payment_Gateway
La classe WC_Payment_Gateway lo estende per darci struttura e funzioni che saranno specifiche dei metodi di pagamento, come la possibilità di ottenere i totali degli ordini o l'URL della pagina di ringraziamento.
Possiamo trarre vantaggio dalla struttura se estendiamo questa classe. Questo gestirà alcune funzioni per noi, incluso ottenere il titolo e la descrizione e visualizzarlo nella pagina di pagamento.
È importante notare che tutti i gateway di pagamento in WooCommerce inizieranno estendendo la classe WC_Payment_Gateway.
Ecco i passaggi che devi seguire:
1. Verifica se WooCommerce è attivo
Poiché estenderemo una classe WooCommerce, dobbiamo verificare se è attiva:
// Make sure WooCommerce is active if ( ! in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) return;
2. Costruisci la tua classe per bambini
Per fare ciò, dobbiamo prima racchiuderlo in una funzione init e agganciarlo a plugins_loaded più tardi della priorità predefinita.
Dopo aver verificato se WooCommerce è attivo, carichiamo la nostra classe dopo il core di WooCommerce. Questo lo rende un controllo secondario contro gli errori irreversibili.
Garantisce inoltre che la classe WC_Payment_Gateway sia disponibile. o estendere una classe, seguirai il formato:
classe My_Child_Class estende The_Parent_Class { }
Ecco come apparirà nel nostro plugin:
/** * 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. Costruisci il gateway
Dato che abbiamo una classe fuori, dobbiamo costruire la nostra funzione __construct(). Ciò garantisce che le variabili che dobbiamo includere nella nostra classe.
Ecco le variabili richieste:
- $questo->id
- $questo->icona
- $this->has_fields = vero o falso (bool)
- $questo->titolo_metodo
- $questo->descrizione_metodo
Dopo che le variabili sono state impostate, il costruttore avrà bisogno di alcune altre funzioni.
I campi del modulo verranno impostati nella funzione init_form_fields(). Questa funzione aggiunge tutti i campi delle impostazioni come l'abilitazione del gateway e l'aggiunta di un titolo.
$this->init_form_fields(); $this->init_settings();
4. Avviare i campi del modulo
In questa sezione creeremo una funzione init_form_fields() per impostare i campi del modulo per il nostro gateway di pagamento.
La funzione non fa nulla nella classe genitore, ma si assicura che non ci siano errori irreversibili se non lo si sovrascrive.
Tuttavia, gli daremo alcune funzionalità nella nostra classe figlio.
I campi di base che dovremmo includere sono titolo e descrizione abilitati.
/** * 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. Elabora il pagamento
Questa è la sezione più importante quando si tratta di creare un gateway di pagamento. Dobbiamo aggiungere una funzione per gestire l'elaborazione dell'ordine, dicendo a WooCommerce quale stato dovrebbe avere e dove vanno i clienti dopo che è stato utilizzato:
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. Aggiungi le informazioni sul gateway di pagamento all'ordine ricevuto e alle e-mail
Il gateway che abbiamo aggiunto richiede ulteriori istruzioni per completare il pagamento. Dobbiamo assicurarci che queste istruzioni siano mostrate sia nella pagina di ringraziamento che nelle e-mail dell'ordine, utilizzando i metodi stub thanksyou_page() e 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. Aggiungi ai gateway di pagamento WooCommerce
L'ultimo passaggio è assicurarsi che il gateway di pagamento sia disponibile in WooCommerce > Impostazioni > Checkout .
Useremo il filtro woocommerce_payment_gateways che ci fornisce l'array di tutti i gateway disponibili. Ciò significa che aggiungeremo il nostro gateway a questo array e quindi restituiremo l'array con il nostro gateway aggiunto.
function wc_offline_add_to_gateways( $gateways ) { $gateways[] = 'WC_Gateway_Offline'; return $gateways; } add_filter( 'woocommerce_payment_gateways', 'wc_offline_add_to_gateways' );
Conclusione
Tutto ciò che devi fare per aggiungere un gateway di pagamento personalizzato. Abbiamo semplicemente clonato la funzionalità del gateway “Cheque”.
Se ti stai integrando con un elaboratore di pagamento, è importante notare che è necessario incorporare la pubblicazione e la ricezione di informazioni dal processore di pagamento.
Se questo processo è troppo complesso, puoi assumere uno sviluppatore qualificato. Ciò assicurerà di non scomporre il tuo sito.
Articoli simili
- Reindirizzamento WooCommerce dopo il checkout: reindirizza alla pagina di ringraziamento personalizzata
- Reindirizzamento WooCommerce dopo il logout [Guida definitiva]
- Come personalizzare le pagine dei prodotti WooCommerce
- Come impostare la spedizione gratuita con una spesa minima in WooCommerce
- Come modificare le icone del gateway di pagamento WooCommerce
- Come configurare WooCommerce Bitcoin Checkout
- Come aggiungere la pagina di pagamento della fattura WooCommerce
- Come aggiungere una classe di navigazione attiva in base all'URL
- Come integrare Stripe con WooCommerce
- Come rimuovere il pulsante di pagamento WooCommerce
- Come inviare a Mpesa WooCommerce il pagamento gratuitamente
- Come nascondere l'icona PayPal nella pagina di pagamento di WooCommerce
- Come aggiungere icone di pagamento WooCommerce nel footer [HTML]
- Come modificare l'icona PayPal nella pagina di pagamento di WooCommerce
- Come aggiungere la ricerca alla pagina del negozio in WooCommerce
- Come aggiungere la lista dei desideri in WooCommerce
- Come verificare se l'utente ha effettuato l'accesso a WordPress
- Come rimuovere le opzioni di pagamento WooCommerce dal checkout
- Come cancellare il carrello al logout in WooCommerce
- Come modificare gli endpoint di pagamento WooCommerce