Comment créer une passerelle de paiement WooCommerce

Publié: 2021-04-26

Créer une passerelle de paiement WooCommerce Voulez-vous créer une passerelle de paiement WooCommerce qui accepte votre option de paiement personnalisée ? Dans ce didacticiel, je souhaite vous montrer brièvement comment créer une passerelle de paiement dans WooCommerce pour permettre à vos clients de payer via cette passerelle de paiement WooCommerce personnalisée.

Il est possible de créer votre propre passerelle de paiement personnalisée. Il y a 2 façons d'y parvenir. Vous pouvez utiliser un plugin ou un code personnalisé.

Cependant, il est important de noter que les plugins vont gonfler votre site. C'est pourquoi nous utiliserons un extrait de code personnalisé.

Nous discuterons de chaque étape en détail, pour permettre aux débutants d'utiliser cette méthode.

Comment créer une passerelle de paiement WooCommerce

Dans cet article, nous allons créer un plugin pour ajouter une nouvelle passerelle de paiement. Cela signifie que vous devez avoir des compétences en programmation pour le faire.

Nous allons étendre une classe WooCommerce. WooCommerce nous fournit plusieurs classes de base, telles que la passerelle de paiement ou les classes de messagerie.

Ces classes peuvent être étendues pour ajouter vos propres fonctionnalités, ce qui permet de gagner du temps sur le développement. Cela garantit également que votre plugin fonctionne de manière standard.

La classe WC_Payment_Gateway

La classe WC_Payment_Gateway étend cela pour nous donner une structure et des fonctions qui seront spécifiques aux méthodes de paiement, comme la possibilité d'obtenir les totaux des commandes ou l'URL de la page de remerciement.

Nous pouvons bénéficier de la structure si nous étendons cette classe. Cela gérera certaines fonctions pour nous, y compris l'obtention du titre et de la description et leur affichage sur la page de paiement.

Il est important de noter que toutes les passerelles de paiement dans WooCommerce commenceront par étendre la classe WC_Payment_Gateway.

Voici les étapes que vous devez suivre :

1. Vérifiez si WooCommerce est actif

Puisque nous allons étendre une classe WooCommerce, nous devons vérifier si elle est active :

// Make sure WooCommerce is active

if ( ! in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) return;

2. Créez votre classe enfant

Pour ce faire, nous devons d'abord l'envelopper dans une fonction init et l'accrocher à plugins_loaded plus tard que la priorité par défaut.

Après avoir vérifié si WooCommerce est actif, nous chargeons notre classe après le noyau WooCommerce. Cela en fait un contrôle secondaire contre les erreurs fatales.

Il garantit également que la classe WC_Payment_Gateway est disponible. Pour étendre une classe, vous suivrez le format :

class My_Child_Class étend The_Parent_Class { }

Voici à quoi cela ressemblera dans notre 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. Construisez la passerelle

Puisque nous avons notre classe, nous devons construire notre fonction __construct(). Cela garantit que les variables que nous devons inclure dans notre classe.

Voici les variables requises :

  • $this->identifiant
  • icône $this->
  • $this->has_fields = vrai ou faux (bool)
  • $this->method_title
  • $this->method_description

Une fois les variables définies, le constructeur aura besoin de quelques autres fonctions.

Les champs du formulaire seront définis dans la fonction init_form_fields(). Cette fonction ajoute tous les champs de paramètres tels que l'activation de la passerelle et l'ajout d'un titre.

$this->init_form_fields();
$this->init_settings();

4. Initialisez les champs du formulaire

Dans cette section, nous allons créer une fonction init_form_fields() pour configurer les champs de formulaire pour notre passerelle de paiement.

La fonction ne fait rien dans la classe parent, mais elle s'assure qu'il n'y a pas d'erreur fatale si vous ne la remplacez pas.

Cependant, nous lui donnerons quelques fonctionnalités dans notre classe enfant.

Les champs de base que nous devons inclure sont le titre et la description activés.

/**

* 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. Traiter le paiement

Il s'agit de la section la plus importante lorsqu'il s'agit de créer une passerelle de paiement. Nous devons ajouter une fonction pour gérer le traitement de la commande, indiquant à WooCommerce quel statut doit avoir et où les clients vont après son utilisation :

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. Ajoutez les informations de la passerelle de paiement à la commande reçue et aux e-mails

La passerelle que nous avons ajoutée nécessite des instructions supplémentaires pour effectuer le paiement. Nous devons nous assurer que ces instructions sont affichées à la fois sur la page de remerciement et sur les e-mails de commande, en utilisant les méthodes de talon thankyou_page() et 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. Ajouter aux passerelles de paiement WooCommerce

La dernière étape consiste à s'assurer que la passerelle de paiement est disponible sous WooCommerce > Paramètres > Paiement .

Nous utiliserons le filtre woocommerce_payment_gateways qui nous donne le tableau de toutes les passerelles disponibles. Cela signifie que nous ajouterons notre passerelle dans ce tableau, puis renverrons le tableau avec notre passerelle ajoutée.

function wc_offline_add_to_gateways( $gateways ) {

$gateways[] = 'WC_Gateway_Offline';

return $gateways;

}

add_filter( 'woocommerce_payment_gateways', 'wc_offline_add_to_gateways' );

Conclusion

C'est tout ce que vous avez à faire pour ajouter une passerelle de paiement personnalisée. Nous avons simplement cloné la fonctionnalité de la passerelle « Chèque ».

Si vous intégrez un processeur de paiement, il est important de noter que vous devez intégrer les informations de publication et de réception du processeur de paiement.

Si ce processus est trop complexe, vous pouvez embaucher un développeur qualifié. Cela garantira que vous ne cassez pas votre site.

Articles similaires

  1. Redirection WooCommerce après la déconnexion [Guide ultime]
  2. Comment personnaliser les pages de produits WooCommerce
  3. Comment changer les points de terminaison de paiement WooCommerce