Creare un custom payment in WooCommerce
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; quindi 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
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.
Passiamo al file 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 ativato, 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.
Una volta attivato il plugin, andate nelle impostazioni di pagamento di WooCommerce per vederlo nella lista.
Enjoy!
php wordpress woocommerce wc_payment_gateway
Commentami!