Creare un metodo di pagamento personalizzato in WooCommerce
← ritorno a WordPress/WooCommerce
Estratto da: https://www.mattepuffo.com/blog/articolo/2883-creare-un-custom-payment-in-woocommerce.html
WooCommerce è probabilmente il plugin per Wordpress più utilizzato per la creazione di ecommerce.
Ha tantissimi plugins, e può essere esteso con altri plugin custom.
Oggi vediamo come crearne uno per aggiungere un metodo di pagamento custom.
La struttura di base è la stessa dei plugin di Wordpress;
1. Cartella plugin
Per prima cosa create una cartella dentro a wp-content/plugins, nominandola seguendo le regole base di Wordpress: ad esempio my-custom-payment.
Qui dentro abbiamo bisogno almeno di due files:
- readme.txt
- un file PHP con lo stesso nome della cartella -> my-custom-payment.php
2. File informativo
Cominciamo dal readme.txt:
=== WooCommerce My Custom Payment === Contributors: Tags: Requires at least: Tested up to: Stable tag: License: License URI: == Description == La vostra descrizione
Come vedete ci sono alcune informazioni di base; non penso siano tutte obbligatorie.
3. File plugin
Passiamo al file PHP:
<?php /** * Plugin Name: Custom for Woocommerce * Plugin URI: https://www.sito.it * Description: Custom Payment * Author: Nome Congome * Author URI: https://www.sito.it * Version: 0.1 * * @package WC_Admin */ defined('ABSPATH') || exit; // AGGIUNGO UN FILTRO PER VISUALIZZARE IL GATEWAY ALL'INTERNO DELLA LISTA DI WOOCOMMERCE add_filter('woocommerce_payment_gateways', 'Custom_add_gateway_class'); function Custom_add_gateway_class($gateways) { $gateways[] = 'WC_Custom'; return $gateways; } // AGGIUNGO L'AZIONE add_action('plugins_loaded', 'init_wc_custom_payment_gateway'); function init_wc_custom_payment_gateway() { class WC_Custom extends WC_Payment_Gateway { public function __construct() { // CAMPI OBLIGATORI $this->id = 'wc_custom'; $this->method_title = 'Custom'; $this->title = 'Custom'; $this->has_fields = true; $this->method_description = 'Custom payment gateway'; // CARICO LE IMPOSTAZIONI $this->init_form_fields(); $this->init_settings(); $this->enabled = $this->get_option('enabled'); $this->title = $this->get_option('title'); $this->description = $this->get_option('description'); // PROCESSO LE IMPOSTAZIONI add_action('woocommerce_update_options_payment_gateways_' . $this->id, array($this, 'process_admin_options')); } public function init_form_fields() { $this->form_fields = array( 'enabled' => array( 'title' => 'Enable/Disable', 'type' => 'checkbox', 'label' => 'Enable Custom', 'default' => 'yes' ), 'title' => array( 'title' => 'Custom', 'type' => 'text', 'description' => 'This controls the payment Custom', 'default' => 'Custom Payment Gateway', 'desc_tip' => true, ), 'description' => array( 'title' => 'Customer Message', 'type' => 'textarea', 'css' => 'width:500px;', 'default' => 'Weld Payment Gateway', 'description' => 'Paga con Custom.', ) ); } // PROCESSO DI PAGAMENTO function process_payment($order_id) { global $woocommerce; $order = new WC_Order($order_id); // QUI DOVETE METTERE IL VOSTRO CODICE $res = $this->CustomPayment(); // FINE VOSTRO CODICE $order->update_status('processing', 'Additional data like transaction id or reference number'); $woocommerce->cart->empty_cart(); $order->reduce_order_stock(); return array( 'result' => 'success', 'redirect' => $this->get_return_url($order) ); } } }
Le prime righe, quelle commentate, le dovete tenere; sennò il plugin non verrà visualizzato nella lista di quelli installati.
Poi usiamo add_filter per visualizzare il metodo di pagamento nelle opzioni di WooCommerce; senza quelle righe, anche a plugin attivato, il nostro gateway non apparirà tra quelli disponibili.
Con add_action carichiamo il plugin; nella nostra funzione c'è una classe che deve estendere WC_Payment_Gateway.
Qui dentro ci sta tutto il blocco più o meno obbligatorio; vi ho segnalato dove dovete inserire il vostro codice.
Ovviamente il comportamento generale dipende anche dal tipo di gateway che dovete creare, e a qali eventuali API dovete agganciarvi.
4. Attivazione
Una volta attivato il plugin, andate nelle impostazioni di pagamento di WooCommerce per vederlo nella lista.