You are on page 1of 6

¿Como implementar Pagos On Line a su CMS Mambo o

Joomla! Usando el Componente VirtueMart?

1. Una vez haya instalado y configurado su E-Shop, debe crear un nuevo


método de pago. Para hacer esto debe ir a su Back-End (administración) en
http://www.susitio.com/administrator/ y hacer Login.

2. Una vez este en la sección de administración, en el menú “Components”


seleccione “VirtueMart”

3. En el sub-menú de VirtueMart, bajo la opción Shop o Tienda seleccione


“Añadir Método de Pago” (si esta en ingles debe ser “Add Payment
Method”)

4. Bajo la pestaña General edite los siguientes campos:

Activo?: Seleccionar esta casilla


Nombre de Forma de Pago: Pagos On Line (puede editarlo a su gusto)
Codigo: POL
Usar Cybercash: Seleccione PayPal (or related)

5. Después, en la pestaña de Configuración o (Configuration) copie el


siguiente código cambiando los valores en rojo por los suyos:

<?php
$clave_secreta = "00000000000";
$usuarioId = 00000;
$refVenta = $db->f("order_id");
$valor = $db->f("order_total");
$iva = $db->f("order_tax");
$basevalor = $db->f("order_subtotal");
$moneda = COP;
$descripcion = "Pruebas de Generacion de Firmas";
$firma= "$clave_secreta~$usuarioId~$refVenta~$valor~$moneda";
$firma_codificada = md5($firma);
?>

<form name="form1" method="post"


action="https://gateway.pagosonline.net/apps/gateway/index.html" target="_blank">
<input type="hidden" name="descripcion" value="Pruebas"><br>
<input type="hidden" name="prueba" value="1"><br>

1
<input type="hidden" name="usuarioId" value="<?php echo $usuarioId ?>"><br>
<input type="hidden" name="refVenta" value="<?php echo $refVenta ?>"><br>
<input type="hidden" name="valor" value="<?php echo $valor ?>"><br>
<input type="hidden" name="iva" value="<?php echo $iva ?>"><br>
<input type="hidden" name="baseDevolucionIva" value="<?php echo $basevalor
?>"><br>
<input type="hidden" name="moneda" value="<?php echo $moneda ?>"><br>
<input type="hidden" name="firma" value="<?php echo $firma_codificada ?>"><br>
<input name="Submit" type="submit" value="Enviar Datos para realizar su pago"><br>
</form>

Nota: El siguiente código activa el módulo de pago para pruebas. Si desea


activarlo totalmente debe editar la línea

<input type="hidden" name="prueba" value="1"><br>

Cambiando 1 por 0, debe verse así:

<input type="hidden" name="prueba" value="0"><br>

6. Ahora debe crear la tabla en donde va a almacenar sus datos. Por Favor
ejecute el siguiente código SQL:

CREATE TABLE `pedidos_confir` (


`fecha` varchar(32) NOT NULL default '',
`refventa` varchar(32) NOT NULL default '',
`refpol` varchar(32) NOT NULL default '',
`estado_pol` varchar(32) NOT NULL default '',
`formapago` varchar(32) NOT NULL default '',
`banco` varchar(32) NOT NULL default '',
`codigo_respuesta_pol` varchar(32) NOT NULL default '',
`mensaje` varchar(50) NOT NULL default '',
`valor` varchar(20) NOT NULL default '',
UNIQUE KEY `refventa` (`refventa`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

7. El siguiente paso es crear una página de confirmación (en donde recibe los
datos suministrados por Pagos On Line para almacenarlos en una base de
datos). Use el siguiente código y guárdelo en una pagina con el nombre
confirmacion.php

2
Edite el texto que se encuentre en rojo reemplazándolo con sus datos. Un
archivo de texto (confirmacion.txt) registrará todos los errores que presente
el código mientras este funcionando.

<?php
$usuarioId = $_REQUEST['usuario_id'];
$fecha = date("d.m.Y-H:i:s");
$refVenta = $_REQUEST['ref_venta'];
$refPol = $_REQUEST['ref_pol'];
$estadoPol = $_REQUEST['estado_pol'];
$formaPago = $_REQUEST['tipo_medio_pago'];
$banco = $_REQUEST['medio_pago'];
$codigo = $_REQUEST['codigo_respuesta_pol'];
$mensaje = $_REQUEST['mensaje'];
$valor = $_REQUEST['valor'];
//Escriba su Host, usualmente es 'localhost'
$host = 'localhost';
//Escriba el nombre de usuario de la base de datos
$login = 'nombredeusuario';
//Escriba la contraseña del usuario de la base de datos
$password = 'contraseña ';
//Escriba el nombre de la base de datos
$basedatos = 'nombredelabasededatos';

$mensajeLog = "";

$conexion = mysql_connect($host, $login, $password);

if(!$conexion){
$mensajeLog .= "[".date("Y-m-d H:i:s")."] Error al conectar la base de datos -
".mysql_error()."\n";
}

if(!mysql_select_db($basedatos, $conexion)){
$mensajeLog .= "[".date("Y-m-d H:i:s")."] Error al seleccionar la base de datos -
".mysql_error()."\n";
}

$sql = "REPLACE INTO pedidos_confir VALUES ('".$fecha."', '".$refVenta."',


'".$refPol."', '".$estadoPol."', '".$formaPago."', '".$banco."', '".$codigo."', '".$mensaje."',
'".$valor."')";

3
$result = mysql_query($sql);

if (!$result) {
$mensajeLog .= "[".date("Y-m-d H:i:s")."] Error al ejecutar el query (".$sql.") la
base de datos - ".mysql_error()."\n";
}

if(strlen($mensajeLog)>0){

$filename = $_SERVER["DOCUMENT_ROOT"]."/confirmacion.txt";
$fp = fopen($filename, "a");

if($fp) {
fwrite($fp, $mensajeLog, strlen($mensajeLog));
fclose($fp);
}
}
?>

Una vez tenga el archivo configuracion.php súbalo a:

http://www.susitio.com/confirmacion.php

8. Si lo desea puede crear una página de respuesta que le muestre al usuario


el estado de la transacción. Esta pagina no modifica su base de datos,
puede editar el aspecto visual tanto como lo desee. A continuación un
código de muestra 100% funcional:

<?php
$usuarioId = $_GET['usuario_id'];
$fecha = date("d.m.Y-H:i:s");
$refVenta = $_GET['ref_venta'];
$refPol = $_GET['ref_pol'];
$estadoPol = $_GET['estado_pol'];
$formaPago = $_GET['tipo_medio_pago'];
$banco = $_GET['medio_pago'];
$codigo = $_GET['codigo_respuesta_pol'];
$mensaje = $_GET['mensaje'];
$valor = $_GET['valor'];
?>

4
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta HTTP-EQUIV="REFRESH" content="25; url=http://www.susitio.com/index.php">
<title>Confirmación del pago</title>
<style type="text/css">
<!--
.Estilo1 {color: #FFFFFF}
.Estilo2 {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10px;
color: #FFFFFF;
}
-->
</style>
</head>
<body>
<div align="center">
<table width="500" border="0" cellspacing="0" cellpadding="0">
<tr bgcolor="#0099FF">
<th width="100%" scope="col"><h1 class="Estilo1">Su pago est&aacute; siendo
confirmado para procesar su orden...</h1><br />
<tr bordercolor="#000000">
<tr scope="col"><span class="Estilo5">
<td>Fecha: <? echo $fecha ?></td>
</span></tr>
<tr scope="col"><span class="Estilo5">
<td>N&ordm; de Recibo : <? echo $refVenta ?></td>
</span></tr>
<tr scope="col"><span class="Estilo5">
<td>codigo pol : <? echo $refPol ?></td>
</span></tr>
<tr scope="col"><span class="Estilo5">
<td>estado pol : <? echo $estadoPol ?></td>
</span></tr>
<tr scope="col"><span class="Estilo5">
<td>Forma de Pago: <? echo $formaPago ?></td>
</span></tr>
<tr scope="col"><span class="Estilo5">
<td>Banco: <? echo $banco ?></td>
</span></tr>
<tr scope="col"><span class="Estilo5">
<td>codigo: <? echo $codigo ?></td>
</span></tr>

5
<tr scope="col"><span class="Estilo5">
<td>Mensaje: <? echo $mensaje ?></td>
</span></tr>
<tr scope="col"><span class="Estilo5">
<td>Valor: <? echo $valor ?></td>
</span></tr>
</tr><td bgcolor="#0099FF"><br />
<h1 align="center" class="Estilo1">Gracias por comprar con nosotros! </h1>
<div align="center"><br />
<span class="Estilo2">En unos momentos será redireccionado a la p&aacute;gina
principal</span></div></td>
</tr>
</table>
</div>
</body>
</html>

Una vez tenga el archivo respuesta.php súbalo a:

http://www.susitio.com/respuesta.php

9. Por último configure su cuenta de pagos en línea para que su pagina de


confirmación y de respuesta estén direccionadas al as pagina que acaba de
crear

Este tutorial fue elaborado por David Suescun Synergetic Designs


(synergetic.designs@gmail.com) con la ayuda de Juan Pablo Acosta
(Soporte Técnico de Pagos On Line).

Probado Mambo-PhpShop 1.02 stable y VirtuaMart 1.04 stable