Foros del Web » Programando para Internet » PHP »

iKobo

Estas en el tema de iKobo en el foro de PHP en Foros del Web. Hola a todos. No se si alguno ha trabajado con compras ONLINE con la empresa iKobo. El asunto es que tengo problemas al recibir el ...
  #1 (permalink)  
Antiguo 13/08/2004, 19:07
Avatar de drcyber  
Fecha de Ingreso: julio-2002
Mensajes: 826
Antigüedad: 15 años, 4 meses
Puntos: 2
iKobo

Hola a todos.

No se si alguno ha trabajado con compras ONLINE con la empresa iKobo. El asunto es que tengo problemas al recibir el IPN con PHP. Las variables no están pasando ni por POST ni por GET. Si alguno ha usado este sistema y logró configurar el script, le agradeceré ayuda.

Un saludo y gracias de antemano!
__________________
Dr. Cyber
Ingeniarte.com
(soy el mismo Takitei)
  #2 (permalink)  
Antiguo 13/08/2004, 22:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Y .. vistes ya en su manual?

http://www.ikobo.com/ipn_manual.pdf

Ese tipo de respuestas instantaneas del cargo en cuenta suelen usar sockets (cabeceras . es decir .. ni GET ni POST sino HEAD).

Como todo suele ir bajo SSL .. tal vez con las librerias (extensiones) cURL (www.php.net/curl) puedas leer dicho dato.

O podrías probar con:
get_headers()
www.php.net/get_headers


Un saludo,
  #3 (permalink)  
Antiguo 13/08/2004, 22:19
Avatar de drcyber  
Fecha de Ingreso: julio-2002
Mensajes: 826
Antigüedad: 15 años, 4 meses
Puntos: 2
Hmm...hombre explicame eso de las cabeceras...

Hasta donde yo conozco, solo hay 2 formas de enviar datos a una página, port POST y por GET. ¿Cómo funciona el HEAD?... fijate que en el manual no aparece nada al respecto. Además, el Sample que ellos proporcionan es super raro, trabaja con POST y GET, pero realmente el servidor no está enviando dichas variables.

Es una documentación bastante vaga...

Fijate en el sample:

Código PHP:
<?
    
/*  IPN PHP Script  */

    /*
      This sample script will read iKobo IPN message, parse it and save it into /tmp/ipn_test.txt
      /tmp/ directory is available and allows writing on most Unix systems
    */

    
function get_var($name$default='none')
    {
        return (isset(
$_GET[$name])) ? $_GET[$name] : ((isset($_POST[$name])) ? $_POST[$name] : $default);
    }

    
$func get_var('func');
    
$pwd  get_var('pwd');
    
$confirmation get_var('confirmation');
    
$account_no get_var('account_no');
    
$buyer_email  get_var('buyer_email');
    
$merchant_fee get_var('merchant_fee');
    
$tax get_var('tax');

    
// if item requires shipping
    
$firstname get_var('firstname');
    
$lastname get_var('lastname');
    
$address1 get_var('address1');
    
$address2 get_var('address2');
    
$city  get_var('city');
    
$state get_var('state');
    
$zipcode get_var('zipcode');
    
$country get_var('country');

    
// item detail information

    
$no_items get_var('no_items');
    
$item_code get_var('item_code');
    
$name_list get_var('name_list');
    
$qty_list get_var('qty_list');
    
$price_list  get_var('price_list');
    
$option_list get_var('option_list');

    if(!empty(
$account_no) && strlen($account_no) >=8)
    {

        
// if valid request the respond with ..
        
echo "RESP=OK\r\n";

        
// separate list of options selected for each item into an array
        // e.g. color=green+200:Size=small+300, color=red+200:Size=small+400

        
$item_options explode(","$option_list);

        
$n count($item_options);

        for(
$i=0$i<$n; ++$i)
        {
            
// option list for each item
            // e.g. color=red+200:size=small+400

            
$options explode(":"$item_options[$i]);

            
$m count($options);

            for(
$k=0$k<$m; ++$k)
            {
                
// name, value and extra cost of each option selected for the item
                // e.g color=red+200
                
list($name$value$extra_cost) = split('[+=]'$options[$k]);

                
// .....other code goes here

            
}
        }

        
$handle fopen ("/tmp/ipn_test.txt","w");
        
fputs($handle$func);
        
fputs($handle$pwd);
        
fputs($handle$confirmation);
        
fputs($handle$account_no);
        
$others sprintf("\n no_items %s \n item code %s \n qty_list=%s \n name_list %s\n option list %s\n price list = %s\n",
             
$no_items,    $item_code$qty_list$name_list$option_list$price_list);

        
fputs($handle$others);
        
fclose($handle);
    }


?>
¿?... Ni idea... eso no hace nada.
__________________
Dr. Cyber
Ingeniarte.com
(soy el mismo Takitei)
  #4 (permalink)  
Antiguo 13/08/2004, 22:55
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
El "head" son las cabeceras HTTP puedes lee más sobre el tema en el protocolo HTTP (en sus RFC's) .. por ejemplo aquí:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html

En el caso concreto ... no sé como se usará dicho código (es sólo eso? como lo llamas? .. o lo llamas desde la configuración de tu panel de control de iKobo donde apuntas el URL de tu hosting y nombre de ese script?).. pero el caso es que la confirmación viene por GET o por POST y es eso lo que hace la función: get_var(); mira si está definida la variable en GET y si no lo está mira en POST y si no está la variable que pides en GET o POST pone el valor por defecto (que está indicado como "none" si no lo indicas como parámetro expresamente).

Todo lo demás que hace es "parsear" la respuesta obtenida donde en las variables que ahí ves que se piden (y que tienes definido en el manual de dicha pasarela) llegan con determinado formato .. como por ejemplo los items separados por : y sus propiedades por + ...

Un saludo,
  #5 (permalink)  
Antiguo 14/08/2004, 07:20
Avatar de drcyber  
Fecha de Ingreso: julio-2002
Mensajes: 826
Antigüedad: 15 años, 4 meses
Puntos: 2
El código es solo eso. Los pasos son los siguientes:

1. El usuario da clic en mi página sobre el item que va a comprar.
2. El usuario es dirigido a la página de iKobo donde pone sus datos.
3. iKobo chequea la compra y la tarjeta.
4. En caso de que todo sea válido, envía dichas variables al script que se encuentra en mi servidor (el código sample que puse en el mensaje anterior) y muestra un mensaje de que todo fue OK, adicionalmente se actualiza mi base de datos local.

El asunto es que el script no recibe ninguna variable, he puesto en echo todas las variables y aparecen en blanco. El formulario de la última página de iKobo no está enviando ninguna variable por POST (no hay hiddens ni nada similar) y la URL tampoco envía variables. Simplemente se pasa desde iKobo a mi script.

¿Será que el sample es incorrecto?... quizás las variables lleguen por HEAD.
__________________
Dr. Cyber
Ingeniarte.com
(soy el mismo Takitei)
  #6 (permalink)  
Antiguo 14/08/2004, 08:41
Avatar de drcyber  
Fecha de Ingreso: julio-2002
Mensajes: 826
Antigüedad: 15 años, 4 meses
Puntos: 2
Ehm...el servidor donde está el script no tiene PHP5 para usar get_headers()... ¿alguna otra opción?
__________________
Dr. Cyber
Ingeniarte.com
(soy el mismo Takitei)
  #7 (permalink)  
Antiguo 14/08/2004, 16:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
4. En caso de que todo sea válido, envía dichas variables al script que se encuentra en mi servidor (el código sample que puse en el mensaje anterior) y muestra un mensaje de que todo fue OK, adicionalmente se actualiza mi base de datos local.
¿Esto significa que en la configuración de tu cuenta en ikobo .. indicas en algún sitio el URL completo de tu script .php (el que va a generar ese archivo con el INP de la transacción y su estado)?

Cita:
Ehm...el servidor donde está el script no tiene PHP5 para usar get_headers()... ¿alguna otra opción?
Sockets directo:

fosockopen()
www.php.net/fsockopen

Pero .. creo que no tienes que liarte tanto .. No sé por qué falla tu transacción (cuando aclares la anterior pregunta veremos que podría ser ...).

Suposición: Cuando la transacción es efectuada .. ikobo redirecciona hacia tu script (el ejemplo que te dieron) en tu servidor para que termines el proceso y registro de como fué la transacción (pago). Esa redirección .. en principio podría hacerla por GET .. o por POST y así es como el ejemplo espera recibir las variables que la parte de proceso en ikobo realiza.


Un saludo,
  #8 (permalink)  
Antiguo 14/08/2004, 21:46
Avatar de drcyber  
Fecha de Ingreso: julio-2002
Mensajes: 826
Antigüedad: 15 años, 4 meses
Puntos: 2
Exactamente. Tu primera pregunta es totalmente afirmativa. En mi panel de control de iKobo yo especifico la URL donde se encuentra mi script que mostrará la confirmación final y actualizará mi base de datos local. Esa URL es:

https://www.mangelsdesigns.com/pagoikobo.php

El asunto es que al final de la transacción, justo antes de que iKobo me envíe a mi script hay un botón "submit" dentro de un formulario que NO contiene ningún otro elemento, simplemente dicho botón.

El "action" de dicho formulario es: https://www.mangelsdesigns.com/pagoikobo.php
"method=POST".

El botón se llama CONTINUE. Más nada. Como puedes ver, ese formulario no envía nada a mi script.

Además, ninguna variable pasa por URL, la URL simplemente cambia de iKobo a la URL de mi script.

En resumen, no hay paso de variables por POST ni GET.
__________________
Dr. Cyber
Ingeniarte.com
(soy el mismo Takitei)
  #9 (permalink)  
Antiguo 15/08/2004, 15:28
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Leí un poco por encima la documentación de ikobo .. y (si no me equivoco) .. justamente dice que en ese formulario debes incluir tus campos hidden con los nombres de variables que en la documentación describe para indicar tu monto de la transacción, .. referencia de tus items, identificador tuyo como vendedor y algunas cosas más (justo las que espera ese script de ejemplo que te proporcionaron). También podrías montar un link simple tipo (sería GET): nose.php?variable=valor&otravar=otrovalor ....

Un saludo,
  #10 (permalink)  
Antiguo 15/08/2004, 19:53
Avatar de drcyber  
Fecha de Ingreso: julio-2002
Mensajes: 826
Antigüedad: 15 años, 4 meses
Puntos: 2
El asunto es que yo no tengo dominio sobre ese formulario. Ese formulario se encuentra dentro de una página de iKobo la cual no puedo modificar. O sea... está hospedado en iKobo.

Precisamente a eso me refería, no tengo dominio sobre ese formulario porque forma parte del sistema de pagos de iKobo. Por lo tanto, no es posible que lleguen las variables al script via POST o GET.
__________________
Dr. Cyber
Ingeniarte.com
(soy el mismo Takitei)
  #11 (permalink)  
Antiguo 16/08/2004, 07:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno .. pero .. entonces .. como te identificas en ikobo, le pasas el monto que ha de hacer el cargo y detalles de tu producto?

Sea ese formulario, otro formulario o bien montas un URL .. en algún punto has de enviar dicha petición a esa pasarela ...

(¿Por qué no contactas con soporte de ikobo y pides un ejemplo más claro?)

Un saludo,
  #12 (permalink)  
Antiguo 16/08/2004, 09:02
Avatar de drcyber  
Fecha de Ingreso: julio-2002
Mensajes: 826
Antigüedad: 15 años, 4 meses
Puntos: 2
Ehm... como te lo mencioné en los pasos anteriores, 1) vas a mi web y haces clic en el botoncito de iKobo. 2) pasas a la web de iKobo donde ya aparece el precio del producto 3) metes tus datos en esa misma página, y le das a continuar 4) si la transaccion es correcta aparece un mensaje de SUCCESSFUL, y un botón CONTINUE. 5) aparece la confirmacion hospedada en mi servidor y se actualiza mi BD local.

Ya contacté con soporte de iKobo, me dieron el e-mail del programador, pero aun espero por su respuesta. Coloqué un mensaje similar en varios foros en inglés... pero nada.
__________________
Dr. Cyber
Ingeniarte.com
(soy el mismo Takitei)
  #13 (permalink)  
Antiguo 16/08/2004, 09:26
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Ok, cuando obtengas respuesta ya nos contaras ..

(podrías usar Paypal .... por lo menos a nivel de doumentación hay más .. e incluso no sé como andará de usuarios registrados .. pero la verdad que ikobo no me sonaba nada (será que no compro mucho yo por internet xDD) .. pero PayPal si )

Un saludo,
  #14 (permalink)  
Antiguo 16/08/2004, 10:05
Avatar de drcyber  
Fecha de Ingreso: julio-2002
Mensajes: 826
Antigüedad: 15 años, 4 meses
Puntos: 2
Usamos PayPal, StormPay e iKobo. Los otros dos funcionan menos iKobo.
__________________
Dr. Cyber
Ingeniarte.com
(soy el mismo Takitei)
  #15 (permalink)  
Antiguo 17/08/2004, 17:27
Avatar de drcyber  
Fecha de Ingreso: julio-2002
Mensajes: 826
Antigüedad: 15 años, 4 meses
Puntos: 2
Hombre Cluster, te quería dar las gracias por ayudarme en lo que pudiste. Resolví el problema pasando el email del usuario en una variable de SESION. Todo funciona bien y puedo actualizar mi BD local. Un saludo!
__________________
Dr. Cyber
Ingeniarte.com
(soy el mismo Takitei)
  #16 (permalink)  
Antiguo 17/08/2004, 21:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
ok, .. la verdad que "sin probar las cosas" (como es mi caso en las respuestas que intento orientar ... ) no se ven soluciones como la que escogistes y que por lo demás me parece muy acertada.

Un saludo,
  #17 (permalink)  
Antiguo 29/12/2004, 18:13
 
Fecha de Ingreso: diciembre-2004
Mensajes: 18
Antigüedad: 13 años
Puntos: 0
para dr cyber o alguien uqe me ayude

podrias expecificar a que te refieres con variable de session?

osea, atrapaste el valor del email del comprador asi

-->

cambiaste

$buyer_email = get_var('buyer_email');

por esto

$buyer_email = $_SESSION['buyer_email'];

postdata :

alguien ha intentado o a logrado, adaptar la pasarela de ikobo a un shopping cart. como x-cart o squirrelcart ?
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:57.