Skip to content

Instantly share code, notes, and snippets.

@joseconti
Last active March 14, 2024 13:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save joseconti/617a9a8e08436cc2ef54ac10ba0b3c58 to your computer and use it in GitHub Desktop.
Save joseconti/617a9a8e08436cc2ef54ac10ba0b3c58 to your computer and use it in GitHub Desktop.
Script para migrar los Token creado por el plugin Redsys PRO de modulosdepago.es a la forma correcta de guardarlos utilizando la API para Tokens de WooCommerce, y de esta forma poder utilizar el plugin oficial de WooCommerce.com para Redsys sin problemas y guardar los datos tal y como se debe hacer en WooCommerce. Solo necesitas tener activado W…
<?php
/*
* Script para migrar los Token creado por el plugin Redsys PRO de modulosdepago.es a la forma correcta de guardarlos
* utilizando la API para Tokens de WooCommerce, y de esta forma poder utilizar el plugin oficial de WooCommerce.com para Redsys
* sin problemas y guardar los datos tal y como se debe hacer en WooCommerce.
* Solo necesitas tener activado WooCommerce, no hace falta que esté activo ningún otro plugin ya que este script solo utiliza
* la API de WordPress y de WooCommerce.
* Plugin oficial de WooCommerce.com para Redsys: https://woo.com/products/redsys-gateway/
*/
/*
* Para utilizar este script, solo debes subirlo a la raiz de tu instalación y visitar mediante el navegador el archivo.
* Por ejemplo, si lo subes como update-tokens.php, deberás visitar la dirección https://tuweb.tld/update-tokens.php y esperar
* a que finalice. Si no sale el mensaje de que ha finalizado por un timeout, vuelve a ejecutarlo hasta que salga.
*
* Este script se entrega sin garantias de ningún tipo y eres responsable de aplicar todas las medidas de seguridad necesarias,
como por ejemplo realizar una copia de la base de datos antes de su uso.
*/
/*
* Autor: José Conti
* Versión: 2.0.0
* Fecha: 13/02/2024
*/
require_once 'wp-load.php';
$plugins_path = WP_PLUGIN_DIR;
$woocommerce = $plugins_path . '/woocommerce/';
echo $plugins_path . '<br />';
// La siguiente línea es por si por lo que fuera, no se cargar la Clase WC_Payment_Token_CC()
//include_once $woocommerce . 'includes/payment-tokens/class-wc-payment-token-cc.php';
$users = get_users();
if ( $users ) {
foreach( $users as $user ) {
$id = $user->ID;
echo $id . '<br />';
$dsmerchantidenti = get_user_meta( $id, '_ds_merchant_identifier', true );
echo $dsmerchantidenti . '<br />';
$cart = get_user_meta( $id, 'redsys_card', true );
echo $cart . '<br />';
$txnid = get_user_meta( $id, '_ds_merchant_cof_txnid', true );
$token_type = 'R';
if ( ! empty( $id ) ) {
$updated = get_user_meta( $id, '_redsys_actualizado_token', true );
if ( $updated !== 'yes' ) {
echo 'Hay usuario' . '<br />';
if ( ! empty( $dsmerchantidenti ) ) {
echo 'hay token' . '<br />';
if ( class_exists( 'WC_Payment_Token_CC' ) ) {
$token = new WC_Payment_Token_CC();
$token->set_token( $dsmerchantidenti );
$token->set_gateway_id( 'redsys' );
$token->set_user_id( $id );
$token->set_card_type( 'unknown' );
if ( $cart ) {
$dscardnumber4 = substr( $cart, -4 );
$token->set_last4( $dscardnumber4 );
} else {
$dscardnumber4 = '0000';
$token->set_last4( $dscardnumber4 );
}
$dsexpirymonth = '12';
$dsexpiryyear = '2222';
$token->set_expiry_month( $dsexpirymonth );
$token->set_expiry_year( $dsexpiryyear );
$token->set_default( true );
$token->save();
$token_id = $token->get_id();
if ( ! empty ( $txnid ) ) {
WCRed()->set_txnid( $token_id, $txnid );
}
WCRed()->set_token_type( $token_id, $token_type );
echo 'Token de Usuario con ID: ' . $id . ' migrado. <br />';
update_user_meta( $id, '_redsys_actualizado_token', 'yes' );
continue;
} else {
echo 'La clase WC_Payment_Token_CC() no existe';
}
}
echo 'No tiene token' . '<br />';
continue;
} else {
echo 'El token del usuario ' . $id . ' ya ha sido actualizado <br />';
continue;
}
}
}
echo '/*****************************************************/ <br />';
echo '¡Felicidades! Todos los Tokens de los usuarios migrados <br />';
echo '/*****************************************************/ <br />';
} else {
echo 'sin usuarios';
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment