Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/03/2011, 15:49
Avatar de Hamn
Hamn
 
Fecha de Ingreso: marzo-2008
Ubicación: Cali-Colombia
Mensajes: 212
Antigüedad: 16 años, 2 meses
Puntos: 1
Actualizar los registros en mi db

Hola amigos tengo un script que he configurado para recibir pagos en linea, dicho script cuando se efectua la compra me retorna dos url una donde confirma el estado de la compra y otra donde da respuesta al usaurio comprador.

Hasta ahi todo bien,

sucede que debo actualizar los registros en la db para que tome la info que Pagos Online me envia luego de la compra. tengo dos tablas en mi base de datos una que se llama
pedidos_confir es esta la estructura
Código:
CREATE TABLE IF NOT EXISTS `pedidos_confir` (
  `name` varchar(100) NOT NULL,
  `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 '',
  `email` varchar(100) NOT NULL,
  UNIQUE KEY `refventa` (`refventa`),
  FULLTEXT KEY `email` (`email`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

donde en el" estado_pol" debo agregar la info que recibo de pagos online, segun el caso ellos me dan 4 estados
si el caso es 4 el estado es A=aceptado
caso 5 el estado es C=Cancelado
caso 6 el estado es R=rechazado
caso 12 el estado es P=pendiente.

debo tomar esos datos y convertirlos par actualizar mi tabla dentro del script la cual su estructura es.
Código:
CREATE TABLE IF NOT EXISTS `order` (
  `id` bigint(20) unsigned NOT NULL auto_increment,
  `pay_id` varchar(32) default NULL,
  `service` varchar(16) NOT NULL default 'paypal',
  `user_id` int(10) unsigned NOT NULL default '0',
  `admin_id` int(10) unsigned NOT NULL default '0',
  `team_id` int(10) unsigned NOT NULL default '0',
  `city_id` int(10) unsigned NOT NULL default '0',
  `card_id` varchar(16) default NULL,
  `state` enum('unpay','pay','rejected','pending') NOT NULL default 'unpay',
  `quantity` int(10) unsigned NOT NULL default '1',
  `realname` varchar(32) default NULL,
  `mobile` varchar(128) default NULL,
  `zipcode` char(6) default NULL,
  `address` varchar(128) default NULL,
  `express` enum('Y','N') NOT NULL default 'Y',
  `express_xx` varchar(128) default NULL,
  `express_id` int(10) unsigned NOT NULL default '0',
  `express_no` varchar(32) default NULL,
  `price` double NOT NULL,
  `money` double NOT NULL,
  `origin` double NOT NULL,
  `credit` double NOT NULL,
  `card` double NOT NULL,
  `fare` double NOT NULL,
  `condbuy` varchar(128) default NULL,
  `remark` text,
  `create_time` int(10) unsigned NOT NULL default '0',
  `pay_time` int(10) unsigned NOT NULL default '0',
  `sms_express` enum('Y','N') NOT NULL default 'N',
  `comment_content` text,
  `comment_display` enum('Y','N') NOT NULL default 'Y',
  `comment_grade` enum('good','none','bad') NOT NULL default 'good',
  `comment_time` int(11) default NULL,
  `partner_id` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id`),
  UNIQUE KEY `UNQ_p` (`pay_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=41 ;
en este caso debo actualizar el "state"

tomando los valores de pedidos_confir debo actualizar mi estado de la orden con esto evito que al usuario le salga su pedido como no cancelado.

Este es el archivo que recibe la info sumistrada por la plataforma de pagos, y me permite tomar las variables con los resultados de la orden y actualizar mi db. me pueden ayudar a revisarla y ver que le falta,
si ven el archivo confirmacion.php testa creando un registro donde el ulimo log es este error

[2011-03-16 17:16:12] Error al ejecutar el query (REPLACE INTO pedidos_confir VALUES ('16.03.2011-17:16:12', '1300310134',
'67212035', '5', '', '', '2', '',
'29500.00')) la
base de datos - Column count doesn't match value count at row 1

Código PHP:
<?php
$llave
="llave_pol";
$usuarioId $_REQUEST['id_pol'];
$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 'usuario_db';
//Escriba la contraseña del usuario de la base de datos
$password 'contraseña_db';
//Escriba el nombre de la base de datos a utilizar
$basedatos 'db_name';
//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 "order 'unpay','pay'.'rejected','pending'"
switch($estadoPol)
{
case 
4$result_a mysql_query("UPDATE order SET state ='pay' WHERE id=".$refVenta ,$conexion);
break;
case 
5$result_c mysql_query("UPDATE order SET state ='unpay' WHERE id=".$refVenta ,$conexion);
break;
case 
6$result_r mysql_query("UPDATE order SET state ='rejected' WHERE id=".$refVenta ,$conexion);
break;
case 
12:$result_p mysql_query("UPDATE order SET state ='pending' WHERE 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$mensajeLogstrlen($mensajeLog));
fclose($fp);
}
}
?>
__________________
De que vale la vida si cuando la tenemos parece estar muerta.

http://www.somoscali.com/

Última edición por Hamn; 16/03/2011 a las 15:54