302 E-commerce

I have an e-commerce web (memoringo.com), i have a problem, when my clients try to pay with Visa/MasterCard an error comes: 302 Moved temporarily.

Here is the code i use to send information:

<?php

require_once("../common/common.php");

require_once("../common/dbinfo.php");

require_once("../common/class.session_timer.php");

require_once("../common/class.user.php");

require_once("../common/class.pedido.php");

require_once("http.php");

@session_name('portal');

session_start();

$timer = new SessionManger();

$timer->update_session($_SESSION);

function elimina_acentos($cadena){

$tofind = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ";

$replac = "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn";

return(strtr($cadena,$tofind,$replac));

}

function update_bank_unique_code($dbh,$id_pedido,$unique_code){

$SQL = "UPDATE pedidos SET bank_unique_code='".$unique_code."' WHERE id_pedido=".intval($id_pedido);

mysql_query($SQL,$dbh);

}

$unique_code = md5(uniqid(rand(), true));

update_bank_unique_code($dbh,$_POST["OrderId"],$unique_code);

$user = new usuarios();

$pedido = new pedido();

$billing_info = $user->get_billing_address($dbh,$_SESSION["job_id"]);

$shipping_info = $user->get_shipping_address($dbh,$_SESSION["job_id"]);

$userinfo = $user->get_user_info($dbh,$_SESSION["email"]);

set_time_limit();

$http=new http_class;

$http->timeout=0;

$http->data_timeout=0;

$http->debug=1;

$http->html_debug=0;

$url=";https://eps.banorte.com/recibo";

$error=$http->GetRequestArguments($url,$arguments);

$arguments["RequestMethod"]="POST";

$arguments["Protocol"]="https";

$arguments["PostValues"]=array(

"Name"=>"USER",

"Password"=>"PASS",

"ClientId"=>"ID",

"Mode"=>"P",

"TransType"=>"Auth",

"BillToFirstName"=>elimina_acentos(substr($userinfo->nombre,0,30)),

"BillToLastName"=>elimina_acentos(substr($userinfo->ap_paterno . " " . $userinfo->ap_materno,0,30)),

"BillToCompany"=>elimina_acentos(substr($billing_info->razon_social,0,40)),

"BillToTelVoice"=>elimina_acentos(substr($userinfo->lada.$userinfo->telefono,0,30)),

"BillToStreet1"=>elimina_acentos(substr($billing_info->calle." ".$billing_info->n_ext." ".$billing_info->n_int,0,60)),

"BillToStreet2"=>elimina_acentos(substr($billing_info->colona,0,60)),

"BillToStreet3"=>"",

"BillToCity"=>elimina_acentos(substr($billing_info->municipio,0,60)),

"BillToState"=>elimina_acentos(substr($billing_info->estado,0,60)),

"BillToCountry"=>"484",

"BillToPostalCode"=>$billing_info->cp,

"UserId"=>$_SESSION["id_user"],

"BirthDate"=>date("d",$userinfo->birthday)."/".date("m",$userinfo->birthday)."/".date("Y",$userinfo->birthday),

"Email"=>substr($userinfo->email,0,64),

"FedTaxId"=>elimina_acentos(substr($billing_info->rfc,0,60)),

"OrderId"=>str_pad($_POST["OrderId"],4,"0",STR_PAD_LEFT),

"ChargeDesc1"=>"Memoringo",

"ChargeDesc2"=>elimina_acentos(substr($pedido->get_product_var($dbh,$_SESSION["job_id"],'PRODUCTNAME'),0,40)),

"ChargeDesc3"=>"",

"ChargeDesc4"=>"",

"Number"=>$_POST["Number"],

"Expires"=>$_POST["expmonth"]."/".$_POST["expyear"],

"Cvv2Indicator"=>"1",

"Cvv2Val"=>$_POST["cvv2"],

"ShipFromFirstName"=>elimina_acentos(substr("MONICA",0,30)),

"ShipFromLastName"=>elimina_acentos(substr("VALDES RICARDEZ",0,30)),

"ShipFromCompany"=>elimina_acentos(substr("PUBLICACIONES E IDEAS EDITORIALES SA DE CV",0,40)),

"ShipFromTelVoice"=>"55-5652-0832",

"ShipFromFax"=>"55-5652-2002",

"ShipFromStreet1"=>elimina_acentos(substr("BRUNO TRAVEN NO 49",0,40)),

"ShipFromStreet2"=>"GRAL ANAYA",

"ShipFromStreet3"=>"",

"ShipFromCity"=>"Benito Juarez",

"ShipFromStateProv"=>"Distrito Federal",

"ShipFromCountry"=>"484",

"ShipFromPostalCode"=>"03340",

"ShipToFirstName"=>elimina_acentos(substr($userinfo->nombre,0,30)),

"ShipToLastName"=>elimina_acentos(substr($userinfo->ap_paterno . " " . $userinfo->ap_materno,0,30)),

"ShipToCompany"=>elimina_acentos(substr($userinfo->razon_social,0,40)),

"ShipTelVoice"=>elimina_acentos(substr($userinfo->lada.$userinfo->telefono,0,30)),

"ShipToFax"=>"",

"ShipToStreet1"=>elimina_acentos(substr($shipping_info->calle." ".$shipping_info->n_ext." ".$shipping_info->n_int,0,60)),

"ShipToStreet2"=>elimina_acentos(substr($shipping_info->colona,0,60)),

"ShipToStreet3"=>"",

"ShipToCity"=>elimina_acentos(substr($shipping_info->municipio,0,60)),

"ShipToStateProv"=>elimina_acentos(substr($shipping_info->estado,0,60)),

"ShipToCountry"=>"484",

"ShipToPostalCode"=>$shipping_info->cp,

"PbOrderIndicator"=>"0",

"Total"=>number_format($_POST["Total"],2,".",","),

"E1"=>$unique_code,

"E2"=>"",

"E3"=>"",

"ResponsePath"=>";https://www.memoringo.com/members/respuesta.php"

); //"Total"=>$_POST["Total"],

//var_dump($arguments);

//

$arguments["Referer"]=";https://www.memoringo.com/";

mysql_close($dbh);

//flush();

$error=$http->Open($arguments);

if($error=="")

{

$error=$http->SendRequest($arguments);

if($error=="")

{

//flush();

$headers=array();

$error=$http->ReadReplyHeaders($headers);

if($error=="")

{

for(Reset($headers),$header=0;$header

{

$header_name=Key($headers);

if(GetType($headers[$header_name])=="array")

{

for($header_value=0;$header_value

header($header_name.": ".$headers[$header_name][$header_value]);

}

else

header($header_name.": ".$headers[$header_name]);

}

//flush();

for(;;)

{

$error=$http->ReadReplyBody($body,1000);

if($error!=""

|| strlen($body)==0)

break;

echo ($body);

}

//flush();

}

}

$http->Close();

}

?>

And here the one i use to recive information:

<?php

require_once("../common/common.php");

require_once("../common/class.template.php");

require_once("../common/class.user.php");

require_once("../common/dbinfo.php");

require_once("../common/class.pedido.php");

require_once("../common/class.productos.php");

require_once("../common/class.session_timer.php");

@session_name('portal');

session_start();

$timer = new SessionManger();

$timer->update_session($_SESSION);

function insert_cat_answer_payworks ($dbh,$data){

$SQL = "INSERT INTO respuestas_banco (id_pedido,id_user,Status,MaxSev,TimeIn,TimeOut,ProcReturnMsg,ProcReturnCode,Tex

t,CcReturnMsg,Total,E1,E2,E3,AuthCode,Cvv2Resp,CcErrCode,OrderId) VALUES

(".intval($_GET["OrderId"]).",".$_SESSION["id_user"].",'".$_GET["Status"]."','".$_GET["MaxSev"]."','".$_GET["TimeIn"]."','".$_GET["TimeOut"]."','".$_GET["ProcReturnMsg"]."','".$_GET["ProcReturnCode"]."','".$_GET["Text"]."','".$_GET["CcReturnMsg"]."','".$_GET["Total"]."','".$_GET["E1"]."','".$_GET["E2"]."','".$_GET["E3"]."','".$_GET["AuthCode"]."','".$_GET["Cvv2Resp"]."','".$_GET["CcErrCode"]."','".$_GET["OrderId"]."')";

mysql_query($SQL,$dbh);

}

function insert_pago($dbh,$id_pedido){

$SQL = "INSERT INTO pagos (id_paymentgw,fecha,confirmacion,monto) VALUES (1,".intval($_GET["OrderId"]).",'".$_GET["AuthCode"]."','".$_GET["Total"]."')";

mysql_query($SQL,$dbh);

$SQL = "SELECT LAST_INSERT_ID() AS id_pago";

$res = mysql_query($SQL);

$row = mysql_fetch_object($res);

$id_pago = $row->id_pago;

$SQL = "UPDATE pedidos SET id_pago=".$id_pago." WHERE id_pedido=".$id_pedido;

mysql_query($SQL);

return $id_pago;

}

$pedido = new pedido();

if ($pedido->check_sig($dbh,intval($_GET["OrderId"]),$_GET["E1"])){

insert_cat_answer_payworks($dbh,$_GET);

if ($_GET["CcErrCode"]=="1"){ //Cargo aprobado

insert_pago($dbh,intval($_GET["OrderId"]));

$params = base64_encode("id_pedido=".intval($_GET["OrderId"])."&auth_code=".$_GET["AuthCode"]);

$tail = md5("421dc46fdbbd5f12577e0cec24be3f");

$params .= $tail . "Me";

$params = str_replace("=","M",$params);

header("Location: confirm.php?sess=".$params);

}else{ //Cargo denegado

header("Location: denied.php?id_pedido=".$_GET["OrderId"]."&total=".$_GET["Total"]);

}

} else {

echo "Error en firma de validación electrónica";

}

?>

#516979