Prima di tutto, un po’ di storia e teoria, poiché credo sia importante per capire tutto.
Ultimamente molti clienti del plugin di modulosdepago.es nella sua versione PRO, quella che accetta la tokenizzazione delle carte e i pagamenti ricorrenti con WooCommerce Subscriptions, stanno migrando al mio plugin di WooCommerce.com
Il problema che hanno fondamentalmente è che gli abbonamenti creati in precedenza non vengono caricati, cioè non possono essere addebitati. Fino a qui tutto normale, poiché quando WooCommerce salva le carte tokenizzate, le salva per un Gateway ID particolare, e il mio plugin di gateway non dovrebbe avere accesso a quei token se l’ID è diverso.
Fondamentalmente, quando WooCommerce salva tramite la sua API le carte, le salva in due tabelle
Nella tabella woocommerce_payment_tokens

Qui è dove salva i token in sé.
e la tabella woocommerce_payments_tokensmeta

è dove salva tutti i dati relativi a quelle carte.
Bene, potete vedere che nella tabella woocommerce_payment_tokens c’è una colonna che dice gateway_id, In questa colonna WooCommerce salva l’ID del Gateway. Se il plugin di modulosdepago.es fosse stato sviluppato utilizzando l’API di WooCommerce, qui si troverebbero tutti i token degli utenti e non ci sarebbe bisogno di fare nient’altro, poiché per fortuna, sia il gateway_id di modulosdepago.es che quello di WooCommerce.com sono uguali. Quindi sarebbe una migrazione totalmente trasparente.
Come commento, l’estensione di modulosdepago.es non è stata sviluppata seguendo gli standard di WooCommerce, e non ha utilizzato l’API di Tokenizzazione. Questo mi ha costretto a creare uno script affinché tutti gli utenti che vogliono iniziare a godere di tutti i vantaggi del plugin ufficiale di WooCommerce.com per Redsys, possano farlo senza problemi.
Cosa fa l’estensione di modulosdepago.es? Beh, è molto semplice, invece di utilizzare l’API di tokenizzazione, salva il token con i metadati degli utenti.
Esattamente quello che fa è salvarlo nei metadati _ds_merchant_identifier e redsys_card degli utenti nella tabella {prefisso_}usermeta

Questo metodo «funziona», ma ha conseguenze, come il fatto che l’utente non possa gestire le carte dal proprio account WooCommerce, o che WooCommerce non sappia cose così basilari come la data di scadenza. Come vedrete, non è il modo più idoneo di farlo, soprattutto quando esiste un’API specifica per questo.
In cosa consiste il mio script? Beh, semplicemente quello che fa è cercare tra tutti gli utenti questi due dati e aggiungerli correttamente a WooCommerce tramite la sua API di Tokenizzazione. In questo modo, gli utenti possono già gestire ad esempio le loro carte dai loro account.

In questo caso, lo script deve aggiungere dati falsi, come ad esempio la data di scadenza, che fissa a dicembre 2022, o il tipo di carta che indica come sconosciuto, solo perché questi dati non vengono salvati dal plugin di modulosdepago.es. e quindi non possono essere aggiunti all’API di WooCommerce (quella di WooCommerce.com li salva tutti).
Una volta che il processo termina, tutto funziona normalmente, tutti gli utenti hanno accesso alle loro carte, e WooCommerce è in grado di gestirle (cosa molto importante come è logico).
Prima di continuare NON utilizzate questo script se intendete continuare con il plugin di modulosdepago.es. Non vi servirà a nulla poiché il plugin continuerà a salvare i dati e utilizzandoli a modo suo. Questo script vale la pena utilizzarlo solo se volete iniziare a utilizzare il plugin ufficiale di WooCommerce.com per Redsys che utilizza l’API di WooCommerce.
Come si utilizza lo script?
È molto semplice, dovete solo caricare un file con il nome che desiderate, ad esempio update-tokens.php nella directory radice della vostra installazione. Una volta caricato, dovete solo visitare l’indirizzo https://tusitio.tld/update-tokens.php e lo script si metterà in moto. Se quando finisce non appare il messaggio «Congratulazioni! Tutti i Token degli utenti migrati», ricaricate la pagina fino a quando non appare. Questo può essere dovuto al fatto che ad esempio avete molti utenti e si verificano timeout.
Per favore, fate un backup prima di procedere con lo script. Per il tipo di funzionamento che ha, non dovrebbe succedere assolutamente nulla, ma quando si gioca con il database, è sempre bene fare un backup prima di iniziare.
Il codice che deve avere il file da caricare è:
Ricorda che se stai effettuando questa migrazione, e hai un problema, puoi aprire un ticket per ricevere aiuto su WooCommerce.com
Ricorda anche che il mio plugin è costantemente auditato da Automattic (sviluppatori di WooCommerce) e segue rigorosamente tutti gli standard di WordPress, WooCommerce e utilizza sempre l’API di WooCommerce. Non avrai mai problemi di compatibilità e tutto il codice segue gli Coding Standards di WordPress VIP, i più esigenti in termini di qualità del codice nel mondo di WordPress.







