Como criar um gateway de pagamento WooCommerce
Publicados: 2021-04-26Deseja 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
- Redirecionamento do WooCommerce após o checkout: Redirecionar para a página de agradecimento personalizada
- Redirecionamento do WooCommerce após o logout [Guia definitivo]
- Como personalizar páginas de produtos WooCommerce
- Como configurar frete grátis com gasto mínimo no WooCommerce
- Como alterar os ícones do gateway de pagamento WooCommerce
- Como configurar o checkout de Bitcoin do WooCommerce
- Como adicionar a página de checkout de fatura do WooCommerce
- Como adicionar classe de navegação ativa com base na URL
- Como integrar o Stripe ao WooCommerce
- Como remover o botão de checkout WooCommerce
- Como enviar para o pagamento Mpesa WooCommerce gratuitamente
- Como ocultar o ícone do PayPal na página de checkout do WooCommerce
- Como adicionar ícones de pagamento WooCommerce no rodapé [HTML]
- Como alterar o ícone do PayPal na página de checkout do WooCommerce
- Como adicionar pesquisa à página de compras no WooCommerce
- Como adicionar lista de desejos no WooCommerce
- Como verificar se o usuário está logado no WordPress
- Como remover as opções de pagamento WooCommerce do checkout
- Como limpar o carrinho ao sair no WooCommerce
- Como alterar os endpoints de checkout WooCommerce