So erstellen Sie ein WooCommerce-Zahlungsgateway
Veröffentlicht: 2021-04-26Möchten Sie ein WooCommerce Payment Gateway erstellen, das Ihre benutzerdefinierte Zahlungsoption akzeptiert? In diesem Tutorial möchte ich Ihnen kurz zeigen, wie Sie ein Zahlungsgateway in WooCommerce erstellen, damit Ihre Kunden über dieses benutzerdefinierte WooCommerce-Zahlungsgateway bezahlen können.
Es ist möglich, Ihr eigenes benutzerdefiniertes Zahlungsgateway zu erstellen. Es gibt 2 Möglichkeiten, dies zu erreichen. Sie können entweder ein Plugin oder einen benutzerdefinierten Code verwenden.
Es ist jedoch wichtig zu beachten, dass Plugins Ihre Website aufblähen. Aus diesem Grund verwenden wir ein benutzerdefiniertes Code-Snippet.
Wir werden jeden Schritt im Detail besprechen, damit Neulinge diese Methode anwenden können.
So erstellen Sie ein WooCommerce-Zahlungsgateway
In diesem Beitrag erstellen wir ein Plugin, um ein neues Zahlungsgateway hinzuzufügen. Das bedeutet, dass Sie über Programmierkenntnisse verfügen müssen, um dies zu tun.
Wir werden eine WooCommerce-Klasse erweitern. WooCommerce stellt uns mehrere Kernklassen zur Verfügung, wie z. B. Payment Gateway oder E-Mail-Klassen.
Diese Klassen können erweitert werden, um Ihre eigene Funktionalität hinzuzufügen, was Zeit bei der Entwicklung spart. Es stellt auch sicher, dass Ihr Plugin standardmäßig funktioniert.
Die WC_Payment_Gateway-Klasse
Die WC_Payment_Gateway-Klasse erweitert dies, um uns eine Struktur und Funktionen zu geben, die für Zahlungsmethoden spezifisch sind, wie z. B. die Möglichkeit, Bestellsummen oder die URL der Dankesseite abzurufen.
Wir können von der Struktur profitieren, wenn wir diese Klasse erweitern. Dadurch werden einige Funktionen für uns erledigt, darunter das Abrufen des Titels und der Beschreibung und das Anzeigen auf der Checkout-Seite.
Es ist wichtig zu beachten, dass alle Zahlungs-Gateways in WooCommerce mit der Erweiterung der WC_Payment_Gateway-Klasse beginnen.
Hier sind die Schritte, die Sie befolgen müssen:
1. Überprüfen Sie, ob WooCommerce aktiv ist
Da wir eine WooCommerce-Klasse erweitern werden, müssen wir prüfen, ob sie aktiv ist:
// Make sure WooCommerce is active if ( ! in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) return;
2. Erstellen Sie Ihre untergeordnete Klasse
Dazu müssen wir dies zuerst in eine Init-Funktion packen und später als die Standardpriorität in plugins_loaded einhängen.
Nachdem wir überprüft haben, ob WooCommerce aktiv ist, laden wir unsere Klasse nach dem WooCommerce-Core. Dies macht es zu einer sekundären Überprüfung auf schwerwiegende Fehler.
Es stellt auch sicher, dass die Klasse WC_Payment_Gateway verfügbar ist. Um eine Klasse zu erweitern, folgen Sie dem Format:
Klasse My_Child_Class erweitert The_Parent_Class { }
So sieht das in unserem Plugin aus:
/** * 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. Bauen Sie das Tor
Da wir unsere Klasse haben, müssen wir unsere Funktion __construct() erstellen. Dadurch wird sichergestellt, dass die Variablen, die wir in unsere Klasse aufnehmen müssen.
Hier sind die Variablen, die benötigt werden:
- $this->id
- $this->Symbol
- $this->has_fields = wahr oder falsch (bool)
- $this->method_title
- $this->method_description
Nachdem die Variablen gesetzt wurden, benötigt der Konstruktor noch einige weitere Funktionen.
Die Formularfelder werden in der Funktion init_form_fields() gesetzt. Diese Funktion fügt alle Einstellungsfelder hinzu, z. B. das Aktivieren des Gateways und das Hinzufügen eines Titels.
$this->init_form_fields(); $this->init_settings();
4. Initialisieren Sie die Formularfelder
In diesem Abschnitt erstellen wir eine init_form_fields()-Funktion, um die Formularfelder für unser Zahlungsgateway einzurichten.
Die Funktion tut nichts in der übergeordneten Klasse, stellt aber sicher, dass keine schwerwiegenden Fehler auftreten, wenn Sie sie nicht überschreiben.
Wir werden ihm jedoch einige Funktionen in unserer untergeordneten Klasse geben.
Die grundlegenden Felder, die wir einschließen sollten, sind aktivierter Titel und Beschreibung.
/** * 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. Verarbeiten Sie die Zahlung
Dies ist der wichtigste Abschnitt, wenn es darum geht, ein Zahlungsgateway zu erstellen. Wir müssen eine Funktion hinzufügen, um die Verarbeitung der Bestellung zu handhaben und WooCommerce mitzuteilen, welchen Status sie haben soll und wohin Kunden nach ihrer Verwendung gehen:
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. Fügen Sie Zahlungs-Gateway-Informationen zu erhaltenen Bestellungen und E-Mails hinzu
Das von uns hinzugefügte Gateway erfordert weitere Anweisungen, um die Zahlung abzuschließen. Wir müssen sicherstellen, dass diese Anweisungen sowohl auf der Dankesseite als auch in den Bestell-E-Mails angezeigt werden, indem wir die Stub-Methoden thankyou_page() und email_instructions() verwenden.
/** * 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. Zu WooCommerce Payment Gateways hinzufügen
Der letzte Schritt besteht darin, sicherzustellen, dass das Zahlungsgateway unter WooCommerce > Einstellungen > Kasse verfügbar ist.
Wir verwenden den Filter woocommerce_payment_gateways, der uns das Array aller verfügbaren Gateways liefert. Das bedeutet, dass wir unser Gateway zu diesem Array hinzufügen und dann das Array mit unserem hinzugefügten Gateway zurückgeben.
function wc_offline_add_to_gateways( $gateways ) { $gateways[] = 'WC_Gateway_Offline'; return $gateways; } add_filter( 'woocommerce_payment_gateways', 'wc_offline_add_to_gateways' );
Fazit
Das ist alles, was Sie tun müssen, um ein benutzerdefiniertes Zahlungsgateway hinzuzufügen. Wir haben einfach die Funktionalität des „Check“-Gateways geklont.
Wenn Sie mit einem Zahlungsabwickler integrieren, ist es wichtig zu beachten, dass Sie Buchungs- und Empfangsinformationen vom Zahlungsabwickler integrieren müssen.
Wenn dieser Prozess zu komplex ist, können Sie einen qualifizierten Entwickler beauftragen. Dadurch wird sichergestellt, dass Ihre Website nicht beschädigt wird.
Ähnliche Artikel
- WooCommerce-Weiterleitung nach dem Checkout: Weiterleitung zur benutzerdefinierten Dankesseite
- WooCommerce-Weiterleitung nach Abmeldung [Ultimate Guide]
- So passen Sie WooCommerce-Produktseiten an
- So richten Sie kostenlosen Versand mit minimalen Ausgaben in WooCommerce ein
- So ändern Sie die WooCommerce Payment Gateway-Symbole
- So richten Sie WooCommerce Bitcoin Checkout ein
- So fügen Sie eine WooCommerce-Rechnungs-Checkout-Seite hinzu
- So fügen Sie eine aktive Navigationsklasse basierend auf der URL hinzu
- So integrieren Sie Stripe mit WooCommerce
- So entfernen Sie den Checkout-Button WooCommerce
- So senden Sie kostenlos an Mpesa WooCommerce Payment
- So verbergen Sie das PayPal-Symbol auf der WooCommerce-Checkout-Seite
- So fügen Sie WooCommerce-Zahlungssymbole in der Fußzeile hinzu [HTML]
- So ändern Sie das PayPal-Symbol auf der WooCommerce-Checkout-Seite
- So fügen Sie eine Suche zur Shop-Seite in WooCommerce hinzu
- So fügen Sie eine Wunschliste in WooCommerce hinzu
- So überprüfen Sie, ob der Benutzer in WordPress angemeldet ist
- So entfernen Sie WooCommerce-Zahlungsoptionen von der Kasse
- So löschen Sie den Warenkorb beim Abmelden in WooCommerce
- So ändern Sie Checkout-Endpunkte WooCommerce