Abans de tot, una mica d’història i teoria, ja que crec que és important per entendre-ho tot.
Últimament molts clients del plugin de modulosdepago.es en la seva versió PRO, la que accepta la tokenització de targetes i els pagaments recurrents amb WooCommerce Subscriptions, estan migrando al meu plugin de WooCommerce.com
El problema que tenen bàsicament és que les subscripcions creades amb anterioritat no es carreguen, és a dir, no poden cobrar-se. Fins aquí tot normal, ja que quan WooCommerce guarda les targetes tokenitzades, les guarda per a un Gateway ID en particular, i el meu plugin de passarel·la no hauria de tenir accés a aquests tokens si l’ID és diferent.
Bàsicament, quan WooCommerce guarda mitjançant la seva API les targetes, les guarda en dues taules
En la taula woocommerce_payment_tokens

Aquí és on guarda els tokens en si.
i la taula woocommerce_payments_tokensmeta

és on guarda totes les dades relacionades amb aquestes targetes.
Be, podeu veure que en la taula woocommerce_payment_tokens hi ha una columna que posa gateway_id, En aquesta columna WooCommerce guarda l’ID del Gateway. Si el plugin de modulosdepago.es s’hagués desenvolupat utilitzant l’API de WooCommerce, aquí es trobarien tots els tokens dels usuaris i no hauria de fer res més, ja que per sort, tant el gateway_id de modulosdepago.es com el de WooCommerce.com són iguals. Així que seria una migració totalment transparent.
Com comento, l’extensió de modulosdepago.es no s’ha desenvolupat seguint els estàndards de WooCommerce, i no s’ha utilitzat l’API de Tokenització. Això m’ha obligat a crear un script perquè tots els usuaris que vulguin començar a gaudir de totes les avantatges del plugin oficial de WooCommerce.com per a Redsys, ho puguin fer sense problemes.
Què és el que fa l’extensió de modulosdepago.es? doncs és ben senzill, en comptes d’utilitzar l’API de tokenització, guarda el token amb els metadades dels usuaris.
Exactament el que fa és guardar-ho en els metas _ds_merchant_identifier i redsys_card dels usuaris en la taula {prefijo_}usermeta

Aquesta forma «funciona», però té conseqüències, com que les targetes no les pugui gestionar l’usuari des de la seva compte de WooCommerce, o que WooCommerce no sàpiga coses tan bàsiques com la data de caducitat. Com veureu, no és la forma més idònia de fer-ho, sobretot quan existeix una API específica per a això.
En què consisteix el meu script, doncs simplement el que fa és anar per tots els usuaris buscant aquests dos dades, i afegir-los de forma correcta a WooCommerce mitjançant la seva API de Tokenització. D’aquesta forma, els usuaris ja poden gestionar per exemple les seves targetes des de les seves comptes.

En aquest cas, l’script ha d’afegir dades falses, com és per exemple la data de caducitat, que la fixa en desembre de 2022, o el tipus de targeta que la posa com unknown, pel simple fet que aquestes dades no són guardades pel plugin de modulosdepago.es. i per tant no es poden afegir a l’API de WooCommerce (el de WooCommerce.com els guarda tots).
Un cop que el procés acaba, ja tot funciona amb normalitat, tots els usuaris tenen accés a les seves targetes, i WooCommerce és capaç de gestionar-les (cosa molt important com és lògic).
Abans de continuar NO utilitzeu aquest script si aneu a continuar amb el plugin de modulosdepago.es. No us servirà de res ja que el plugin seguirà guardant les dades i utilitzant-lo de la seva forma. Aquest script només val la pena utilitzar-lo si voleu començar a utilitzar el plugin oficial de WooCommerce.com per a Redsys que utilitza l’API de WooCommerce.
Com s’utilitza l’script?
És molt senzill, només heu de pujar un fitxer amb el nom que desitgeu, per exemple update-tokens.php al directori arrel de la vostra instal·lació. Un cop pujat, només heu de visitar l’adreça https://tusitio.tld/update-tokens.php i l’script es posarà en marxa. Si quan acaba no surt el missatge «¡Felicitats! Tots els Tokens dels usuaris migrats», recarregueu la pàgina fins que surti. Això pot ser degut a que per exemple tingueu molts usuaris i es produeixin timeouts.
Si us plau, feu una còpia de seguretat abans de procedir amb l’script. Pel tipus de funcionament que té, no hauria de passar absolutament res, però quan es juga amb la base de dades, sempre és bo fer una còpia de seguretat abans de començar.
El codi que ha de tenir el fitxer a pujar és:
Recorda que si estàs realitzant aquesta migració, i tens un problema, pots obrir un tiquet perquè t’ajudi a WooCommerce.com
També recorda que el meu plugin està auditant constantment per Automattic (desenvolupadors de WooCommerce) i segueix estrictament tots els estàndards de WordPress, WooCommerce i utilitza sempre l’API de WooCommerce. Mai tindràs problemes de compatibilitat i tot el codi segueix els Coding Standards de WordPress VIP, els més exigents en quant a qualitat de codi en el món de WordPress.







