Вы находитесь на странице: 1из 19

Implementar Pagosonline.

net a su CMS Mambo o


Joomla! Usando el Componente VirtueMart

Versión 3

Contenido
Última actualización: Septiembre de 2009

Copyright 2009 (C) Pagosonline.net S.A


TABLA DE CONTENIDO

1. INTRODUCCIÓN
2. INSTALACIÓN DE COMPONENTE VIRTUEMART
3. CONFIGURACIÓN MEDIO DE PAGO PAGOSONLINE.NET
4. CREACIÓN PÁGINA DE CONFIRMACIÓN
5. CREACIÓN PÁGINA DE RESPUESTA
1. INTRODUCCIÓN

Joomla es un CMS o Sistema Gestor de contenidos que permite construir sitios


web gestionables de manera fácil y eficiente. Existen numerosos componentes
que permiten agregarle funcionalidad a este sistema, entre los que se
encuentra VirtueMart. Este componente implementa una tienda virtual
totalmente funcional para empezar a gestionar el catalogo de su empresa.

Para poder aceptar pagos con tarjeta débito y crédito a través de


pagosonlilne.net, es necesario realizar una configuración de tal manera que el
medio de pago quede activo y sea capaz de conectarse con nuestro sistema
transaccional. Esta guía le proporciona la información necesaria para
implementar esta funcionalidad y crear una página de confirmación, la cual es
dedicada a la recepción de datos de pagosonline.net y mantener actualizado
los estados de los pagos y una página de respuesta, que es a donde se enviará
al cliente una vez finalice el pago y muestre el resultado del mismo.
2. INSTALACIÓN COMPONENTE VIRTUEMART

Una vez tenga instalado el sistema Joomla, necesitamos el componente


VirtueMart. Para descargarlo puede acceder a la página.
http://www.virtuemart.net/. Al descargar este obtendrá un archivo comprimido
.zip VirtueMart_1.x.x-COMPLETE_PACKAGE.zip, el cual contiene:

• 1 Componente (com_virtuemart_1.1.x.zip)
• 1 modulo principal VirtueMart (mod_virtuemart_1.1.x.zip)
• 10 módulos adicionales.

Los pasos de instalación del componente es el siguiente:

 Descomprima el paquete en un directorio local


 Inicie sesión como administrador (usando la URL
http://www.misitio.com/administrator)

 Click en Extensions # Install/Uninstall en el menú superior


 En la parte “Upload new component” o “Upload Package File”
seleccione el archivo 'com_virtuemart_1.1.x.zip'. Este paquete contiene todos
los archivos del componente VirtueMat, localizado en su computador local en el
lugar en donde descomprimió el paquete descargado. Presione “Upload file &
install”
 El componente VirtueMart deberá ser instalado y verá el mensaje de
bienvenida con las opciones del siguiente paso.

 Puede seleccionar alguna opción entre: install Sample Data (Algunos


productos con atributos en categorías) ó Go directly to the Shop, para
crear el catálogo.
 Ahora se debe instalar el modulo principal de VirtueMart. Ingresar
nuevamente a Extension # install/uninstall en el menú superior.
Seleccione el archivo mod_virtuemart_1.1.x.zip en la ventana de dialogo
de archivos y de click en “Upload file & install”.
 El modulo debe ser publicado, de lo contrario no podrá ser accedido por
los compradores.

De esta forma ya tendrá la tienda Virtual VirtueMart instalada en su sistema. Lo


puede acceder dando click en components # VirtueMart en el menú superior.
3. CONFIGURACIÓN MEDIO DE PAGO PAGOSONLINE.NET

Para administrar la tienda virtual lo puede hacer ingresando a Components #


VirtueMart en el menú superior. Desde allí seleccione “List Payment Methods”
y siga los siguientes pasos.

a). 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)

b). 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
$llave_encripcion = "00000000000";
$usuarioId = 00000;
$descripcion = "Pruebas de Generacion de Firmas";
$url_respuesta = "dirección completa donde está la pagina de respuesta";
$url_confirmacion = "dirección completa donde está la pagina de confirmacion";
$refVenta = $db->f("order_id");
$valor = number_format(floatval($db->f("order_total")),2,".","");
$iva = $db->f("order_tax");
if($iva == 0)
{
$basevalor = 0;
}
else
{
$basevalor = number_format(floatval($db->f("order_subtotal")),2,".","");
}
$moneda = "COP";
$firma= "$llave_encripcion~$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="<?php echo $descripcion; ?>">
<input type="hidden" name="prueba" value="1">
<input type="hidden" name="usuarioId" value="<?php echo $usuarioId ?>">
<input type="hidden" name="refVenta" value="<?php echo $refVenta ?>">
<input type="hidden" name="valor" value="<?php echo $valor ?>">
<input type="hidden" name="iva" value="<?php echo $iva ?>">
<input type="hidden" name="baseDevolucionIva" value="<?php echo $basevalor?>">
<input type="hidden" name="moneda" value="<?php echo $moneda ?>">
<input type="hidden" name="url_confirmacion" value="<?php echo $url_confirmacion ?>">
<input type="hidden" name="url_respuesta" value="<?php echo $url_respuesta?>">
<input type="hidden" name="emailComprador" value="<?php echo $user->email ?>">
<input type="hidden" name="firma" value="<?php echo $firma_codificada ?>">
<input name="Submit" type="submit" value="Enviar Datos para realizar su pago">
</form>

En la línea $usuarioId = 0000; debe que cambiarlo con el numero de


usuario que se le fue asignado cuando se registro con Pagosonline.
En la línea $llave_encripcion = "00000000000"; debe que cambiarlo con
la llave para realizar encripciones que la encuentra en el modulo
administrativo de Pagosonline.
En la línea $descripcion = "Pruebas de Generacion de Firmas"; puede
cambiar lo que está entre comillas por cualquier descripción que haga
referencia a la compra en su sitio.
En las líneas $url_respuesta … y $url_confirmacion…., entre las comillas
debe colocar la dirección completa donde estará estas páginas las
cuales más adelante se le explica cómo crear.

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>

c). 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;

4. CREACIÓN DE LA PÁGINA DE CONFIRMACIÓN

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

<?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, por lo general 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 a utilizar
$basedatos = 'mibasededatos ';
//conexion a mysql
$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";
}
// consulta a la bd
$sql = "REPLACE INTO pedidos_confir VALUES ('".$fecha."', '".$refVenta."',
'".$refPol."', '".$estadoPol."', '".$formaPago."', '".$banco."', '".$codigo."', '".$mensaje."',
'".$valor."')";
// select para actualizar la bd pedidos_confir y jos_vm_orders
switch($estadoPol)
{
case 4: $result_a = mysql_query("UPDATE jos_vm_orders SET
order_status ='A' WHERE order_id=".$refVenta ,$conexion);
break;
case 5: $result_c = mysql_query("UPDATE jos_vm_orders SET
order_status ='C' WHERE order_id=".$refVenta ,$conexion);
break;
case 6: $result_r = mysql_query("UPDATE jos_vm_orders SET
order_status ='R' WHERE order_id=".$refVenta ,$conexion);
break;
case 12:$result_p = mysql_query("UPDATE jos_vm_orders SET order_status ='P'
WHERE
order_id=".$refVenta ,$conexion);
break;
}
$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);
}
}
?>

Suba este nuevo archivo utilizando un cliente ftp a la raíz del sitio.

Nota: No olvide configurar la variable $url_confirmacion, en la configuración del


método de pago, con el valor correcto: la ruta donde quedo guardado el script
de confirmación de arriba (http://www.misitio.com/confirmacion.php).

Cuando termine de crear la página de confirmación deberá modificar los


estados posibles de las ordenes, para ello ingrese a la sección Orders en el
VirtueMart, luego escoja Order Status -> List Order Status Types, ahí
aparecerá todas los posibles estados, ahora es necesario modificar cada uno
así con su respectivo código.
Modificar Pending a Pendiente y poner el Order Status Code = P
Confirmed a Aprobado y poner el Order Status Code = A
Cancelled a Cancelado y poner el Order Status Code = C
Refunded a Rechazado y poner el Order Status Code = R
Shipped a Enviado y poner el Order Status Code = E

Todos los estados los modifica la página de confirmación dependiendo del


estado final de la transacción, el estado Enviado deberá cambiarlo
manualmente dependiendo si ustedes ya han enviado el producto/servicio a su
cliente.

5. CREACIÓN DE LA PÁGINA DE RESPUESTA

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


estado de la transacción. Esta página no modifica su base de datos, puede
editar el aspecto visual tanto como lo desee. A continuación un código que
obtiene la respuesta de pagosonline.net y la muestra al usuario.

<!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" />
<!--Tiene que configurar la direccion url que aparece aqui con la url de su sitio-->
<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: <?php echo(date("Y-m-d",strtotime("now"))); ?></td>
</span></tr>
<tr scope="col"><span class="Estilo5">
<td>N&ordm; de Recibo : <? echo $_GET['ref_venta'] ?></td>
</span></tr>
<tr scope="col"><span class="Estilo5">
<td>codigo pol : <? echo $_GET['ref_pol'] ?></td>
</span></tr>
<tr scope="col"><span class="Estilo5">
<td>Estado de la Transaccion: <?
switch($_GET['estado_pol'])
{
case 1: echo "Sin abrir";
break;
case 2: echo "Abierta";
break;
case 3: echo "Pagada";
break;
case 4: echo "Pagada y Abonada";
break;
case 5: echo "Cancelada";
break;
case 6: echo "Rechazada";
break;
case 7: echo "En validacion";
break;
case 8: echo "Reversada";
break;
case 9: echo "Reversada Fraudulenta";
break;
case 10: echo "Enviada Ent. Financiera";
break;
case 11: echo "Capturando datos tarjeta de credito";
break;
case 12: echo "Esperando confirmacion sistema PSE";
break;
}
?></td>
</span></tr>
<tr scope="col"><span class="Estilo5">
<td>Forma de Pago: <?
switch($_GET['tipo_medio_pago'])
{
case 1: echo " Tarjeta débito";
break;
case 2: echo " Tarjeta de crédito";
break;
case 3: echo " Tarjeta de crédito Verified by VISA";
break;
case 4: echo " Cuentas corrientes y de ahorros PSE";
break;
}
?> </td>
</span></tr>
<tr><!-- Es el medio de pago utilizado en el pago -->
<td><span class="Estilo5">Medio de pago:
<?php
switch($_GET['medio_pago'])
{
case 1: echo "Colpatria";
break;
case 2: echo "Bancolombia";
break;
case 3: echo "Conavi";
break;
case 4: echo "Popular";
break;
case 5: echo "Occidente";
break;
case 6: echo "AvVillas";
break;
case 8: echo "Santander";
break;
case 10: echo "VISA";
break;
case 11: echo "Master Card";
break;
case 12: echo "American Express";
break;
case 14: echo "Davivienda";
break;
case 22: echo "Diners";
break;
case 24: echo "Verified by VISA";
break;
case 25: echo "PSE";
break;
}
?></span>
</td>
</tr>
<tr scope="col"><span class="Estilo5">
<td>Banco: <? switch($_GET['medio_pago'])
{
case 1: echo "Colpatria";
break;
case 2: echo "Bancolombia";
break;
case 3: echo "Conavi";
break;
case 4: echo "Popular";
break;
case 5: echo "Occidente";
break;
case 6: echo "AvVillas";
break;
case 8: echo "Santander";
break;
case 10: echo "VISA";
break;
case 11: echo "Master Card";
break;
case 12: echo "American Express";
break;
case 14: echo "Davivienda";
break;
case 22: echo "Diners";
break;
case 24: echo "Verified by VISA";
break;
case 25: echo "PSE";
break;
}
?></td>
</span></tr>
<tr scope="col"><span class="Estilo5">
<td>Mensaje: <? echo $_GET['mensaje']; ?></td>
</span></tr>
<tr scope="col"><span class="Estilo5">
<td>Valor: <? echo $_GET['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>

Guarde el anterior script con el nombre respuesta.php y súbalo a la raíz del


sitios utilizando un cliente FTP.

Nota: No olvide configurar la variable $url_respuesta, en la configuración del


método de pago, con el valor correcto: la ruta donde quedo guardado el script
de respuesta de arriba (http://www.misitio.com/respuesta.php).

Вам также может понравиться