Como criar um gateway de pagamento WooCommerce

Publicados: 2021-04-26

Criar gateway de pagamento WooCommerce Deseja criar o WooCommerce Payment Gateway que aceite sua opção de pagamento personalizada? Neste tutorial, quero mostrar brevemente como criar um gateway de pagamento no WooCommerce para permitir que seus clientes paguem por meio desse gateway de pagamento personalizado do WooCommerce.

É possível criar seu próprio gateway de pagamento personalizado. Existem 2 maneiras de conseguir isso. Você pode usar um plugin ou código personalizado.

No entanto, é importante notar que os plugins vão inchar seu site. É por isso que usaremos um snippet de código personalizado.

Discutiremos cada etapa em detalhes, para permitir que os novatos usem esse método.

Como criar um gateway de pagamento WooCommerce

Neste post, vamos criar um plugin para adicionar um novo gateway de pagamento. Isso significa que você precisa ter habilidades de programação para fazer isso.

Vamos estender uma classe WooCommerce. O WooCommerce nos fornece várias classes principais, como gateway de pagamento ou classes de e-mail.

Essas classes podem ser estendidas para adicionar sua própria funcionalidade, o que economiza tempo no desenvolvimento. Também garante que seu plug-in funcione de maneira padrão.

A classe WC_Payment_Gateway

A classe WC_Payment_Gateway estende isso para nos fornecer estrutura e funções que serão específicas para métodos de pagamento, como a capacidade de obter totais de pedidos ou o URL da página de agradecimento.

Podemos nos beneficiar da estrutura se estendermos essa classe. Isso irá lidar com algumas funções para nós, incluindo obter o título e a descrição e exibi-los na página de checkout.

É importante observar que todos os gateways de pagamento no WooCommerce começarão estendendo a classe WC_Payment_Gateway.

Aqui estão os passos que você precisa seguir:

1. Verifique se o WooCommerce está ativo

Como estaremos estendendo uma classe WooCommerce, precisamos verificar se ela está ativa:

// Make sure WooCommerce is active

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

2. Construa sua classe filha

Para fazer isso, primeiro precisamos envolver isso em uma função init e ligá-lo em plugins_loaded depois da prioridade padrão.

Depois de verificarmos se o WooCommerce está ativo, carregamos nossa classe após o núcleo do WooCommerce. Isso o torna uma verificação secundária contra erros fatais.

Também garante que a classe WC_Payment_Gateway esteja disponível. o estender uma classe, você seguirá o formato:

class My_Child_Class estende The_Parent_Class { }

Veja como isso ficará em nosso 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. Construa o Portal

Já que temos nossa classe, precisamos construir nossa função __construct(). Isso garante que as variáveis ​​que precisamos incluir em nossa classe.

Aqui estão as variáveis ​​que são necessárias:

  • $this->id
  • $this->ícone
  • $this->has_fields = true ou false (bool)
  • $this->method_title
  • $this->method_description

Depois que as variáveis ​​forem definidas, o construtor precisará de algumas outras funções.

Os campos do formulário serão definidos na função init_form_fields(). Esta função adiciona todos os campos de configuração, como habilitar o gateway e adicionar um título.

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

4. Inicie os campos do formulário

Nesta seção, criaremos uma função init_form_fields() para configurar os campos do formulário para nosso gateway de pagamento.

A função não faz nada na classe pai, mas garante que não haja erros fatais se você não a substituir.

No entanto, daremos a ele algumas funcionalidades em nossa classe filha.

Os campos básicos que devemos incluir são o título e a descrição habilitados.

/**

* 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. Processe o Pagamento

Esta é a seção mais importante quando se trata de criar um gateway de pagamento. Precisamos adicionar uma função para lidar com o processamento do pedido, informando ao WooCommerce qual status deve ter e para onde os clientes vão após o uso:

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. Adicionar informações do gateway de pagamento ao pedido recebido e aos e-mails

O gateway que adicionamos requer mais instruções para concluir o pagamento. Precisamos garantir que essas instruções sejam mostradas na página de agradecimento e nos e-mails de pedidos, usando os métodos de stub thankyou_page() e 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. Adicionar aos gateways de pagamento WooCommerce

A última etapa é garantir que o gateway de pagamento esteja disponível em WooCommerce > Configurações > Checkout .

Usaremos o filtro woocommerce_payment_gateways que nos dá a matriz de todos os gateways disponíveis. Isso significa que adicionaremos nosso gateway a esse array e, em seguida, retornaremos o array com nosso gateway adicionado.

function wc_offline_add_to_gateways( $gateways ) {

$gateways[] = 'WC_Gateway_Offline';

return $gateways;

}

add_filter( 'woocommerce_payment_gateways', 'wc_offline_add_to_gateways' );

Conclusão

Isso tudo o que você precisa fazer para adicionar um gateway de pagamento personalizado. Nós simplesmente clonamos a funcionalidade do gateway “Cheque”.

Se você estiver integrando com um processador de pagamento, é importante observar que você precisa incorporar informações de postagem e recebimento do processador de pagamento.

Se esse processo for muito complexo, você pode contratar um desenvolvedor qualificado. Isso garantirá que você não destrua seu site.

Artigos semelhantes

  1. Redirecionamento do WooCommerce após o logout [Guia definitivo]
  2. Como personalizar páginas de produtos WooCommerce
  3. Como alterar os endpoints de checkout WooCommerce