Como Configurar Virtue Mart con 2checkout, how to config Virtue Mart 2checkout
tallerdigitalvw.com:
Hola amigos hace unos días me toco integrar un carro en linea de Virtue Mart con 2checkout y la verdad me costo mucho poder hacer que las cosas funcionaran bien por lo cual les contare mis experiencias para que no tengan que sufrir tanto leyengo manuales y manuales para poder configurar lo.
Los problemas que tuve?
1-.Configure el modulo de 2checkout(si no sabes como configurar lo, sigue leyendo que lo explicare mas tarde) y cuando enviaba la confirmación de la compra me aparecía una información que decía "Parameter Error":
Solución: Resulta ser que 2checkout tiene 2 tipos de paneles administrativos, el clásico y el nuevo, el nuevo tiene ciertos problemas por lo cual aun no informa de los avisos importantes, por lo que deberán ingresar al panel clásico para poder ver todas las advertencias, resulto ser que el error era que aun no había confirmado el código de seguridad que 2checkout solicita a la hora de crear una cuenta nueva por lo cual la cuenta es bloqueada y marcada como cuenta en riesgo, lo cual impide que puedas utilizar tu interfaces de pago. ahora ya sabes si te aparece el error "Parameter Error" no significa específicamente que tu Virtue Mart 2checkout este malo el script, significa que tu cuenta por alguna información faltante 2checkout la tiene en riesgo, por lo cual solo continua rellenando la información y tu cuenta saldrá de riego.
2-.Después me tope con que solo me enviaba la información del shiping y no envia la de billing, el cliente tenia que rellenarla por el mismo lo cual consideraba que era innecesario que el cliente tuviera que llenar dos veces su info.
Solución: Navegando en todo el foro de Virtue Mart y sufriendo con el ingles al fin encontré una solución al problema. y resulto ser que solo había que quitar un par de lineas del script para que todo funcionara, a continuación les envió los ejemplos del script.
script en su forma original.
Code:
<?php
$q = "SELECT * FROM #__users WHERE user_info_id='".$db->f("user_info_id")."'";
$dbbt = new ps_DB;
$dbbt->setQuery($q);
$dbbt->query();
$dbbt->next_record();
// Get ship_to information
if( $db->f("user_info_id") != $dbbt->f("user_info_id")) {
$q2 = "SELECT * FROM #__vm_user_info WHERE user_info_id='".$db->f("user_info_id")."'";
$dbst = new ps_DB;
$dbst->setQuery($q2);
$dbst->query();
$dbst->next_record();
}
else {
$dbst = $dbbt;
}
//Authnet vars to send
$formdata = array (
'x_login' => TWOCO_LOGIN,
'x_email_merchant' => ((TWOCO_MERCHANT_EMAIL == 'True') ? 'TRUE' : 'FALSE'),
// Customer Name and Billing Address
'x_first_name' => $dbbt->f("first_name"),
'x_last_name' => $dbbt->f("last_name"),
'x_company' => $dbbt->f("company"),
'x_address' => $dbbt->f("address_1"),
'x_city' => $dbbt->f("city"),
'x_state' => $dbbt->f("state"),
'x_zip' => $dbbt->f("zip"),
'x_country' => $dbbt->f("country"),
'x_phone' => $dbbt->f("phone_1"),
'x_fax' => $dbbt->f("fax"),
'x_email' => $dbbt->f("email"),
// Customer Shipping Address
'x_ship_to_first_name' => $dbst->f("first_name"),
'x_ship_to_last_name' => $dbst->f("last_name"),
'x_ship_to_company' => $dbst->f("company"),
'x_ship_to_address' => $dbst->f("address_1"),
'x_ship_to_city' => $dbst->f("city"),
'x_ship_to_state' => $dbst->f("state"),
'x_ship_to_zip' => $dbst->f("zip"),
'x_ship_to_country' => $dbst->f("country"),
'x_invoice_num' => $db->f("order_number"),
'x_receipt_link_url' => SECUREURL."2checkout_notify.php"
);
if( TWOCO_TESTMODE == "Y" )
$formdata['demo'] = "Y";
$version = "2";
$url = "https://www2.2checkout.com/2co/buyer/purchase";
$formdata['x_amount'] = number_format($db->f("order_total"), 2, '.', '');
//build the post string
$poststring = '';
foreach($formdata AS $key => $val){
$poststring .= "<input type='hidden' name='$key' value='$val' />
";
}
?>
<form action="<?php echo $url ?>" method="post" target="_blank">
<?php echo $poststring ?>
<p>Click on the Image below to pay...</p>
<input type="image" name="submit" src="https://www.2checkout.com/images/buy_logo.gif" border="0" alt="Make payments with 2Checkout, it's fast and secure!" title="Pay your Order with 2Checkout, it's fast and secure!" />
</form>
Por lo cual solo había que quitar estas lineas innecesarias que aparecen al principio, en pocas palabras lo que aparecía antes de // Get ship_to information.
Code:
$q = "SELECT * FROM #__users WHERE user_info_id='".$db->f("user_info_id")."'";
$dbbt = new ps_DB;
$dbbt->setQuery($q);
$dbbt->query();
$dbbt->next_record();
El script ya arreglado deberá verse así.
Code:
<?php
// Get ship_to information
if( $db->f("user_info_id") != $dbbt->f("user_info_id")) {
$q2 = "SELECT * FROM #__vm_user_info WHERE user_info_id='".$db->f("user_info_id")."'";
$dbst = new ps_DB;
$dbst->setQuery($q2);
$dbst->query();
$dbst->next_record();
}
else {
$dbst = $dbbt;
}
//Authnet vars to send
$formdata = array (
'x_login' => TWOCO_LOGIN,
'x_email_merchant' => ((TWOCO_MERCHANT_EMAIL == 'True') ? 'TRUE' : 'FALSE'),
// Customer Name and Billing Address
'x_first_name' => $dbbt->f("first_name"),
'x_last_name' => $dbbt->f("last_name"),
'x_company' => $dbbt->f("company"),
'x_address' => $dbbt->f("address_1"),
'x_city' => $dbbt->f("city"),
'x_state' => $dbbt->f("state"),
'x_zip' => $dbbt->f("zip"),
'x_country' => $dbbt->f("country"),
'x_phone' => $dbbt->f("phone_1"),
'x_fax' => $dbbt->f("fax"),
'x_email' => $dbbt->f("email"),
// Customer Shipping Address
'x_ship_to_first_name' => $dbst->f("first_name"),
'x_ship_to_last_name' => $dbst->f("last_name"),
'x_ship_to_company' => $dbst->f("company"),
'x_ship_to_address' => $dbst->f("address_1"),
'x_ship_to_city' => $dbst->f("city"),
'x_ship_to_state' => $dbst->f("state"),
'x_ship_to_zip' => $dbst->f("zip"),
'x_ship_to_country' => $dbst->f("country"),
'x_invoice_num' => $db->f("order_number"),
'x_receipt_link_url' => SECUREURL."2checkout_notify.php"
);
if( TWOCO_TESTMODE == "Y" )
$formdata['demo'] = "Y";
$version = "2";
$url = "https://www2.2checkout.com/2co/buyer/purchase";
$formdata['x_amount'] = number_format($db->f("order_total"), 2, '.', '');
//build the post string
$poststring = '';
foreach($formdata AS $key => $val){
$poststring .= "<input type='hidden' name='$key' value='$val' />
";
}
?>
<form action="<?php echo $url ?>" method="post" target="_blank">
<?php echo $poststring ?>
<p>Click on the Image below to pay...</p>
<input type="image" name="submit" src="https://www.2checkout.com/images/buy_logo.gif" border="0" alt="Make payments with 2Checkout, it's fast and secure!" title="Pay your Order with 2Checkout, it's fast and secure!" />
</form>
3-.ok ya enviaba la info completa pero resultaba ser que en la información del producto aparecía un hash mero feo lo cual considero que causaría desconfianza a nuestros compradores por lo cual tenia que encontrar algo mejor y buscando dentro del foro encontré que había otro script que eliminaba el hash, pero necesitaba que el el producto estuviera en el carro de Virtue Mart y en el carro de 2checkout así que funciono pero como siempre problema con la info de billing y a continuación pongo el código.
Así quedo el código.
Code:
<?php
$q = "SELECT * FROM #__users WHERE user_info_id='".$db->f("user_info_id")."'";
$dbbt = new ps_DB;
$dbbt->setQuery($q);
$dbbt->query();
$dbbt->next_record();
// Get ship_to information
if( $db->f("user_info_id") != $dbbt->f("user_info_id")) {
$q2 = "SELECT * FROM #__vm_user_info WHERE user_info_id='".$db->f("user_info_id")."'";
$dbst = new ps_DB;
$dbst->setQuery($q2);
$dbst->query();
$dbst->next_record();
}
else {
$dbst = $dbbt;
}
$q3 = "SELECT * FROM #__vm_order_item WHERE user_info_id='".$db->f("user_info_id")."'";
$dbcprod = new ps_DB;
$dbcprod->setQuery($q3);
$dbcprod->query();
$dbcprod->next_record();
for($i = 0; $i < count($dbcprod->record); $i++){ //sort out user orders
$orders[$i] = $dbcprod->record[$i]->order_id;
}
arsort($orders);
$this_order_id = current($orders); //sets most recent order number for user
for($i = 0; $i < count($dbcprod->record); $i++){ //gets all product info entries for this order number
if($dbcprod->record[$i]->order_id == $this_order_id){
$this_order[$i] = $dbcprod->record[$i];
}
}
sort($this_order);
//2co c_prods to send
for($i = 0; $i < count($this_order); $i++){ //creates 2co c_prod parameters
$twoco_prod_info["c_prod_$i"] = $this_order[$i]->order_item_sku .",". $this_order[$i]->product_quantity;
$twoco_prod_info["c_name_$i"] = $this_order[$i]->order_item_name;
$twoco_prod_info["c_price_$i"] = $this_order[$i]->product_final_price;
$twoco_prod_info["c_description_$i"] = $this_order[$i]->order_item_name .",". $this_order[$i]->product_attribute;
}
//Authnet vars to send
$formdata = array (
'x_login' => TWOCO_LOGIN,
'x_email_merchant' => ((TWOCO_MERCHANT_EMAIL == 'True') ? 'TRUE' : 'FALSE'),
'id_type' => 1, //added for c_prod compliance
// Customer Name and Billing Address
'x_first_name' => $dbbt->f("first_name"),
'x_last_name' => $dbbt->f("last_name"),
'x_company' => $dbbt->f("company"),
'x_address' => $dbbt->f("address_1"),
'x_city' => $dbbt->f("city"),
'x_state' => $dbbt->f("state"),
'x_zip' => $dbbt->f("zip"),
'x_country' => $dbbt->f("country"),
'x_phone' => $dbbt->f("phone_1"),
'x_fax' => $dbbt->f("fax"),
'x_email' => $dbbt->f("email"),
// Customer Shipping Address
'x_ship_to_first_name' => $dbst->f("first_name"),
'x_ship_to_last_name' => $dbst->f("last_name"),
'x_ship_to_company' => $dbst->f("company"),
'x_ship_to_address' => $dbst->f("address_1"),
'x_ship_to_city' => $dbst->f("city"),
'x_ship_to_state' => $dbst->f("state"),
'x_ship_to_zip' => $dbst->f("zip"),
'x_ship_to_country' => $dbst->f("country"),
'x_invoice_num' => $db->f("order_id"),
'x_receipt_link_url' => SECUREURL."2checkout_notify.php"
);
$formdata = array_merge($twoco_prod_info, $formdata); //combine formdata with twoco_prod_info so c_prod info gets sent to 2co
if( TWOCO_TESTMODE == "Y" )
$formdata['demo'] = "Y";
$version = "2";
$url = "https://www2.2checkout.com/2co/buyer/purchase";
$formdata['x_amount'] = number_format($db->f("order_total"), 2, '.', '');
//build the post string
$poststring = '';
foreach($formdata AS $key => $val){
$poststring .= "<input type='hidden' name='$key' value='$val' />
";
}
?>
<form action="<?php echo $url ?>" method="post" target="_self">
<?php echo $poststring ?>
<p>Click on the Image below to pay...</p>
<input type="image" name="submit" src="https://www.2checkout.com/images/buy_logo.gif" border="0" alt="Make payments with 2Checkout, it's fast and secure!" title="Pay your Order with 2Checkout, it's fast and secure!" />
</form>
4-. ooooooo no otra vez!!! el nuevo código no envía la info de Billing así que decidí hacer con el script nuevo lo que hice con el script anterior.
Nuevo codigo ya con info de billing.
Code:
<?php
// Get ship_to information
if( $db->f("user_info_id") != $dbbt->f("user_info_id")) {
$q2 = "SELECT * FROM #__vm_user_info WHERE user_info_id='".$db->f("user_info_id")."'";
$dbst = new ps_DB;
$dbst->setQuery($q2);
$dbst->query();
$dbst->next_record();
}
else {
$dbst = $dbbt;
}
$q3 = "SELECT * FROM #__vm_order_item WHERE user_info_id='".$db->f("user_info_id")."'";
$dbcprod = new ps_DB;
$dbcprod->setQuery($q3);
$dbcprod->query();
$dbcprod->next_record();
for($i = 0; $i < count($dbcprod->record); $i++){ //sort out user orders
$orders[$i] = $dbcprod->record[$i]->order_id;
}
arsort($orders);
$this_order_id = current($orders); //sets most recent order number for user
for($i = 0; $i < count($dbcprod->record); $i++){ //gets all product info entries for this order number
if($dbcprod->record[$i]->order_id == $this_order_id){
$this_order[$i] = $dbcprod->record[$i];
}
}
sort($this_order);
//2co c_prods to send
for($i = 0; $i < count($this_order); $i++){ //creates 2co c_prod parameters
$twoco_prod_info["c_prod_$i"] = $this_order[$i]->order_item_sku .",". $this_order[$i]->product_quantity;
$twoco_prod_info["c_name_$i"] = $this_order[$i]->order_item_name;
$twoco_prod_info["c_price_$i"] = $this_order[$i]->product_final_price;
$twoco_prod_info["c_description_$i"] = $this_order[$i]->order_item_name .",". $this_order[$i]->product_attribute;
}
//Authnet vars to send
$formdata = array (
'x_login' => TWOCO_LOGIN,
'x_email_merchant' => ((TWOCO_MERCHANT_EMAIL == 'True') ? 'TRUE' : 'FALSE'),
'id_type' => 1, //added for c_prod compliance
// Customer Name and Billing Address
'x_first_name' => $dbbt->f("first_name"),
'x_last_name' => $dbbt->f("last_name"),
'x_company' => $dbbt->f("company"),
'x_address' => $dbbt->f("address_1"),
'x_city' => $dbbt->f("city"),
'x_state' => $dbbt->f("state"),
'x_zip' => $dbbt->f("zip"),
'x_country' => $dbbt->f("country"),
'x_phone' => $dbbt->f("phone_1"),
'x_fax' => $dbbt->f("fax"),
'x_email' => $dbbt->f("email"),
// Customer Shipping Address
'x_ship_to_first_name' => $dbst->f("first_name"),
'x_ship_to_last_name' => $dbst->f("last_name"),
'x_ship_to_company' => $dbst->f("company"),
'x_ship_to_address' => $dbst->f("address_1"),
'x_ship_to_city' => $dbst->f("city"),
'x_ship_to_state' => $dbst->f("state"),
'x_ship_to_zip' => $dbst->f("zip"),
'x_ship_to_country' => $dbst->f("country"),
'x_invoice_num' => $db->f("order_id"),
'x_receipt_link_url' => SECUREURL."2checkout_notify.php"
);
$formdata = array_merge($twoco_prod_info, $formdata); //combine formdata with twoco_prod_info so c_prod info gets sent to 2co
if( TWOCO_TESTMODE == "Y" )
$formdata['demo'] = "Y";
$version = "2";
$url = "https://www2.2checkout.com/2co/buyer/purchase";
$formdata['x_amount'] = number_format($db->f("order_total"), 2, '.', '');
//build the post string
$poststring = '';
foreach($formdata AS $key => $val){
$poststring .= "<input type='hidden' name='$key' value='$val' />
";
}
?>
<form action="<?php echo $url ?>" method="post" target="_self">
<?php echo $poststring ?>
<p>Click on the Image below to pay...</p>
<input type="image" name="submit" src="https://www.2checkout.com/images/buy_logo.gif" border="0" alt="Make payments with 2Checkout, it's fast and secure!" title="Pay your Order with 2Checkout, it's fast and secure!" />
</form>
Continua en el siguiente post ==) ???
Esto a sido elaborado gracias al foro de virtue mart a Ruppert, leona, John Sawatdee, subvención, a los amigos de 2checkout, a mis compañeros del trabajo en http://www.tallerdigitalvw.com y principalmente a Dios que nos da la sabiduria para poder crear y aprender de todos los developers.
Importante: Favor comentarme si me e equivocado en algo para poder corregirlo, recuerden que postear un reply dando un simple gracias es muy importante para que un foro cresca y lo mas importante es que debemos de fomentar la cultura de donar, por que es bueno donar? por que cada developer que crea interfaces tan maravillosas como es Virtue Mart tiene hijos o esposa o simplemente nesecidades y pasan dias, meses y años sentados en su computadora a tiempo completo creando interfaces sin animo de lucro, solamente con el deseo de crecer en conocimiento y ayudar al progimo, por eso y muchas cosas mas es necesario que donemos aunque sea solo $1 pero ten por seguro que sera de mucha ayuda.
Si deseas Donar a Virtue Mart ve a la pagina principal y busca al lado izquierdo la viñeta de soporte y preciona el botón de donar.
Continua en el siguiente post ==) ???
tallerdigitalvw.com:
5-.El otro problema era que cuando el usuario confirmaba su compra en el carro de Virtue Mart tenia que presionar el botón de pagar en el logo de 2checkout por lo cual investigue un poco mas en el foro y descubrí que alguien había utilizado una parte del script de paypal para que cuando el cliente confirmara su orden de una vez se fuera al área de pago.
El script que envia la info de Billing y de Shiping, de una vez envia a la pagina de 2checkout al confirmar la orden y elimina el hash y lo vuelve mas estetico.
Code:
<?php
// Get ship_to information
if( $db->f("user_info_id") != $dbbt->f("user_info_id")) {
$q2 = "SELECT * FROM #__vm_user_info WHERE user_info_id='".$db->f("user_info_id")."'";
$dbst = new ps_DB;
$dbst->setQuery($q2);
$dbst->query();
$dbst->next_record();
}
else {
$dbst = $dbbt;
}
$q3 = "SELECT * FROM #__vm_order_item WHERE user_info_id='".$db->f("user_info_id")."'";
$dbcprod = new ps_DB;
$dbcprod->setQuery($q3);
$dbcprod->query();
$dbcprod->next_record();
for($i = 0; $i < count($dbcprod->record); $i++){ //sort out user orders
$orders[$i] = $dbcprod->record[$i]->order_id;
}
arsort($orders);
$this_order_id = current($orders); //sets most recent order number for user
for($i = 0; $i < count($dbcprod->record); $i++){ //gets all product info entries for this order number
if($dbcprod->record[$i]->order_id == $this_order_id){
$this_order[$i] = $dbcprod->record[$i];
}
}
sort($this_order);
//2co c_prods to send
for($i = 0; $i < count($this_order); $i++){ //creates 2co c_prod parameters
$twoco_prod_info["c_prod_$i"] = $this_order[$i]->order_item_sku .",". $this_order[$i]->product_quantity;
$twoco_prod_info["c_name_$i"] = $this_order[$i]->order_item_name;
$twoco_prod_info["c_price_$i"] = $this_order[$i]->product_final_price;
$twoco_prod_info["c_description_$i"] = $this_order[$i]->order_item_name .",". $this_order[$i]->product_attribute;
}
//Authnet vars to send
$formdata = array (
'x_login' => TWOCO_LOGIN,
'x_email_merchant' => ((TWOCO_MERCHANT_EMAIL == 'True') ? 'TRUE' : 'FALSE'),
'id_type' => 1, //added for c_prod compliance
// Customer Name and Billing Address
'x_first_name' => $dbbt->f("first_name"),
'x_last_name' => $dbbt->f("last_name"),
'x_company' => $dbbt->f("company"),
'x_address' => $dbbt->f("address_1"),
'x_city' => $dbbt->f("city"),
'x_state' => $dbbt->f("state"),
'x_zip' => $dbbt->f("zip"),
'x_country' => $dbbt->f("country"),
'x_phone' => $dbbt->f("phone_1"),
'x_fax' => $dbbt->f("fax"),
'x_email' => $dbbt->f("email"),
// Customer Shipping Address
'x_ship_to_first_name' => $dbst->f("first_name"),
'x_ship_to_last_name' => $dbst->f("last_name"),
'x_ship_to_company' => $dbst->f("company"),
'x_ship_to_address' => $dbst->f("address_1"),
'x_ship_to_city' => $dbst->f("city"),
'x_ship_to_state' => $dbst->f("state"),
'x_ship_to_zip' => $dbst->f("zip"),
'x_ship_to_country' => $dbst->f("country"),
'x_invoice_num' => $db->f("order_id"),
'x_receipt_link_url' => SECUREURL."2checkout_notify.php"
);
$formdata = array_merge($twoco_prod_info, $formdata); //combine formdata with twoco_prod_info so c_prod info gets sent to 2co
if( TWOCO_TESTMODE == "Y" )
$formdata['demo'] = "Y";
$version = "2";
$url = "https://www2.2checkout.com/2co/buyer/purchase";
$formdata['x_amount'] = number_format($db->f("order_total"), 2, '.', '');
//build the post string
$poststring = '';
foreach($formdata AS $key => $val){
$poststring .= "<input type='hidden' name='$key' value='$val' />
";
}
?>
<form id="cho" action="<?php echo $url ?>" method="post" target="_self">
<?php echo $poststring ?>
<p>Click on the Image below to pay...</p>
<input type="image" name="submit" src="https://www.2checkout.com/images/buy_logo.gif" border="0" alt="Make payments with 2Checkout, it's fast and secure!" title="Pay your Order with 2Checkout, it's fast and secure!" />
</form>
<script language="JavaScript" type="text/javascript">
<!--
document.getElementById('cho').submit();
//-->
</script>
por alguna razon el script me esta funcionando sin que tenga que agregar el producto en el carro de 2checkout pero eso es algo que aun no se por que pero la cosa es que me esta funcionando.
6-.Como configurar el plugin de 2checkout?
Simplemente debes de llenar los datos del plugin con tu numero de cliente 2checkout, la palabra de seguridad, orden aceptada en aceptada y orden denegada en Cancelada, y modo demo activado en lo que realizas tus pruebas.
7-.ya todo estaba configurado pero cuando recibía el correo de demo aparecía en error "no hay item para enviar por lo cual su orden sera enviada y no se le cargara a su tarjeta".
Solución: Esas palabras son normales en modo demo pero si te vas a tu panel administrativo de 2checkout y lo pones en live sales vera que ya no habrá problemas.
8-.2checkout no redirege al terminar la compra a mi tienda en linea.
Solución: hay que copiar un archivo por ftp path /www/dominio.com/administrator/components/com_virtuemart/2checkout_notify.php a tu path /www/dominio.com/2checkout_notify.php luego tendras que entrar en tu panel nuevo de 2checkout y pulsar en Account/Site Management y el la parte de abajo donde dice Approved URL y Pending URL escribir lo siguiente http:www.dominio.com/2checkout_notify.php y luego guardar. Luego en el menu Notification en el area de global settings escribir nuevamente http:www.dominio.com/2checkout_notify.php luego marcar casilla Enable All Notifications y presionar el botón de aplicar y guardar y listo ya debera funcionar.
Esto a sido elaborado gracias al foro de virtue mart a Ruppert, leona, John Sawatdee, subvención, a los amigos de 2checkout, a mis compañeros del trabajo en http://www.tallerdigitalvw.com y principalmente a Dios que nos da la sabiduria para poder crear y aprender de todos los developers.
Importante: Favor comentarme si me e equivocado en algo para poder corregirlo, recuerden que postear un reply dando un simple gracias es muy importante para que un foro cresca y lo mas importante es que debemos de fomentar la cultura de donar, por que es bueno donar? por que cada developer que crea interfaces tan maravillosas como es Virtue Mart tiene hijos o esposa o simplemente nesecidades y pasan dias, meses y años sentados en su computadora a tiempo completo creando interfaces sin animo de lucro, solamente con el deseo de crecer en conocimiento y ayudar al progimo, por eso y muchas cosas mas es necesario que donemos aunque sea solo $1 pero ten por seguro que sera de mucha ayuda.
Si deseas Donar a Virtue Mart ve a la pagina principal y busca al lado izquierdo la viñeta de soporte y preciona el botón de donar.
tallerdigitalvw.com:
To view this post in English, please press this link http://translate.google.com.gt/translate?u=http%3A%2F%2Fforum.virtuemart.net%2Findex.php%3Ftopic%3D55302.0&sl=es&tl=en&hl=es&ie=UTF-8
dragoncia:
Hola! Primero 1000% gracias. Muy buena la guía me dio resultado todo, yo soy completamente nueva y no tuve mayor dificultad, pero aún así tengo algunas preguntas extras que agradecería mucho si me ayudan.
1. El módulo de VirtueMart me pide los datos de la tarjeta pero al llevarme a la página de 2CO me pide los datos de nuevo... es esto normal? se supone que sea así?
2. Para usuarios en español como se puede cambiar el hecho de que te lleve a la página de 2CO en inglés por la de español de manera automática... sin que el usuario de la página tenga que elegir su idioma? será posible esto?
3. Cuando termina la transacción me envía de nuevo al site original... pero de una manera muy súbita! no me avisa si la transacción fue aceptada o no, o si tuvo problemas o al menos que revise mi correo. Es posible cambiar eso o así se supone que sea?
4. Y último... el recibo de venta de 2CO "sales receipt" que me llega a mi correo informándome que la compra se realizó es un poco simple, se puede personalizar?? como? se puede configurar para que se envíe en español??
De nuevo muchas gracias en avance. Gracias por tu comentario sobre las donaciones parece mentira que a veces la donación sólo se queda en intención cuando haces uso de estos recursos pero tu post hizo que llevara a cabo la acción. :)
tallerdigitalvw.com:
Saludos Dragoncia:
A continuación te envió las respuestas que solicitaste.
1-.esta te la quedo pendiente
2-.con respecto a lo de los usuarios en español podrías probar lo siguiente:
me imagino que tu script quedo algo asi.
Quote
<?php
// Get ship_to information
if( $db->f("user_info_id") != $dbbt->f("user_info_id")) {
$q2 = "SELECT * FROM #__vm_user_info WHERE user_info_id='".$db->f("user_info_id")."'";
$dbst = new ps_DB;
$dbst->setQuery($q2);
$dbst->query();
$dbst->next_record();
}
else {
$dbst = $dbbt;
}
$q3 = "SELECT * FROM #__vm_order_item WHERE user_info_id='".$db->f("user_info_id")."'";
$dbcprod = new ps_DB;
$dbcprod->setQuery($q3);
$dbcprod->query();
$dbcprod->next_record();
for($i = 0; $i < count($dbcprod->record); $i++){ //sort out user orders
$orders[$i] = $dbcprod->record[$i]->order_id;
}
arsort($orders);
$this_order_id = current($orders); //sets most recent order number for user
for($i = 0; $i < count($dbcprod->record); $i++){ //gets all product info entries for this order number
if($dbcprod->record[$i]->order_id == $this_order_id){
$this_order[$i] = $dbcprod->record[$i];
}
}
sort($this_order);
//2co c_prods to send
for($i = 0; $i < count($this_order); $i++){ //creates 2co c_prod parameters
$twoco_prod_info["c_prod_$i"] = $this_order[$i]->order_item_sku .",". $this_order[$i]->product_quantity;
$twoco_prod_info["c_name_$i"] = $this_order[$i]->order_item_name;
$twoco_prod_info["c_price_$i"] = $this_order[$i]->product_final_price;
$twoco_prod_info["c_description_$i"] = $this_order[$i]->order_item_name .",". $this_order[$i]->product_attribute;
}
//Authnet vars to send
$formdata = array (
'x_login' => TWOCO_LOGIN,
'x_email_merchant' => ((TWOCO_MERCHANT_EMAIL == 'True') ? 'TRUE' : 'FALSE'),
'id_type' => 1, //added for c_prod compliance
// Customer Name and Billing Address
'x_first_name' => $dbbt->f("first_name"),
'x_last_name' => $dbbt->f("last_name"),
'x_company' => $dbbt->f("company"),
'x_address' => $dbbt->f("address_1"),
'x_city' => $dbbt->f("city"),
'x_state' => $dbbt->f("state"),
'x_zip' => $dbbt->f("zip"),
'x_country' => $dbbt->f("country"),
'x_phone' => $dbbt->f("phone_1"),
'x_fax' => $dbbt->f("fax"),
'x_email' => $dbbt->f("email"),
// Customer Shipping Address
'x_ship_to_first_name' => $dbst->f("first_name"),
'x_ship_to_last_name' => $dbst->f("last_name"),
'x_ship_to_company' => $dbst->f("company"),
'x_ship_to_address' => $dbst->f("address_1"),
'x_ship_to_city' => $dbst->f("city"),
'x_ship_to_state' => $dbst->f("state"),
'x_ship_to_zip' => $dbst->f("zip"),
'x_ship_to_country' => $dbst->f("country"),
'x_invoice_num' => $db->f("order_id"),
'x_receipt_link_url' => SECUREURL."2checkout_notify.php"
);
$formdata = array_merge($twoco_prod_info, $formdata); //combine formdata with twoco_prod_info so c_prod info gets sent to 2co
if( TWOCO_TESTMODE == "Y" )
$formdata['demo'] = "Y";
$version = "2";
$url = "https://www2.2checkout.com/2co/buyer/purchase";
$formdata['x_amount'] = number_format($db->f("order_total"), 2, '.', '');
//build the post string
$poststring = '';
foreach($formdata AS $key => $val){
$poststring .= "<input type='hidden' name='$key' value='$val' />
";
}
?>
<form id="cho" action="<?php echo $url ?>" method="post" target="_self">
<?php echo $poststring ?>
<p>Click on the Image below to pay...</p>
<input type="image" name="submit" src="https://www.2checkout.com/images/buy_logo.gif" border="0" alt="Make payments with 2Checkout, it's fast and secure!" title="Pay your Order with 2Checkout, it's fast and secure!" />
</form>
<script language="JavaScript" type="text/javascript">
<!--
document.getElementById('cho').submit();
//-->
</script>
por que no pruevas cambiar la linea
$url = "https://www2.2checkout.com/2co/buyer/purchase";
por
$url = "https://www2.2checkout.com/checkout/purchase?lang=es_la";
y te quedara haci
Quote
<?php
// Get ship_to information
if( $db->f("user_info_id") != $dbbt->f("user_info_id")) {
$q2 = "SELECT * FROM #__vm_user_info WHERE user_info_id='".$db->f("user_info_id")."'";
$dbst = new ps_DB;
$dbst->setQuery($q2);
$dbst->query();
$dbst->next_record();
}
else {
$dbst = $dbbt;
}
$q3 = "SELECT * FROM #__vm_order_item WHERE user_info_id='".$db->f("user_info_id")."'";
$dbcprod = new ps_DB;
$dbcprod->setQuery($q3);
$dbcprod->query();
$dbcprod->next_record();
for($i = 0; $i < count($dbcprod->record); $i++){ //sort out user orders
$orders[$i] = $dbcprod->record[$i]->order_id;
}
arsort($orders);
$this_order_id = current($orders); //sets most recent order number for user
for($i = 0; $i < count($dbcprod->record); $i++){ //gets all product info entries for this order number
if($dbcprod->record[$i]->order_id == $this_order_id){
$this_order[$i] = $dbcprod->record[$i];
}
}
sort($this_order);
//2co c_prods to send
for($i = 0; $i < count($this_order); $i++){ //creates 2co c_prod parameters
$twoco_prod_info["c_prod_$i"] = $this_order[$i]->order_item_sku .",". $this_order[$i]->product_quantity;
$twoco_prod_info["c_name_$i"] = $this_order[$i]->order_item_name;
$twoco_prod_info["c_price_$i"] = $this_order[$i]->product_final_price;
$twoco_prod_info["c_description_$i"] = $this_order[$i]->order_item_name .",". $this_order[$i]->product_attribute;
}
//Authnet vars to send
$formdata = array (
'x_login' => TWOCO_LOGIN,
'x_email_merchant' => ((TWOCO_MERCHANT_EMAIL == 'True') ? 'TRUE' : 'FALSE'),
'id_type' => 1, //added for c_prod compliance
// Customer Name and Billing Address
'x_first_name' => $dbbt->f("first_name"),
'x_last_name' => $dbbt->f("last_name"),
'x_company' => $dbbt->f("company"),
'x_address' => $dbbt->f("address_1"),
'x_city' => $dbbt->f("city"),
'x_state' => $dbbt->f("state"),
'x_zip' => $dbbt->f("zip"),
'x_country' => $dbbt->f("country"),
'x_phone' => $dbbt->f("phone_1"),
'x_fax' => $dbbt->f("fax"),
'x_email' => $dbbt->f("email"),
// Customer Shipping Address
'x_ship_to_first_name' => $dbst->f("first_name"),
'x_ship_to_last_name' => $dbst->f("last_name"),
'x_ship_to_company' => $dbst->f("company"),
'x_ship_to_address' => $dbst->f("address_1"),
'x_ship_to_city' => $dbst->f("city"),
'x_ship_to_state' => $dbst->f("state"),
'x_ship_to_zip' => $dbst->f("zip"),
'x_ship_to_country' => $dbst->f("country"),
'x_invoice_num' => $db->f("order_id"),
'x_receipt_link_url' => SECUREURL."2checkout_notify.php"
);
$formdata = array_merge($twoco_prod_info, $formdata); //combine formdata with twoco_prod_info so c_prod info gets sent to 2co
if( TWOCO_TESTMODE == "Y" )
$formdata['demo'] = "Y";
$version = "2";
$url = "https://www2.2checkout.com/checkout/purchase?lang=es_la";
$formdata['x_amount'] = number_format($db->f("order_total"), 2, '.', '');
//build the post string
$poststring = '';
foreach($formdata AS $key => $val){
$poststring .= "<input type='hidden' name='$key' value='$val' />
";
}
?>
<form id="cho" action="<?php echo $url ?>" method="post" target="_self">
<?php echo $poststring ?>
<p>Click on the Image below to pay...</p>
<input type="image" name="submit" src="https://www.2checkout.com/images/buy_logo.gif" border="0" alt="Make payments with 2Checkout, it's fast and secure!" title="Pay your Order with 2Checkout, it's fast and secure!" />
</form>
<script language="JavaScript" type="text/javascript">
<!--
document.getElementById('cho').submit();
//-->
</script>
3-.con respecto a los detalles de la transaccion dame tiempesito en lo que piensao tu solucion.
4-.Esto debera solucionarse con arreglar lo que te puse en el insiso 2
Saludos
TallerDigitalVW.com
Navigation
[0] Message Index
[#] Next page