Salta al contenuto principale
Versione: 1.x

Template di Gateway

Il Template di Gateway per WooCommerce fornisce un punto di partenza per creare i propri gateway di pagamento personalizzati per WooCommerce POS. Questo template include tutto il codice di base necessario e la struttura per costruire un gateway di pagamento completamente funzionale.

Caratteristiche

Template Completo

Struttura del gateway pronta all'uso con tutti i metodi richiesti

Integrazione POS

Pre-configurata per la compatibilità con WooCommerce POS

Impostazione Automatica

Personalizzazione del template basata su script

Estensibile

Facile da modificare ed estendere per fornitori di pagamento specifici

Introduzione

Opzione 1: Generazione Automatica del Template

Il template include uno script che personalizza automaticamente il template per il tuo specifico gateway:

  1. Clona il Repository:

    git clone https://github.com/wcpos/woocommerce-gateway-template.git
    cd woocommerce-gateway-template
  2. Esegui lo Script di Setup:

    ./create-gateway.sh
  3. Segui i Prompt:

    • Inserisci il nome del tuo gateway (es. "Il Mio Gateway di Pagamento")
    • Inserisci uno slug per il gateway (es. "il-mio-pagamento")
    • Fornisci una descrizione
    • Lo script genererà un plugin personalizzato

Opzione 2: Utilizzo Manuale del Template

Se preferisci la personalizzazione manuale:

  1. Scarica il Template:

  2. Personalizza il Template:

    • Sostituisci {{GATEWAY_NAME}} con il nome visualizzato del tuo gateway
    • Sostituisci {{GATEWAY_SLUG}} con l'identificativo unico del tuo gateway
    • Sostituisci {{GATEWAY_DESCRIPTION}} con la descrizione del tuo gateway
  3. Rinomina i File:

    • Rinomina wcpos-{{GATEWAY_SLUG}}.php per abbinare il tuo slug di gateway
    • Aggiorna gli header dei file e le informazioni sul plugin

Struttura del Template

File Principale del Plugin

Il file principale del plugin (wcpos-{{GATEWAY_SLUG}}.php) contiene:

  • Header del Plugin: Informazioni sul plugin WordPress
  • Classe del Gateway: Classe principale del gateway di pagamento
  • Inizializzazione: Setup del plugin e hook
  • Integrazione: Compatibilità con WooCommerce POS

Componenti Chiave

Struttura della Classe del Gateway:

class WCPOS_Gateway_{{GATEWAY_CLASS}} extends WC_Payment_Gateway {
// Gateway configuration
public function __construct() { }

// Admin settings form
public function init_form_fields() { }

// Process payment (main logic goes here)
public function process_payment( $order_id ) { }

// POS-specific methods
public function payment_fields() { }
}

Guida alla Personalizzazione

Configurazione di Base

  1. Informazioni sul Gateway:

    $this->id = 'your_gateway_id';
    $this->title = 'Your Gateway Name';
    $this->description = 'Gateway description for customers';
    $this->method_title = 'Admin title';
    $this->method_description = 'Admin description';
  2. Caratteristiche Supportate:

    $this->supports = array(
    'products',
    'refunds',
    'subscriptions', // if applicable
    );

Elaborazione dei Pagamenti

La logica principale del pagamento va nel metodo process_payment():

public function process_payment( $order_id ) {
$order = wc_get_order( $order_id );

// Your payment processing logic here
// Example: API calls, validation, etc.

if ( $payment_successful ) {
$order->payment_complete();
return array(
'result' => 'success',
'redirect' => $this->get_return_url( $order )
);
} else {
wc_add_notice( 'Payment failed', 'error' );
return array(
'result' => 'failure'
);
}
}

Impostazioni dell'Amministratore

Configura le impostazioni dell'amministratore in init_form_fields():

public function init_form_fields() {
$this->form_fields = array(
'enabled' => array(
'title' => 'Enable/Disable',
'type' => 'checkbox',
'label' => 'Enable Your Gateway',
'default' => 'yes'
),
'api_key' => array(
'title' => 'API Key',
'type' => 'text',
'description' => 'Enter your API key',
'default' => '',
'desc_tip' => true,
),
// Add more settings as needed
);
}

Integrazione POS

Per funzionalità specifiche del POS, implementa:

public function payment_fields() {
// Custom payment form for POS
if ( is_admin() && isset( $_GET['page'] ) && $_GET['page'] === 'wc-pos' ) {
// POS-specific payment fields
echo '<div class="pos-payment-fields">';
// Your custom POS interface
echo '</div>';
} else {
// Standard web checkout fields
parent::payment_fields();
}
}

Migliori Pratiche di Sviluppo

Standard di Codice

  • Standard di Codifica di WordPress: Segui gli standard di codifica PHP di WordPress
  • Linee Guida di WooCommerce: Attieniti alle pratiche di sviluppo di WooCommerce
  • Sicurezza: Sanitizza gli input, valida i dati, utilizza i nonce
  • Internazionalizzazione: Rendi le stringhe traducibili usando __() e _e()

Gestione degli Errori

// Proper error handling
try {
$result = $this->process_api_call( $data );
if ( is_wp_error( $result ) ) {
throw new Exception( $result->get_error_message() );
}
} catch ( Exception $e ) {
$order->add_order_note( 'Payment failed: ' . $e->getMessage() );
wc_add_notice( 'Payment processing error', 'error' );
return array( 'result' => 'failure' );
}

Logging

// Add logging for debugging
if ( $this->debug ) {
$this->log( 'Payment processing started for order ' . $order_id );
}

private function log( $message ) {
if ( empty( $this->logger ) ) {
$this->logger = wc_get_logger();
}
$this->logger->info( $message, array( 'source' => $this->id ) );
}

Testa il Tuo Gateway

Ambiente di Sviluppo

  1. Modalità di Test: Implementa sempre una modalità di test/sandbox
  2. Logging di Debug: Inclusi logging dettagliati per la risoluzione dei problemi
  3. Scenari di Errore: Testa varie condizioni di errore
  4. Testing POS: Testa specificamente nell'ambiente POS

Casi di Test

  • Pagamenti Riuciti: Verifica che gli ordini si completino correttamente
  • Pagamenti Falliti: Assicurati che ci sia una corretta gestione degli errori
  • Rimborsi: Testa la funzionalità di rimborso se supportata
  • Casi Limite: Testa con vari importi dell'ordine e configurazioni

Distribuzione

Imballaggio del Plugin

  1. Rimuovi i File di Sviluppo: Pulisci file di test e strumenti di sviluppo
  2. Controllo Versioni: Aggiorna i numeri di versione nell'header del plugin
  3. Documentazione: Includi README con le istruzioni di installazione
  4. Pacchetto Zip: Crea un file zip installabile

Distribuzione

  • Rifiniture di GitHub: Usa le rifiniture di GitHub per la gestione delle versioni
  • Directory dei Plugin di WordPress: Considera di inviare a WordPress.org
  • Distribuzione Privata: Ospita sui tuoi server se necessario

Funzionalità Avanzate

Webhook

Per aggiornamenti di pagamento in tempo reale:

public function handle_webhook() {
$payload = file_get_contents( 'php://input' );
$data = json_decode( $payload, true );

// Verify webhook signature
if ( $this->verify_webhook_signature( $payload ) ) {
$this->process_webhook_data( $data );
}
}

Supporto per Abbonamenti

Per pagamenti ricorrenti:

// Add subscription support
$this->supports[] = 'subscriptions';
$this->supports[] = 'subscription_cancellation';
$this->supports[] = 'subscription_suspension';

Multi-valuta

Per pagamenti internazionali:

public function get_supported_currencies() {
return array( 'USD', 'EUR', 'GBP', 'CAD' );
}

Risorse

Documentazione

Repository del Template

  • GitHub: woocommerce-gateway-template
  • Problemi: Riporta problematiche del template o richiedi funzionalità
  • Contributi: Invia miglioramenti tramite pull request

Richiesta di Aiuto

Per supporto nello sviluppo:

  • Visita il repository GitHub per problematiche specifiche del template
  • Controlla la documentazione degli sviluppatori di WooCommerce per domande sull’API
  • Unisciti alla comunità degli sviluppatori di WooCommerce per guida generale

Gateway di Esempio

Studia questi gateway personalizzati esistenti per esempi di implementazione: