Muy Buenas Noche,
al grano para no perder tiempo,
estoy implementando una solucion oscommerce todo funciona muy bien tengo configurado los modulos de envios, totalizacion, y tarjetas de credito habilitados y funcionando perfectamentes, mi problema consiste en:
1. cuando los clientes ingresen el número de su tarjeta de crédito estos deben de ser validados en linea con unos archivos provistos por el emisor de tarjetas de credito (en este caso credomatic, que es el emisor de TC en Honduras), desde php debo de invocar este archivo y lo hago de la siguiente manera:
$cambio = $total;
$decim = round($cambio, 2);
$mon = $decim*100;
$file = "./newcli";
$cmd = "newcli aut $cc_number $cc_expiry_month $cc_expiry_year $mon";
$res = shell_exec($cmd);
$formt = substr ($res, 0, 4);
$tid = substr ($res, 5, 20);
switch($formt){
case "9999":
tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYME NT, 'error_message= Fondos Insuficientes', 'SSL'));
case "0001":
tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYME NT, 'error_message= La Transacción no se Pudo Completar, Intentelo de Nuevo mas Tarde', 'SSL'));
case "0010":
tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYME NT, 'error_message= El Monto es muy Grande', 'SSL'));
case "0012":
tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYME NT, 'error_message= ID de Transacción Inválido', 'SSL'));
case "0013":
tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYME NT, 'error_message= Lo Sentimos, En este momento nuestra terminal esta en mal estado', 'SSL'));
case "0014":
tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYME NT, 'error_message= Error en la Conección', 'SSL'));
case "0017":
tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYME NT, 'error_message= Mal Funcionamiento del Sistema', 'SSL'));
case "0018":
tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYME NT, 'error_message= Transacción no Soportada', 'SSL'));
case "0020":
tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYME NT, 'error_message= Tarjeta Inválida', 'SSL'));
case "0021":
tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYME NT, 'error_message= Tarjeta Expirada', 'SSL'));
}
tambien he intendado hacerlo con este otro codigo:
// Credit card authorization
$card = $HTTP_POST_VARS[x_Card_Num];
$month = substr($HTTP_POST_VARS[x_Exp_Date],0,2);
$year = substr($HTTP_POST_VARS[x_Exp_Date],2,2);
$amount = $HTTP_POST_VARS[x_Amount];
//newcli file
$newclipath = "/home/virtual/site4/fst/var/www/cgi-bin/newcli";
//cgi.dat
$datpath = "-P/home/virtual/site4/fst/var/www/cgi-bin/";
$result = "";
$execute = $newclipath." aut ".$card." ".$month." ".$year." ".$amount." ".$datpath;
//invoca al archivo newcli
$result = shell_exec($execute);
//validation
if (strstr($result,"0000-")) //
{
$tid=substr($result,5);
}
elseif (strstr($result,"0001-"))
{
tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYME NT, 'error_message= Error.', 'SSL'));
}
elseif (strstr($result,"0010-"))
{
tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYME NT, 'error_message= Error', 'SSL'));
}
elseif (strstr($result,"0012-"))
{
tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYME NT, 'error_message= Error', 'SSL'));
}
elseif (strstr($result,"0013-"))
{
tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYME NT, 'error_message= Error', 'SSL'));
}
elseif (strstr($result,"0014-"))
{
tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYME NT, 'error_message= Error', 'SSL'));
}
elseif (strstr($result,"0017-"))
{
tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYME NT, 'error_message= Error', 'SSL'));
}
elseif (strstr($result,"0018-"))
{
tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYME NT, 'error_message= Error', 'SSL'));
}
elseif (strstr($result,"0020-"))
{
tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYME NT, 'error_message= Error', 'SSL'));
}
elseif (strstr($result,"0021-"))
{
tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYME NT, 'error_message= Error', 'SSL'));
}
elseif (strstr($result,"9999-"))
{
tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYME NT, 'error_message= Error', 'SSL'));
}
elseif ($result == "Conecct no error")
{
tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYME NT, 'error_message= Error', 'SSL'));
}
elseif ($result == "Syntax error")
{
tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYME NT, 'error_message= Error', 'SSL'));
}
else
{
tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYME NT, 'error_message= Error.', 'SSL'));
}
// End Credit card authorization
el resultado es el mismo, no se enlaza con el servidor de credomatic,
en cambio si invoco el ejecutable newcli desde la linea de comando de linux si se enlaza y retorna los valores esperado.
mi php.ini esta configurado register_globals = On / safe_mode = on / safe_mode_exec_dir = (en la ruta donde esta el ejecutable newcli (asi se llama la aplicacion provista por el banco).
espero alguien me pueda ayudar con esto.
de antemano muchas gracias