Last active
March 14, 2024 13:52
-
-
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…
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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