Post by lauhopk99 » Sat Jan 25, 2014 6:49 pm

Buenos días, quiero aportar el código que programé para adaptar el módulo de pagos TPV de cuatrob ZhenIT para que funcione con la nueva plataforma de RedSys , convirtiendo cualquier moneda que tengas en tu Opencart a Euros(Es la única moneda que acepta el TPV de ING). Funciona con los TPV de cualquier banco 4b.

Considero que es muy útil. Estuve buscando algo similar durante mucho tiempo y como no encontré nada, pues me tocó realizarlo a mi.

Primeramente decir que el módulo de ZhenIT dejó de funcionarme cuando 4B cambió de plataforma a Redsys, por lo que tuve que adaptar el código al nuevo sistema. Otro problema que tuve fue que al solo aceptar Euros como monedas, mis clientes de otros países no podían utilizar el pago por TPV, por lo que tuve que crear un algoritmo que convertia cualquier moneda a Euros, basándose en la tabla currency de mi Opencart(Se ajusta a las monedas introducidas en el panel de Administración).

Solo hay que modificar el archivo /catalog/view/theme/default/payment/cuatrob.tpl , modificar los parámetros de este en función de la configuración de cada TPV y base de datos. En este caso está predeterminado que convierta la moneda predeterminada de la tienda (USD) a Euros, pero funciona para convertir cualquier moneda que quieras a Euros, o dejarlo en EUR para tiendas que funcione en Euros.

El código es :

<?php
$link = mysql_connect("localhost", "usuario_base_de_datos","clave_bbdd") or trigger_error(mysql_error(),E_USER_ERROR);


if (!isset($_SESSION)) {
session_start();
}
$url_tpvv='https://sis.redsys.es/sis/realizarPago';

$clave='clave_encriptada_tpv';

$name='nombre_comercio';

$code='codigo_comercio';

$terminal='001';

$order=$order;
$ds_Merchant_URLOK="url_tienda/4B_ZhenIT_ok.php";
$ds_Merchant_URLKO="url_tienda/4B_ZhenIT_nok.php";
$order_id=$this->session->data['order_id'];
$query1 = "select value from ".DB_DATABASE.".order_total where order_id='{$order_id}' and code='total' limit 1 ";
$result1 = mysql_query($query1,$link) or die(mysql_error());
$datos = mysql_fetch_array($result1);
$amount=round($datos['value']*100) ;
mysql_free_result($result1);
$moneda="EUR";
$from="USD";
$to=$moneda;
$query1 = "select value from ".DB_DATABASE.".currency where code='{$to}' limit 1";
$result1 = mysql_query($query1,$link) or die(mysql_error());
$datos = mysql_fetch_array($result1);
$multiplicador=round($datos['value'],3) ;
mysql_free_result($result1);

$amount=round($amount * $multiplicador);

$currency='978';

$transactionType='0';

$urlMerchant='url_tienda/index.php?route=payment/cuatrob/callback';

$message = $amount.$order.$code.$currency.$transactionType.$urlMerchant.$clave;
$signature = strtoupper(sha1($message));

$Ds_Merchant_ConsumerLanguage =2

?>

<form action="<?php echo $url_tpvv; ?>" method="post" id="payment">
<input type=hidden name=Ds_Merchant_Amount value="<?php echo $amount;?>">
<input type=hidden name=Ds_Merchant_Currency value="<?php echo $currency;?>">
<input type=hidden name=Ds_Merchant_Order value="<?php echo $order;?>">
<input type=hidden name=Ds_Merchant_MerchantCode value="<?php echo $code;?>">
<input type=hidden name=Ds_Merchant_Terminal value="<?php echo $terminal;?>">
<input type=hidden name=Ds_Merchant_TransactionType value="<?php echo $transactionType;?>">
<input type=hidden name=Ds_Merchant_MerchantURL value="<?php echo $urlMerchant;?>">

<input type=hidden name=ds_Merchant_URLOK value="<?php echo $ds_Merchant_URLOK;?>">
<input type=hidden name=ds_Merchant_URLKO value="<?php echo $ds_Merchant_URLKO;?>">
<input type=hidden name=Ds_Merchant_ConsumerLanguage value="<?php echo $Ds_Merchant_ConsumerLanguage;?>">


<input type=hidden name=Ds_Merchant_MerchantSignature value="<?php echo $signature;?>">



</form>
<div class="buttons">
<div class="right"><a id="button-confirm" class="button" onclick="$('#payment').submit();"><span><?php echo $button_confirm; ?></span></a></div>
</div>


Podéis verlo en funcionamiento en una de mis tiendas online : http://www.sexshoponline.biz

Espero que os resulte de utilidad

Newbie

Posts

Joined
Sat Jan 25, 2014 6:26 pm

Post by apigarci » Mon Jan 27, 2014 7:41 pm

Muchas gracias por su aporte. Llevaba un tiempo buscando un código para la pasarela de Ing que admitiese dólares y libras. He probado su código y funciona. Realmente útil.

Newbie

Posts

Joined
Mon Jan 27, 2014 7:35 pm

Post by markmarkus » Thu Apr 10, 2014 11:55 pm

Muchas gracias por el aporte. Espero que funcione en mi OC 1.5.6!

New member

Posts

Joined
Thu Dec 26, 2013 7:51 am

Active Member

Posts

Joined
Fri Mar 29, 2013 8:46 pm


Post by markmarkus » Mon May 05, 2014 5:37 pm

Veo que en la carpeta que indicas tengo el módulo redsys.tpl con el siguiente código.

Me funcionaría si agrego el código que propones? Tengo la plataforma de ING y veo que da error cuando la gente quiere pagar en otra moneda.

Code: Select all

<form action="<?php echo $action; ?>" method="post" id="payment">
	<input type="hidden" name="Ds_Merchant_MerchantCode" value="<?php echo $merchantCode; ?>">
	<input type="hidden" name="Ds_Merchant_Terminal" value="<?php echo $terminal; ?>">
	<input type="hidden" name="Ds_Merchant_Amount" value="<?php echo $amount; ?>">
	<input type="hidden" name="Ds_Merchant_Currency" value="<?php echo $currency; ?>">
	<input type="hidden" name="Ds_Merchant_Order"  value="<?php echo $order; ?>">
	<input type="hidden" name="Ds_Merchant_ConsumerLanguage" value="<?php echo $language; ?>">
	<input type="hidden" name="Ds_Merchant_TransactionType" value="<?php echo $transaction_type; ?>">
	<input type="hidden" name="Ds_Merchant_MerchantURL" value="<?php echo $merchant_url; ?>">
	<input type="hidden" name="Ds_Merchant_UrlOK" value="<?php echo $url_ok; ?>">
	<input type="hidden" name="Ds_Merchant_UrlKO" value="<?php echo $url_ko; ?>">
	<input type="hidden" name="Ds_Merchant_MerchantSignature" value="<?php echo $signature; ?>">
	
</form>
<div class="buttons">
	<div class="right"><a id="button-confirm" class="button" onclick="$('#payment').submit();"><span><?php echo $button_confirm; ?></span></a></div>
</div>

New member

Posts

Joined
Thu Dec 26, 2013 7:51 am

Post by 3xsexy.com » Sat May 10, 2014 5:22 pm

3xsexy.com
¿me pueden ayudar
404 error

3xsexy.com@gmail.com

Newbie

Posts

Joined
Sat May 10, 2014 5:05 pm
Who is online

Users browsing this forum: No registered users and 3 guests