Antes de tudo, um pouco de história e teoria, pois acho que é importante para entender tudo.
Ultimamente, muitos clientes do plugin de modulosdepago.es na sua versão PRO, que aceita a tokenização de cartões e os pagamentos recorrentes com WooCommerce Subscriptions, estão migrando para o meu plugin de WooCommerce.com
O problema que eles têm basicamente é que as assinaturas criadas anteriormente não são carregadas, ou seja, não podem ser cobradas. Até aqui tudo normal, já que quando o WooCommerce salva os cartões tokenizados, ele os salva para um ID de Gateway em particular, e meu plugin de gateway não deveria ter acesso a esses tokens se o ID for diferente.
Básicamente, quando o WooCommerce salva através da sua API os cartões, ele os salva em duas tabelas
Na tabela woocommerce_payment_tokens

Aqui é onde ele guarda os tokens em si.
e a tabela woocommerce_payments_tokensmeta

é onde ele guarda todos os dados relacionados a esses cartões.
Bem, vocês podem ver que na tabela woocommerce_payment_tokens há uma coluna que diz gateway_id, Nesta coluna, o WooCommerce guarda o ID do Gateway. Se o plugin de modulosdepago.es tivesse sido desenvolvido utilizando a API do WooCommerce, aqui estariam todos os tokens dos usuários e não haveria necessidade de fazer mais nada, já que por sorte, tanto o gateway_id de modulosdepago.es quanto o de WooCommerce.com são iguais. Assim, seria uma migração totalmente transparente.
Como comentei, a extensão de modulosdepago.es não foi desenvolvida seguindo os padrões do WooCommerce, e não utilizou a API de Tokenização. Isso me obrigou a criar um script para que todos os usuários que queiram começar a desfrutar de todas as vantagens do plugin oficial de WooCommerce.com para Redsys, possam fazê-lo sem problemas.
O que faz a extensão de modulosdepago.es? Pois é bem simples, em vez de utilizar a API de tokenização, ele salva o token com os metadados dos usuários.
Exatamente o que ele faz é salvá-lo nos metas _ds_merchant_identifier e redsys_card dos usuários na tabela {prefixo_}usermeta

Essa forma “funciona”, mas tem consequências, como o fato de que os cartões não podem ser geridos pelo usuário a partir da sua conta do WooCommerce, ou que o WooCommerce não saiba coisas tão básicas como a data de validade. Como vocês verão, não é a forma mais adequada de fazê-lo, principalmente quando existe uma API específica para isso.
Em que consiste meu script? Pois simplesmente o que ele faz é percorrer todos os usuários buscando esses dois dados e adicioná-los de forma correta ao WooCommerce através da sua API de Tokenização. Dessa forma, os usuários já podem gerenciar, por exemplo, seus cartões a partir de suas contas.

Neste caso, o script deve adicionar dados falsos, como por exemplo a data de validade, que é fixada em dezembro de 2022, ou o tipo de cartão que é colocado como desconhecido, pelo mero fato de que esses dados não são salvos pelo plugin de modulosdepago.es. e, portanto, não podem ser adicionados à API do WooCommerce (o de WooCommerce.com os salva todos).
Uma vez que o processo termina, tudo funciona normalmente, todos os usuários têm acesso aos seus cartões, e o WooCommerce é capaz de gerenciá-los (coisa muito importante, como é lógico).
Antes de continuar, NÃO utilizem este script se vocês vão continuar com o plugin de modulosdepago.es. Não servirá para nada, já que o plugin continuará salvando os dados e utilizando-o da sua forma. Este script só vale a pena ser utilizado se vocês quiserem começar a usar o plugin oficial de WooCommerce.com para Redsys que utiliza a API do WooCommerce.
Como se utiliza o script?
É muito simples, vocês só precisam enviar um arquivo com o nome que desejarem, por exemplo update-tokens.php para o diretório raiz da sua instalação. Uma vez enviado, vocês só precisam visitar o endereço https://tusitio.tld/update-tokens.php e o script será iniciado. Se quando terminar não aparecer a mensagem “Parabéns! Todos os Tokens dos usuários migrados”, recarregue a página até que apareça. Isso pode ser devido ao fato de que, por exemplo, vocês tenham muitos usuários e ocorram timeouts.
Por favor, faça um backup antes de prosseguir com o script. Pelo tipo de funcionamento que ele tem, não deveria acontecer absolutamente nada, mas quando se lida com o banco de dados, é sempre bom fazer um backup antes de começar.
O código que deve ter o arquivo a ser enviado é:
Lembre-se de que se você está realizando esta migração e tem um problema, pode abrir um ticket para que te ajudem no WooCommerce.com
Também lembre-se de que meu plugin é auditado constantemente pela Automattic (desenvolvedores do WooCommerce) e segue estritamente todos os padrões do WordPress, WooCommerce e utiliza sempre a API do WooCommerce. Você nunca terá problemas de compatibilidade e todo o código segue os Coding Standards de WordPress VIP, os mais exigentes em termos de qualidade de código no mundo do WordPress.







