Foros Joomla! Spanish

Zona técnica, debate y cooperación sobre Joomla!

Zonas Joomla! Spanish

Portal Joomla! Spansih
Portal Joomla! Spansih NoticiasComunidad JSZona de Extensiones

Estar informado de J!S

Boletines JS
Sigue el proyecto desde joomlacode
Joomla! Spanish 1.5.26 liberada

Sigue el proyecto desde joomlacode de la 3.0
Joomla! Spanish 3.1.0 liberada

Sigue el proyecto desde joomlacode de la 2.5
Joomla! Spanish 2.5.11 Liberada

Estadistícas del foro

  • Miembros en el foro: 396,919
  • Total Temas: 83,756
  • Total Mensajes: 22
Hay 258 usuarios actualmente navegando en los foros.

Colaboradores Gold

Soporte Publicitario



Responder
Antiguo 19-11-2007, 10:34 AM   #1
Iniciado en Joomla
 
Fecha de Ingreso: Aug 2007
Mensajes: 31
shilen is on a distinguished road
Predeterminado Código para TPV - Servired (Sermepa).

Bueno , he visto conveniento abrir un nuevo hilo , puesto que lo iba a poner en donde apunté mi duda, pero seguramente si la gente no entrara a ese hilo , no podria ayudarles si tienen problemas.

Les adjunto el codigo:

Código PHP:
<?php
#############Establezco las consultas a la base de datos para extraer los importes#############################


$db =& new ps_DB;
$q "SELECT * FROM `#__{vm}_orders` WHERE ";
$q .= "#__{vm}_orders.user_id='" $auth["user_id"] . "' ";
$q .= "AND #__{vm}_orders.order_id='$order_id'";
$db->query($q);

// Get bill_to information
    
$dbbt = new ps_DB;
    
$q  "SELECT * FROM `#__{vm}_order_user_info` WHERE order_id='" $db->f("order_id") . "' ORDER BY address_type ASC";
    
$dbbt->query($q);
    
$dbbt->next_record();
    
$user $dbbt->record;

    
/** Retrieve Payment Info **/
    
$dbpm = new ps_DB;
    
$q  "SELECT * FROM `#__{vm}_payment_method`, `#__{vm}_order_payment`, `#__{vm}_orders` ";
    
$q .= "WHERE #__{vm}_order_payment.order_id='$order_id' ";
    
$q .= "AND #__{vm}_payment_method.payment_method_id=#__{vm}_order_payment.payment_method_id ";
    
$q .= "AND #__{vm}_orders.user_id='" $auth["user_id"] . "' ";
    
$q .= "AND #__{vm}_orders.order_id='$order_id' ";
    
$dbpm->query($q);
    
$dbpm->next_record();

##################################################################################################################


//Aqui se calcula el valor que tendrá el valor total de la compra. 

$total $db->f("order_total");
$subtotal=$db->f("order_subtotal");
$iva=($subtotal*16)/100;
$total=($total+$iva)*100;
$total2=round($total);




    
?>

<!--/********************************************************************************************************/-->
<?php

// Valores constantes del comercio
$url_tpvv='https://sis-t.sermepa.es:25443/sis/realizarPago';
$clave='clave que nos proporciona Sermepa';
$name='nombre del comercio';
$code='clave que nos proporciona Sermepa';
$terminal='1';
$order=date('ymdHis');
$amount=$total2;
$currency='978';
$transactionType='0';
$urlMerchant='';
$message $amount.$order.$code.$currency.$transactionType.$urlMerchant.$clave;
$signature strtoupper(sha_1($message));




?>

<html><head></head><body>
<form action="<?php echo $url_tpvv ?>" method="post" target="tpv">

<table>



<tr>
    <td>
    <input type="hidden" name="Ds_Merchant_Amount" value="<?php echo $amount ?>" />
    </td>
</tr>

<tr>
    <td>
    <input type="hidden" name="Ds_Merchant_Currency" value="<?php echo $currency?>" />
    </td>
</tr>

<tr>
    <td>
    <input type="hidden" name="Ds_Merchant_Order" value="<?php echo $order?>" />
    </td>
</tr>


<tr>
    <td>
    <input type="hidden" name="Ds_Merchant_MerchantCode" value="<?php echo $code?>" />
    </td>
</tr>

<tr>
    <td>
    <input type="hidden" name="Ds_Merchant_MerchantURL" value="<?php echo $urlMerchant?>" />
    </td>
</tr>

<tr>
    <td>
    <input type="hidden" name="Ds_Merchant_MerchantName" value="<?php echo $name?>" />
    </td>
</tr>

<tr>
    <td>
    <input type="hidden" name="Ds_Merchant_ConsumerLanguage" value="001" />
    </td>
</tr>

<tr>
    <td>
    <input type="hidden" name="Ds_Merchant_MerchantSignature" value="<?php echo $signature ?>" />
    </td>
</tr>

<tr>
    <td>
    <input type="hidden" name="Ds_Merchant_Terminal" value="<?php echo $terminal?>" />
    </td>
</tr>

<tr>
    <td>
    <input type="hidden" name="Ds_Merchant_TransactionType" value="<?php echo $transactionType?>" />
    </td>
</tr>

<tr>
    <td>
    <input type="submit" value="Pinche para acceder a la pasarela de pago y completar la compra" />
    </td>
</tr>

</table>

</form>
</body></html>

<?php
function sha1_str2blks_SHA1($str)
{
   
$strlen_str strlen($str);
   
   
$nblk = (($strlen_str 8) >> 6) + 1;
   
   for (
$i=0$i $nblk 16$i++) $blks[$i] = 0;
   
   for (
$i=0$i $strlen_str$i++)
   {
       
$blks[$i >> 2] |= ord(substr($str$i1)) << (24 - ($i 4) * 8);
   }
   
   
$blks[$i >> 2] |= 0x80 << (24 - ($i 4) * 8);
   
$blks[$nblk 16 1] = $strlen_str 8;
   
   return 
$blks;
}

function 
sha1_safe_add($x$y)
{
   
$lsw = ($x 0xFFFF) + ($y 0xFFFF);
   
$msw = ($x >> 16) + ($y >> 16) + ($lsw >> 16);
   
   return (
$msw << 16) | ($lsw 0xFFFF);
}

function 
sha1_rol($num$cnt)
{
   return (
$num << $cnt) | sha1_zeroFill($num32 $cnt);    
}

function 
sha1_zeroFill($a$b)
{
   
$bin decbin($a);
   
   
$strlen_bin strlen($bin);
   
   
$bin $strlen_bin $b substr($bin0$strlen_bin $b);
   
   for (
$i=0$i $b$i++) $bin '0'.$bin;
   
   return 
bindec($bin);
}

function 
sha1_ft($t$b$c$d)
{
   if (
$t 20) return ($b $c) | ((~$b) & $d);
   if (
$t 40) return $b $c $d;
   if (
$t 60) return ($b $c) | ($b $d) | ($c $d);
   
   return 
$b $c $d;
}

function 
sha1_kt($t)
{
   if (
$t 20) return 1518500249;
   if (
$t 40) return 1859775393;
   if (
$t 60) return -1894007588;
   
   return -
899497514;
}

function 
sha_1($str$raw_output=FALSE)
{
   if ( 
$raw_output === TRUE ) return pack('H*'sha_1($strFALSE));
   
   
$x sha1_str2blks_SHA1($str);
   
$a =  1732584193;
   
$b = -271733879;
   
$c = -1732584194;
   
$d =  271733878;
   
$e = -1009589776;
   
   
$x_count count($x);
   
   for (
$i 0$i $x_count$i += 16)
   {
       
$olda $a;
       
$oldb $b;
       
$oldc $c;
       
$oldd $d;
       
$olde $e;
       
       for (
$j 0$j 80$j++)
       {
           
$w[$j] = ($j 16) ? $x[$i $j] : sha1_rol($w[$j 3] ^ $w[$j 8] ^ $w[$j 14] ^ $w[$j 16], 1);
           
           
$t sha1_safe_add(sha1_safe_add(sha1_rol($a5), sha1_ft($j$b$c$d)), sha1_safe_add(sha1_safe_add($e$w[$j]), sha1_kt($j)));
           
$e $d;
           
$d $c;
           
$c sha1_rol($b30);
           
$b $a;
           
$a $t;
       }
       
       
$a sha1_safe_add($a$olda);
       
$b sha1_safe_add($b$oldb);
       
$c sha1_safe_add($c$oldc);
       
$d sha1_safe_add($d$oldd);
       
$e sha1_safe_add($e$olde);
   }
   
   return 
sprintf('%08x%08x%08x%08x%08x'$a$b$c$d$e);
}
?>

Quiero recalcar este trozo, porque yo tuve que hacerlo personalizado. Puesto que el cliente no queria que saliera el IVA hasta el final, tuve que eliminar todas las tasas, y calcularlo aquí.

Código PHP:
$total $db->f("order_total");
$subtotal=$db->f("order_subtotal");
$iva=($subtotal*16)/100;
$total=($total+$iva)*100;
$total2=round($total); 
En el caso que lo hagais de forma predeterminada, con las taxas y gastos de envio incluidos por defecto. Deberia valeros de este modo:

Código PHP:
$total $db->f("order_total")*100;
$total2=round($total); 
La función round (Que hace un redondeo sobre un centimo real en la aplicacion) en mi caso era necesaria, porque al hacer los calculos, me salian varios decimales, que la TPV no me aceptaba y no podia calcular la firma de datos.

Pero no se si es obligatorio si ya lo calculais en un principio por defecto, porque esos decimales no se si los coge la base de datos. Luego cuando tenga mas tiempo lo comprobare pero ahora no lo recuerdo.

En su defecto , resta o suma un centimo dependiendo del redondeo, asi que tampoco pasa gran cosa. Pero vamos podeis perfectamente poner

$total = $db->f("order_total")*100; y comprobarlo si sale correcto así,

y cambiar en la asignacion de $amount=$total; y ya.


Bueno yo lo he probado ya varias veces, y lo unico que teneis que hacer es pegar este codigo, en el metodo de pago que habreis creado en el virtuemart, y en la pestaña de configuración ,lo pegais.
shilen no está en línea   Responder Con Cita
Antiguo 19-11-2007, 12:18 PM   #2
Iniciado en Joomla
 
Avatar de kariokax
 
Fecha de Ingreso: Oct 2007
Mensajes: 10
kariokax is on a distinguished road
Exclamation Existe O No Existe Dios?

Shilen, esta un poco mas depurado y lucido si señor!!, pero no es lo que queria conseguir....

Veamos...
yo ya lo tengo funcionando de la misma forma que tu. La cuestion es la siguiente:

en el proceso 4 de 4 de la compra ( Compruebe los datos y confirme el pedido) ... esta la cuestion del millon.
En ese mismo instante tienes que confirmar la compra con la opcion que tienes (CONFIRMAR PEDIDO) es cuando el pedido keda registrado en Virtuemart, sin haber hecho aun la transaccion. y despues es cuando te dala opcion de hacer la transacción.
Eso para mi es un gran problema, puesto que tengo mas de un 40% de transacciones denegadas.
Y eso supone tener un porron de pedidos en la tienda que no son validos.

Lo que quería conseguir es que realice el proceso de pago ANTES de que Virtuemart de el pedido como aceptado, y despues retornarlo al web con el resultado asignado por el TPV virtual, ya que tiene la opcion de regresarlo con un "Aceptado" o "Rechazado" segun haya discurrido la transaccion.

De todas formas te agradezco muchisimo tu interes y ayuda. Te mando saludos desde Valencia.

Y si alguien sabe como puedo solventar mi problema como buen Riojano que soy afincado en Valencia le regalare una botellita de Rioja de cosecha propia. jajajaaja.

Saludos a todos
kariokax no está en línea   Responder Con Cita
Antiguo 19-11-2007, 01:07 PM   #3
Iniciado en Joomla
 
Fecha de Ingreso: Aug 2007
Mensajes: 31
shilen is on a distinguished road
Predeterminado

Yo tambien quise solucionar ese problema, pero por cuestiones de tiempo fue imposible.

Cuando le das a confirmas pedido, es cuando te registra en la base de datos, los datos del pedido. Por tanto ese paso es necesario para obtener el importe.

Lo unico que se podria hacer, pero llevaria tiempo hacerlo, es modificar el archivo que contiene el "confirmar pedido" para que no mande el correo.
Si no recuerdo mal era administrator/components/com_virtuemart/html/checkout.confirm.php aunque no lo recuerdo bien son muchos archivos .

Ya una vez, solo confirme el pedido para obtener los datos, y accedido a la TPV, mediante la 'urlMerchant' volver a la pagina mandando el correo.

De todos modos , mi nivel en php y base de datos no llega hasta eso.
Joomla trata el correo mediante una clase, que no se como va, y habria que añadir un archivo ,sin mandar el correo, lo cual no se como se inserta francamente..

No se si habra alguna solucion mas fácil
shilen no está en línea   Responder Con Cita
Antiguo 19-11-2007, 01:33 PM   #4
Usuario de Joomla
 
Fecha de Ingreso: Aug 2007
Mensajes: 107
halmay is on a distinguished road
Predeterminado

Yo estoy comenzand a hacer la pasarela de pago. En otro post vi este codigo. Queria saber en que se diferencia uno y el otro.
Código:
<?PHP
// Valores constantes a modificar segun el comercio

$url_tpvv='https://sis.sermepa.es/sis/realizarPago';  // URL de Sermepa para entorno real. Para URL de entorno
                                                      // de pruebas consultar el manual de comercios.
$clave='la_clave_de_tu_comercio';                     // Clave de comercio proporcionada por Sermepa.
$name='nombre_de_tu_comercio';                        // 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=''; 	// 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 = '000'.$db->f("order_id");
$amount=$db->f("order_total")*100;
$sha = new SHA;
$message = $amount.$order.$code.$currency.$tipoOperacion.$url Merchant.$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.hardnology.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 hardnology.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.hardnology.com/autorizada.htm" />
<input type="hidden" name="Ds_Merchant_UrlKO" value="http://www.hardnology.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 ); 
	} 
}
?>
halmay no está en línea   Responder Con Cita
Antiguo 19-11-2007, 02:00 PM   #5
Iniciado en Joomla
 
Fecha de Ingreso: Aug 2007
Mensajes: 31
shilen is on a distinguished road
Predeterminado

Yo comencé con ese, y no conseguia hacerlo funcionar.

Diferencias:

No lleva la consulta a la base de datos para obtener el importe, que sin hacerla no conseguia obtenerlo.

El algoritmo de Sha(la firma de datos) es diferente, imagino que ambas seran válidas, pero yo puse el que me mandaron los de Sermepa.

Y realmente poco mas, yo añado menos campos en el formulario, porque es información que no es relevante para realizar el pago... y ya
shilen no está en línea   Responder Con Cita
Antiguo 19-11-2007, 02:16 PM   #6
Usuario de Joomla
 
Fecha de Ingreso: Aug 2007
Mensajes: 107
halmay is on a distinguished road
Predeterminado

Pues me quedare con el tuyo.
halmay no está en línea   Responder Con Cita
Antiguo 19-11-2007, 05:19 PM   #7
Usuario de Joomla
 
Fecha de Ingreso: Nov 2007
Ubicación: Barcelona
Mensajes: 50
vivian is on a distinguished road
Predeterminado

primero gracias por el post shilen, lo voy a probar

de todas manera, alguien ha provado de crear un script estilo el notify.php que usa paypal para poder cambiar el estado del pedido a confirmado si servired manda un ok?

en la información que me han mandado especifica que se puede conectar sincrona y asincronamente al servidor para pasar la información del estado del pago (como paypal) pero no estoy segura de como hacer el script y de si la dirección de notificación se tiene que poner en el url_merchant

muchas gracias
vivian no está en línea   Responder Con Cita
Antiguo 19-11-2007, 05:54 PM   #8
Iniciado en Joomla
 
Avatar de kariokax
 
Fecha de Ingreso: Oct 2007
Mensajes: 10
kariokax is on a distinguished road
Thumbs up Alabado El Señor!!

shilen, yo creo que no hace falta llegar hasta el correo.
Llevo dias haciendo pruebas de las de no dormir y me he dado cuenta que se podria modificar el archivo "ps_now" que puse en el post del otro lado en la parte final donde dice:

/************************************************** ************************
** name: process_payment()
** created by: ryan
** description: process transaction for now
** parameters: $order_number, the number of the order, we're processing here
** $order_total, the total $ of the order
** returns:
************************************************** *************************/

hay unas variables :

function process_payment($order_number, $order_total, &$d) {
global $vmLogger;


y terminan asi:

if (stristr($results, "Accepted")) {
#Clean up the cart, send out the emails, and display thankyyou page.
return true;
}
else {
if ($reason = stristr($results, "Declined"))
{
$vmLogger->err( "The transaction was declined because of: <strong>$reason</strong><br />" );
}
else
{
$vmLogger->err( "FATAL ERROR! Declined for an unknown reason, possibly a server misconfiguration error.<br/>$results" );
}
return false;
}

#echo $results;

}

}


pues me he dado cuenta que metiendo las variables adecuadas te manda al TPV sin finlizar la compra y con los datos necesarios, esperando la vuelta para recibir la orden de ACEPTADO o RECHAZADO del TPV Virtual. Lo malo es que como no tengo ni pajotera idea de programar no consigo hacerlo funcionar del todo.

Pero se seguro que se puede porque lo hice aunque me daba un error de parametro ke no puedo resolver por mi ignorancia en php. Solo pruebo deduciendo e intentando comprender las variables. :S

asi que si yo lo he visto tan cerca que no puedo dejar de hacer pruebas y de rebuscar dentro de los archivos de php intentando encontrar alguna variable que me pueda servir..... estoy seguro que para cualquiera de vosotros que entendeis un pokito de php lo resolveriais sin problema.

los archivos que comento estan en : Pasarela Y Retorno Para Finalizar Pedido
lo dejo aqui por si alguno quiere intentarlo.
kariokax no está en línea   Responder Con Cita
Antiguo 19-11-2007, 06:25 PM   #9
Iniciado en Joomla
 
Fecha de Ingreso: Aug 2007
Mensajes: 31
shilen is on a distinguished road
Predeterminado

¿Kariokax, los archivos ps_now y el cfg, los has creado tu?

No entiendo muy bien si los has creado a partir de otros como referencia, o estan en algun sitio que no consigo localizar ahora mismo.

Si son creados por ti, dime la ruta de los archivos de referencia, y sino la referencia en si .
shilen no está en línea   Responder Con Cita
Antiguo 19-11-2007, 08:27 PM   #10
Iniciado en Joomla
 
Avatar de kariokax
 
Fecha de Ingreso: Oct 2007
Mensajes: 10
kariokax is on a distinguished road
Predeterminado Vamos alla!!!

Si, los he modificado yo a partir de los archivos que ya existen ps_paymenow.php
kariokax no está en línea   Responder Con Cita


Responder

Marcadores

Herramientas
Desplegado

Permisos de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Códigos BB están Activo
Los Emoticonos están Activo
Código [IMG] está Activo
Código HTML está Inactivo
Trackbacks are Activo
Pingbacks are Activo
Refbacks are Activo