News:

Looking for documentation? Take a look on our wiki

Main Menu

New Payment Module: TPV Virtual Servired-Sermepa

Started by hoppe, May 12, 2006, 01:14:24 AM

Previous topic - Next topic

hoppe

Hi,
Here is my Spanish payment module for TPV Virtual Servired-Sermepa. It works for all banks associated to Servired:

Bancos
·   FINANZIA BANCO DE CRÉDITO
·   DEUTSCHE BANK S.A.E.
·   BANCO ETCHEVERRÍA
·   BANCO HERRERO
·   BANCO DEPOSITARIO BBVA
·   BANCO SYGMA
·   BARCLAYS BANK
·   BANCA PUEYO
·   BANCO INVERSIÓN, S.A.
·   BANCO DE SABADELL
·   ALTAE BANCO
·   LLOYDS TSB BANK PLC, SUCURSAL EN ESPAÑA
·   BANCO OCCIDENTAL
·   CITIBANK ESPAÑA
·   BANCOFAR
·   BANKINTER
·   B.B.V. BANCO DE FINANCIACIÓN
·   BANCO SIMEÓN
·   BANCO ESPIRITO SANTO
·   BANCO DE EUROPA
·   BANKOA
·   BANKPYME (Banco de la Pequeña y Mediana Empresa)
·   BARCLAYS BANK PLC
·   BBVA (Banco Bilbao Vizcaya Argentaria)
·   FIBANC (Banco de Finanzas e Inversiones)
·   BANCO ALCALÁ
·   BANCO COOPERATIVO ESPAÑOL
·   BANCO HALIFAX HISPANIA
·   BANCO FINANTIA SOFINLOC
·   UNOE BANK, S.A.
·   MBNA EUROPE BANK LIMITED
·   IBERIA CARDS
·   BANCO DE SERVICIOS FINANCIEROS CAJA MADRID-MAPFRE
·   IBERDROLA SERVICIOS FINANCIEROS EFC, S.A
Cajas de Ahorros
·   CAIXA CATALUNYA (Caixa d´Estalvis de Catalunya)
·   CAIXA GIRONA (Caja de Ahorros Provincial de Girona)
·   CAJA MADRID (Caja de Ahorros y Monte de Piedad de Madrid)
·   CAIXA TARRAGONA (Caja de Ahorros Provincial de Tarragona)
·   CAIXA DE MANLLEU (Caja de Ahorros Comarcal de Manlleu)
·   CAIXA MANRESA (Caja de Ahorros de Manresa)
·   CAIXA SABADELL (Caja de Ahorros de Sabadell)
·   CAIXA TERRASSA (Caja de Ahorros de Terrassa)
·   BANCAJA (Caja de Ahorros de Valencia, Castellón y Alicante)
·   CAIXA PENEDÈS (Caja de Ahorros del Penedès)
·   CAJA ESPAÑA (Caja España de Inversiones)
·   LA CAIXA (Caja de Ahorros y Pensiones de Barcelona)
Cajas Rurales
·   CAJA RURAL DE ALMENDRALEJO
·   CAJA RURAL CENTRAL
·   CAJA RURAL DE GIJÓN
·   CAJA RURAL DE NAVARRA
·   CAJA RURAL DE EXTREMADURA
·   CAJA RURAL DE SALAMANCA
·   CAJA RURAL DE SORIA
·   CAJA RURAL DE UTRERA
·   CAJALON (Caja Rural de Aragón, S. Coop. de Crédito)
·   CAJA CEGA (Caja Rural Fuentepelayo)
·   CAJA RURAL DE GRANADA
·   CAIXA ALTEA
·   CAJA RURAL DE ALBACETE
·   CAJAMAR (Caja Rural Intermediterránea, S. Coop. de Crédito)
·   CAJA RURAL DE ASTURIAS
·   CAJA RURAL DE BURGOS
·   CAJA RURAL DE CIUDAD REAL
·   CAJA RURAL DE CÓRDOBA
·   CAJA RURAL DE CUENCA
·   CAJA RURAL DE JAÉN
·   CAIXA RURAL GALEGA
·   CAJA RURAL DE TENERIFE
·   CAJA RURAL DE SEGOVIA
·   CAJA RURAL DEL SUR
·   CAJA RURAL DE TERUEL
·   CAJA RURAL DE TOLEDO
·   RURALCAJA (Caja Rural del Mediterráneo)
·   CAJA RURAL DEL DUERO
·   IPAR KUTXA RURAL, S. COOP. DE CDTO
·   CAJA RURAL DE ZAMORA
·   CAJACAMPO (Caja Rural de la Valencia Castellana)
·   CAIXA RURAL DE L'ALCUDIA
·   CAJA RURAL NUESTRA SEÑORA DEL ROSARIO DE NUEVA
CARTEYA
·   CAIXA SANT VICENT (Caja Rural San Vicente Ferrer de Vall de Uxó)
·   CAJA RURAL SAN ISIDRO DE VALL DE UXÓ
·   CAJA RURAL CASTELLÓN (Caja Rural Castellón - San Isidro, S. Coop. de Crédito Valenciana)
·   CAJA RURAL DE ALGEMESÍ
·   CAJA RURAL TORRENT
·   CAJA RURAL DE CHESTE
·   CAJA RURAL DE CASAS IBÁÑEZ
·   CAJA RURAL DE LA RODA
·   CAIXA RURAL ALMASSORA (Caja Rural San José de Almassora)
·   CAIXA RURAL DE GUISSONA
·   CAIXA RURAL BALEARS
·   CAJA RURAL CANARIAS
·   CAJA RURAL DE ALGINET
·   CREDIT VALENCIA, C.R. Coop. de Cto. Valenciana
·   MULTICAJA (Caja Rural Aragonesa y de los Pirineos, S. Coop. de Crédito)
Cajas Populares y Profesionales
·   CAJA DE CRÉDITO DE LOS INGENIEROS (Caixa Coop. de Cto. Colegio de Ingenieros de Cataluña)
·   CAJA DE CRÉDITO DE PETREL
·   CAJA LABORAL EUSKADIKO KUTXA
·   CAIXA RURAL DE CALLOSA D'EN SARRIÁ
·   CAIXA POPULAR
·   CAJA DE ABOGADOS
·   CAJA CAMINOS (Caja de Cto. Colegio de Ingenieros de Caminos, Canales y Puertos)
·   CAJA DE ELCHE
·   CAJA DE ARQUITECTOS, SOC. COOP. DE CRÉDITO

Enjoy it ;)


[attachment cleanup by admin]
http://www.ferreteriaelclavo.com
Ferretería el Clavo Online.

atela

Thanks for the module!

I'm trying to use it with a spanish client, his bank has asked for a accept url and an error url. What url should these be? Are there default urls in virtuemart or should I code these urls?

Kind Regards.

PS: I also speak spanish if you want to contact me...
Atela Comunicación Corporativa - tu punto de singularidad.

atela

 ??? Well I solved the problem with the urls. But now I have all the information of the bank and have configured this module and I get allways errors. I've resolved some of them changing the code of this module...

But has anyone has made this module work?
Atela Comunicación Corporativa - tu punto de singularidad.

ledfear

Vaya, acabo de darme cuenta de este hilo. Yo trabajo con BSCH, Caja San Fernando y El Monte pero no las veo reseñadas ¿funciona con estas entidades? Si no es así me plantearía darme de alta en el BBVA que lo tengo más cerquita  ;D De todas formas me lo bajo a ver cómo trabaja que estoy aprendiendo a usar el virtuemart para mi tienda.

¡Gracias y espero noticias!  :D



English:
I'm working with BSCH (Banco Santander Central Hispano), Caja San Fernando and El Monte but I don't see them in the list above, will does it work with this banks? Anyway i'll gonna download it to check it.

atela

#4
Perhaps the error is with my bank. I have to ask them, because the error is the 0026 "Error No existe el comercio / terminal enviado"

Anyway I had a previous error which I solved changing this line:

$order = '00'.$db->f("order_id");

with this line:

$order = '000'.$db->f("order_id");

Spanish:

Gracias por responder. El error que recibo es el 0026: "Error No existe el comercio / terminal enviado", por lo que voy a contactar con el banco a ver si hay algun error en los datos que enviaron al dar el alta.

En cualquier caso antes de este error tuve el error 0075: "Error el Ds_Merchant_Order tiene menos de 4 posiciones o más de 12" ya que la tienda es nueva y eran los primeros pedidos de prueba y enviaba al tpv 002, 003, etc. como numero de pedido.

Lo solucione cambiando la linea:

$order = '00'.$db->f("order_id");

por

$order = '000'.$db->f("order_id");

PD:

La configuración que estoy utilizando es:

$url_tpvv='https://sis-i.sermepa.es:25443/sis/realizarPago'; (entorno de pruebas)
$clave='####################'; (clave de 20 digitos enviado por el banco)
$name='nombre del comercio';
$code='########'; (número de 8 cifras enviado por el banco)
$terminal='1';  (terminal indicado por el banco)
$currency='978';
$tipoOperacion='0';


y la página del tpv por ejemplo indica esto:


Importe    672,80  Euros (correcto)
Código Comercio          ######## (el de la configuracion)
Terminal          1 (el de la configuracion)
Número pedido          0004 (correcto)
Atela Comunicación Corporativa - tu punto de singularidad.

tunilove

Thats very good  i jsut was looking for solution for my company in spain after paypal blok  my account 

  thank you for the module  ill installed and contact lacaixa for account TPV   thank you    ill ask if i need help    thank you 

atela

Hola,

Yo ya me estoy volviendo loco! Resulta que el error que tenia antes (SIS0026) era efectivamente que no habian dado de alta el comercio en el entorno de pruebas. Ahora tengo el error SIS0042 (error en la firma enviada).

He comprobado la clave del comercio que han enviado y me han enviado dos distintas (una la primera vez, y una segunda al darme de alta en el entorno de pruebas.) Tendre que verificar cual es la correcta!

De todos modos en las instrucciones del TPV (revision 15) indican que la firma se calcula de la siguiente manera:

Digest=SHA-1(Ds_Merchant_Amount + Ds_Merchant_Order +Ds_Merchant_MerchantCode
+ DS_Merchant_Currency +Ds_Merchant_TransactionType + Ds_Merchant_MerchantURL
+ CLAVE SECRETA)


y en el modulo

$order = '00'.$db->f("order_id");
$amount=$db->f("order_total")*100;
$sha = new SHA;
$message = $amount.$order.$code.$currency.$clave;
$digest1 = $sha->hash_string($message);
$signature = strtoupper ($sha->hash_to_string( $digest1 ));


No falta añadir "Ds_Merchant_TransactionType + Ds_Merchant_MerchantURL".

PD: Utilizo un servidor con PHP4, puede ser este el problema? Tambien la url del comercio dado de alta es midominio.com pero estoy trabajando en tienda.midominio.com (otra posible razon del error?)

Por si acaso mi codigo del modulo:

<?PHP
// Valores constantes a modificar segun el comercio

// $url_tpvv='https://XXXX';  // URL de Sermepa para entorno real. Para URL de entorno
$url_tpvv='https://XXXX'; // de pruebas consultar el manual de comercios.
$clave='XXXX';                     // Clave de comercio proporcionada por Sermepa.
$name='XXXX';                        // Nombre del comercio que sale en la transaccion.
$code='XXXX';                        // Codigo de comercio proporcionado por Sermepa.
$terminal='001';                                      // Terminal usado.
$currency='978';                                      // 978=Euros.
$tipoOperacion='0';                                   // Tipo de operacion. 0=Autorizacion.
$urlMerchant='http://www.midominio.com'; // Para poder definir una URL del comercio es necesario usar PHP5
// No es posible usar PHP4 para poder enviar en la firma la url del comercio.

?>

<?PHP
// Calculo del hash para firmar los datos.
$order = '00'.$db->f("order_id");
$amount=$db->f("order_total")*100;
$sha = new SHA;
$message = $amount.$order.$code.$currency.$clave;
$digest1 = $sha->hash_string($message);
$signature = strtoupper ($sha->hash_to_string( $digest1 ));
?>

<form action="<?php echo $url_tpvv?>" method="post">
<input type="hidden" name="cmd" value="cart" />
<input type="image" src="http://www.midominio.com/images/servired.jpg" name="submit" alt="Pagar en modo seguro" />
<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_ProductDescription" value="Compra productos en midominio.com" />
<input type="hidden" name="Ds_Merchant_Titular" value="<?php echo $user->first_name ?> <?php echo $user->last_name ?>" />
<input type="hidden" name="Ds_Merchant_MerchantCode" value="<?php echo $code?>" />
<input type="hidden" name="Ds_Merchant_MerchantURL" value="<?php echo $urlMerchant?>" />
<input type="hidden" name="Ds_Merchant_UrlOK" value="http://www.midominio.com/autorizada.htm" />
<input type="hidden" name="Ds_Merchant_UrlKO" value="http://www.midominio.com/no_autorizada.htm" />
<input type="hidden" name="Ds_Merchant_MerchantName" value="<?php echo $name?>" />
<input type="hidden" name="Ds_Merchant_ConsumerLanguage" value="001" />
<input type="hidden" name="Ds_Merchant_MerchantSignature" value="<?php echo $signature ?>" />
<input type="hidden" name="Ds_Merchant_Terminal" value="<?php echo $terminal?>" />
<input type="hidden" name="Ds_Merchant_TransactionType" value="<?php echo $tipoOperacion?>" />
</form>

<?PHP
// Algoritmo SHA-1. No hace falta entenderlo, es matematica pura y dura.

class SHA {
var $A, $B, $C, $D, $E;
var $ta, $tb, $tc, $td, $te;
var $K0_19, $K20_39, $K40_59, $K60_79;

var $buffer;
var $buffsize;
var $totalsize;



function SHA () {
$this->init();
}

function init () {
$this->A = 0x6745 << 16 | 0x2301;
$this->B = 0xefcd << 16 | 0xab89;
$this->C = 0x98ba << 16 | 0xdcfe;
$this->D = 0x1032 << 16 | 0x5476;
$this->E = 0xc3d2 << 16 | 0xe1f0;
$this->ta = $this->A;
$this->tb = $this->B;
$this->tc = $this->C;
$this->td = $this->D;
$this->te = $this->E;
$this->K0_19 = 0x5a82 << 16 | 0x7999;
$this->K20_39 = 0x6ed9 << 16 | 0xeba1;
$this->K40_59 = 0x8f1b << 16 | 0xbcdc;
$this->K60_79 = 0xca62 << 16 | 0xc1d6;

$this->buffer = array();
$this->buffsize = 0;
$this->totalsize = 0;
}

function bytes_to_words( $block ) {
$nblk = array();
for( $i=0; $i<16; ++$i) {
$index = $i * 4;
$nblk[$i] = 0;
$nblk[$i] |= ($block[$index] & 0xff) << 24;
$nblk[$i] |= ($block[$index+1] & 0xff) << 16;
$nblk[$i] |= ($block[$index+2] & 0xff) << 8;
$nblk[$i] |= ($block[$index+3] & 0xff);
}
return $nblk;
}

function pad_block( $block, $size ) {
$blksize = sizeof( $block );
$bits = $size * 8;

$newblock = $block;
$newblock[] = 0x80;
while((sizeof($newblock) % 64) != 56) {
$newblock[] = 0;
}
for ($i=0; $i<8; ++$i) {
$newblock[] = ($i<4) ? 0 : ($bits >> ((7-$i)*8)) & 0xff;
}

return $newblock;
}

function circ_shl( $num, $amt ) {
$leftmask = 0xffff | (0xffff << 16);
$leftmask <<= 32 - $amt;
$rightmask = 0xffff | (0xffff << 16);
$rightmask <<= $amt;
$rightmask = ~$rightmask;

$remains = $num & $leftmask;
$remains >>= 32 - $amt;
$remains &= $rightmask;

$res = ($num << $amt) | $remains;

return $res;
}

function f0_19( $x, $y, $z ) {
return ($x & $y) | (~$x & $z);
}

function f20_39( $x, $y, $z ) {
return ($x ^ $y ^ $z);
}

function f40_59( $x, $y, $z ) {
return ($x & $y) | ($x & $z) | ($y & $z);
}

function f60_79( $x, $y, $z ) {
return $this->f20_39( $x, $y, $z );
}

function expand_block( $block ) {
$nblk = $block;
for( $i=16; $i<80; ++$i ) {
$nblk[$i] = $this->circ_shl(
$nblk[$i-3] ^ $nblk[$i-8] ^ $nblk[$i-14] ^ $nblk[$i-16], 1
);
}

return $nblk;
}

function print_bytes( $bytes ) {
$len = sizeof( $bytes );
for( $i=0; $i<$len; ++$i) {
$str[] = sprintf(  "%02x", $bytes[$i] );
}

print( join(  ", ", $str ) .  "\n" );
}

function wordstr( $word ) {
return sprintf( 
"%04x%04x", ($word >> 16) & 0xffff, $word & 0xffff
);
}

function print_words( $words ) {
$len = sizeof( $words );
for( $i=0; $i<$len; ++$i) {
$str[] = $this->wordstr( $words[$i] );
}

print( join(  ", ", $str ) .  "\n" );
}

function hash_to_string( $hash ) {
$len = sizeof( $hash );
for ($i=0; $i<$len; ++$i) {
$astr .= $this->wordstr( $hash[$i] );
}
return $astr;
}

function add( $a, $b ) {
$ma = ($a >> 16) & 0xffff;
$la = ($a) & 0xffff;
$mb = ($b >> 16) & 0xffff;
$lb = ($b) & 0xffff;

$ls = $la + $lb;
// Carry
if ($ls > 0xffff) {
$ma += 1;
$ls &= 0xffff;
}

$ms = $ma + $mb;
$ms &= 0xffff;

$result = ($ms << 16) | $ls;
return $result;
}

function process_block( $blk ) {
$blk = $this->expand_block( $blk );

for( $i=0; $i<80; ++$i ) {
$temp = $this->circ_shl( $this->ta, 5 );
if ($i<20) {
$f = $this->f0_19( $this->tb, $this->tc, $this->td );
$k = $this->K0_19;
}
elseif ($i<40) {
$f = $this->f20_39( $this->tb, $this->tc, $this->td );
$k = $this->K20_39;
}
elseif ($i<60) {
$f = $this->f40_59( $this->tb, $this->tc, $this->td );
$k = $this->K40_59;
}
else {
$f = $this->f60_79( $this->tb, $this->tc, $this->td );
$k = $this->K60_79;
}

$temp = $this->add( $temp, $f );
$temp = $this->add( $temp, $this->te );
$temp = $this->add( $temp, $blk[$i] );
$temp = $this->add( $temp, $k );

$this->te = $this->td;
$this->td = $this->tc;
$this->tc = $this->circ_shl( $this->tb, 30 );
$this->tb = $this->ta;
$this->ta = $temp;
}

$this->A = $this->add( $this->A, $this->ta );
$this->B = $this->add( $this->B, $this->tb );
$this->C = $this->add( $this->C, $this->tc );
$this->D = $this->add( $this->D, $this->td );
$this->E = $this->add( $this->E, $this->te );
}

function update ( $bytes ) {
$length = sizeof( $bytes );
$index = 0;

while (($length - $index) + $this->buffsize >= 64) {
for( $i=$this->buffsize; $i<64; ++$i) {
$this->buffer[$i] = $bytes[$index + $i - $this->buffsize];
}
$this->process_block( $this->bytes_to_words( $this->buffer ) );
$index += 64;
$this->buffsize = 0;
}

$remaining = $length - $index;
for( $i=0; $i<$remaining; ++$i) {
$this->buffer[$this->buffisze + $i] = $bytes[$index + $i];
}
$this->buffsize += $remaining;
$this->totalsize += $length;
}

function acabar() {
for( $i=0; $i<$this->buffsize; ++$i) {
$last_block[$i] = $this->buffer[$i];
}
$this->buffsize = 0;
$last_block = $this->pad_block( $last_block, $this->totalsize );
$index = 0;
$length = sizeof( $last_block );
while( $index < $length )
{
$block = array();
for( $i=0; $i<64; ++$i) {
$block[$i] = $last_block[$i + $index];
}
$this->process_block( $this->bytes_to_words( $block ) );
$index += 64;
}

$result[0] = $this->A;
$result[1] = $this->B;
$result[2] = $this->C;
$result[3] = $this->D;
$result[4] = $this->E;

return $result;
}

function hash_bytes( $bytes ) {
$this->init();
$this->update( $bytes );
return $this->acabar();
}

function hash_string( $str ) {
$len = strlen( $str );
for($i=0; $i<$len; ++$i) {
$bytes[] = ord( $str[$i] ) & 0xff;
}
return $this->hash_bytes( $bytes );
}
}
?>
Atela Comunicación Corporativa - tu punto de singularidad.

ledfear

Según en el foro de joomlaspanish

Quote from: abacobuenos dias a todos.
Despues de darle un par de vueltas al modulo, ya que me daba algunos errores, en concreto (si ves el codigo fuente de la pagina del error de sermepa) el codigo SIS0042, es por un error en la firma generada, el error viene en que faltan unas variablas al generar la firma SHA, en concrero hay que sustituir la linea

$message = $amount.$order.$code.$currency.$clave;
por
$message = $amount.$order.$code.$currency.$tipoOperacion.$url Merchant.$clave;

Y solucionado, un saludo a todos espero haber sido de ayuda

¡Suerte!

------------------------------
In a spanish forum (joomlaspanish.org)
Quote from: abaco
You have to change this line

$message = $amount.$order.$code.$currency.$clave;

by this one

$message = $amount.$order.$code.$currency.$tipoOperacion.$url Merchant.$clave;


se nota que no manejo el inglés ¿eh?  ;D

_fjac_

He estado probando este modulo con la siguiente configuracion de variables:

$url_tpvv = 'https://sis-t.sermepa.es:25443/sis/realizarPago';
$clave='qwertyasdf0123456789';                     // Clave de comercio proporcionada por Sermepa.
$name='pruebas;                        // Nombre del comercio que sale en la transaccion.
$code='codigo_de_tu_comercio';                        // Codigo de comercio proporcionado por Sermepa.
$terminal='001';                                      // Terminal usado.
$currency='978';                                      // 978=Euros.
$tipoOperacion='0';                                   // Tipo de operacion. 0=Autorizacion.
$urlMerchant='http://midominio.es';    // Para poder definir una URL del comercio es necesario usar PHP5
         // No es posible usar PHP4 para poder enviar en la firma la url del comercio.

El valor de $clave lo copié de la siguiente direccón:
http://oscommerce.qadram.com/modules.php?name=Forums&file=viewtopic&t=6781&highlight=

Cuando hago una prueba de compra todo va bien hasta que llego al último
paso, el de confirmación. Tras pulsar el botón de confirmación me da un error
en el fichero "checkout.thankyou.php" en la línea 85, la cual contiene el
siguiente código:

if( eval('?>' . $db->f("payment_extrainfo") . '<?php ') === false ) {
       echo vmCommonHTML::getErrorField( "Error: The code of the payment method ".$db->f( 'payment_method_name').' ('.$db->f('payment_method_code').') '
       .'contains a Parse Error!<br />Please correct that first' );
    }
    else {
       echo DEBUG ? vmCommonHTML::getInfoField('Successfully parsed the payment extra info code.' ) : '';
    }

Por lo que he podido comprobar el fallo está en la función "eval" y las variables
Ds_Merchant_URLOK, Ds_Merchant_URLKO, cuyo valor por defecto es:

<input type="hidden" name="Ds_Merchant_UrlOK" value="http://www.hardnology.com/autorizada.htm" />
<input type="hidden" name="Ds_Merchant_UrlKO" value="http://www.hardnology.com/no_autorizada.htm" />

El fallo no sale si el campo "name" de ambas lo dejo en blanco ("").

¿Le ha pasado esto a alguien?

Por cierto, he utilizado números de tarjeta de crédito de esta dirección
http://www.tech-faq.com/lang/es/test-credit-card-numbers.shtml para las
pruebas.

¿Sabe alguien si este módulo funciona con CAJAMURCIA?

tunilove

Quote from: ledfear on September 02, 2006, 14:20:37 PM
Según en el foro de joomlaspanish

Quote from: abacobuenos dias a todos.
Despues de darle un par de vueltas al modulo, ya que me daba algunos errores, en concreto (si ves el codigo fuente de la pagina del error de sermepa) el codigo SIS0042, es por un error en la firma generada, el error viene en que faltan unas variablas al generar la firma SHA, en concrero hay que sustituir la linea

$message = $amount.$order.$code.$currency.$clave;
por
$message = $amount.$order.$code.$currency.$tipoOperacion.$url Merchant.$clave;

Y solucionado, un saludo a todos espero haber sido de ayuda

¡Suerte!

------------------------------
In a spanish forum (joomlaspanish.org)
Quote from: abaco
You have to change this line

$message = $amount.$order.$code.$currency.$clave;

by this one

$message = $amount.$order.$code.$currency.$tipoOperacion.$url Merchant.$clave;


se nota que no manejo el inglés ¿eh?  ;D

here is wrong    it gives  fault  herre 


Parse error: syntax error, unexpected T_STRING in /home/promoseu/public_html/shop/administrator/components/com_virtuemart/html/checkout.thankyou.php(84) : eval()'d code on line 22
Error: The code of the payment method TEST CC (TVS) contains a Parse Error!
Please correct that first

tunilove

SO NOW  ANY BODY MANAGE TO MAKE  CYBERPAC WORKING WITH VIRTUEMART ????????????  IF  YES PLEASE THE FINAL CODE   


hoppe

El error esta en la linea:
$message = $amount.$order.$code.$currency.$tipoOperacion.$url Merchant.$clave;

$url Merchant va todo junto, sin espacios. O sea:

$message = $amount.$order.$code.$currency.$tipoOperacion.$urlMerchant.$clave;

Y solucionado.  ;)
http://www.ferreteriaelclavo.com
Ferretería el Clavo Online.

Marco Pereira

Ola, desculpem a pergunta, mas tenho um cliente meu que quer interligar uma aplicação minha (feita em php) com o pagamento do BBVA! Por acaso alguem consegue arranjar-me algum exemplo de como fazer isso em PHP ??

standby

Hi, I think you can edit the language file and change "order is confirmed" with "order is confiormed but pending pay".

If it isn´t possible, you can edit the file checkout.thankyou.php and add "pending pay".

I haven´t tested it, only is a fast idea.

(sorry, my English isn´t very good)