Comunidad de diseño web y desarrollo en internet online

Ayuda para conectar flash as3 con Paypal mediante php

Citar            
MensajeEscrito el 31 Oct 2008 04:06 pm
Hola, soy web master de un periódico, reciente mente me pidieron la realización de el sistema de avisos clasificados, y estos requieren que se efectúe un cobro por tarjeta de crédito o débito, encontré en paypal que ellos nos ofrecen el sistema de cobro con tarjeta, pero mi problema es el siguiente.


Tengo el archivo de flash en AS3 que recibe los datos del usuario, y una vez que se llena el formulario, el usuario presiona aceptar y se envían los datos a un archivo php, y este los envía al sistema de Paypal, pero el problema es que cuando hago el envío de los datos de Flash a Paypal se pierden en el camino, según note, los datos no se están procesando de manera correcta en en el php, no esta recibiendo las variables. Aquí les dejo el código de flash y el de php, les agradecería si alguien me puede ayudar, o en su defecto recomendarme algo diferente para poder comunicar los datos desde flash a paypal.


Código del as3

Código ActionScript :

btborrar.addEventListener(MouseEvent.MOUSE_DOWN, onBorrar);
btenviar.addEventListener(MouseEvent.MOUSE_DOWN, onEnviar);
btborrar.buttonMode = true;
btborrar.useHandCursor = true;

btenviar.buttonMode = true;
btenviar.useHandCursor = true;

function onBorrar(obj:Event) {
txtnombre.text = "";
txtempresa.text = "";
txtcosto.text = "";
txtmensaje.text = "";
}
function onEnviar(obj:Event) {
var urlVars:URLVariables = new URLVariables();
urlVars.nombre = txtnombre.text;
urlVars.precio = txtempresa.text;
urlVars.costo = txtcosto.text;
urlVars.mensaje = txtmensaje.text;

var urlRequ:URLRequest = new URLRequest("regpago.php");
urlRequ.method = URLRequestMethod.POST;
urlRequ.data = urlVars;

var urlLoad:URLLoader = new URLLoader();
urlLoad.load(urlRequ);
urlLoad.addEventListener(Event.COMPLETE, onSendComplete);
urlLoad.addEventListener(IOErrorEvent.IO_ERROR, onSendError);
}

function onSendComplete(obj:Event) {
txtestado.text = "Mensaje Enviado";
var targetURL = new 
URLRequest("regpago.php");
navigateToURL(targetURL,"_parent");
}
function onSendError(obj:Event) {
txtestado.text = "Mensaje Fallido";
}

y el código PHP llamado repago.php

Código :

<?php

$costo=$_POST['nombre'];
$precio= $_POST['precio'];

?>
<html>
<head>
<title>Finalizar Compra</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
.tit {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 9px;
color: #FFFFFF;
}
.prod {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 9px;
color: #333333;
}
h1 {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 20px;
color: #990000;
}
-->
</style>
</head>

<body>

<form action="https://www.paypal.com/cgi-bin/webscr" name="f1" id="f1" method="post">
<fieldset>
<legend class="prod"><strong>Finalizar la Compra</strong> <a href="#" onClick="javascript:window.open('https://www.paypal.com/cgi-bin/webscr?cmd=xpt/popup/OLCWhatIsPayPal-outside','olcwhatispaypal','toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=no, width=400, height=350');"><img src="https://www.paypal.com/en_US/i/bnr/horizontal_solution_PP.gif" alt="Solution Graphics" border="0" align="absmiddle"></a></legend>
<input type="hidden" name="shipping" value="0">
<input type="hidden" name="cbt" value="Presione aquí para volver a www.nuestrositio.com >>">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="rm" value="2">
<input type="hidden" name="bn" value="nombre de la empresa vendedora">
<input type="hidden" name="business" value="[email protected]">
<input type="hidden" name="item_name" value="<?php echo $descripcion; ?>">
<input type="hidden" name="item_number" value="Nombre del comprador">
<input type="hidden" name="amount" value="<?php echo $precio; ?>">
<input type="hidden" name="custom" value="<?php echo $_GET['costo'] ?>">
<input type="hidden" name="currency_code" value="MXN">
<input type="hidden" name="image_url" value="">
<input type="hidden" name="return" value="http://mipagina.com/resultadoscompra.php">
<input type="hidden" name="cancel_return" value="http://www.mipagina.com/error.php">
<input type="hidden" name="no_shipping" value="0">
<input type="hidden" name="no_note" value="0">

<table width="50%" border="0" align="center" cellpadding="3" cellspacing="0" bgcolor="#EABB5D" style=" border-color:#000000; border-style:solid;border-width:1px;"> 
<tr> 
<td align="left" valign="top"><span class="prod"><strong>Detalle de los Productos Seleccionados</strong>:</span><br> 
<span class="texto1negro"> </span><span class="prod"><strong>Productos:</strong> <?php echo $costo; ?><br> 
<strong>Pecio Total:</strong> $<?php echo number_format($_GET['precio'],2) ?> </span></td> 
</tr> 
</table> 

<input type="submit" name="Submit" value="Enviar">
</fieldset>
</form>

</body>
</html> 

Por EmmanuelRM

7 de clabLevel



 

safari
Citar            
MensajeEscrito el 01 Nov 2008 04:13 am
repago.php tiene un montón de HTML que no solo es innecesario (ya que es una página que no se va a mostrar) sino que incluso puede traer problemas, se nota que venía de un form HTML reutilizado para el flash. Dado que lo único que hace el archivo PHP es un POST al servicio de PayPal, lo puedes hacer directamente desde Flash.
Si igual quieres usar ese PHP, fíjate que estás capturando un par de variables por POST, preo después usas $_GET['costo'] en vez de $costo, $precio lo usas una vez y después usas $_GET['precio']
Revisa tu PHP

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 01 Nov 2008 05:14 pm
Gracias Jorge, pero tambien lo intente hice cambios y cambie con GET y POST, perno no funciona, y si pudieras explicarme con referencia a lo que dices de hacerlo directamente desde flash.

El php no esta reutilizado, si notas despues de body, son las variables que recibe pay pal, para registrar los datos, cada uno tene una funcion, y como las voy a utilizar todas ya las inclui, ahi recibo el nombre, telefono, direccion, monto de pago, pagina de error, pagina de recibido etc.. y el html del final es el que me muestra el boton de envio directo a pay pal con los datos enviados de flash, es un previo de la compra.

Agradezco tu comentario.

Saludos

Por EmmanuelRM

7 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 Nov 2008 11:13 am
Todas las variables del formulario las copias en un objeto LoadVars y las envías por POST a Paypal

var urlVars:URLVariables = new URLVariables();
urlVars.shipping = 0
...
urlVars.item_name = txtnombre.text
....
(copias todos los campos que están ahora en el formulario y finalmente)

var urlRequ:URLRequest = new URLRequest("https://www.paypal.com/cgi-bin/webscr");
urlRequ.method = URLRequestMethod.POST;
urlRequ.data = urlVars;

Esto no te devolverá la respuesta, sino que te lleva al formulario donde tienes que poner tus datos para pagar, con lo cual lo anterior tampoco functionaría.

Si quieres un sistema mas avanzado que el del botón Buy Now, create una cuenta en http://developer.paypal.com/ y mirate la documentación para Instant Payment Notification

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 02 Nov 2008 10:30 pm
Gracias Jorge, pero lo que me dices, es basicamente lo mismo que he hecho yo, solo cambias la direccion de la url, pero aun sigue sin funcionar, el problema es basicamente que cuando doy enviar si envia los datos, pero en pay pal no se reciben correctamente, entonces no me da la opcion de pagar con tarjeta, sino que me pide que me identifique, y lo que quiero es que pueda pagar cualquier persona con su tarjeta sin necesidad de registrarse en pay pal, porque demora demasiado, y la idea es agilizar el tramite de nuestros usuarios, que normalmente tienen que venir a nuastras oficinas del periodico a solicitar los anuncios.

El sistema ya lo vi funcionar, pero el boton era en as2, y basicamente lo que hace es que carga los datos de un block de notas y de ahi los toma paypal, pero simpre serian los mismos, y en este caso los precios varian.

Gracias, saludos

Por EmmanuelRM

7 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 Nov 2008 11:00 pm
El método Buy button funciona así, es decir el usuario debe poner sus datos. Si quieres un método mas avanzado (como el que cité), mira los distintos métodos listados en el link que te puse, para lo cual debes también dar de alta una cuenta especial (y en la mayoría de casos de pago) en PayPal

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 03 Nov 2008 01:11 am
Si, ya revise toda la página del link, ya tenia una cuenta ahi, el problema, es que todo lo manejan como html, php, o asp, pero no te preocupes, ya logre hacerlo con as2 y el block de notas y con ese lo implementare por el momento, porque me quedan 7 días para presentar el proyecto, una vez que lo presente y este en linea me pongo a hacer pruebas para lograrlo en as3.
Gracias por el interes.


Saludos

Por EmmanuelRM

7 de clabLevel



 

firefox
Citar            
MensajeEscrito el 24 Feb 2009 08:09 am
Tu AS dice regpago.php
Tu PHP se llama repago.php segun dices. Error de tipeo?

Tu AS manda datos via POST a tu PHP. Luego le dices que si se enviaron, vaya al PHP.
Ahi hay un error mayoritario... Primero lo envias y luego redireccionas... Al momento de redireccionar se mostrara el PHP normal, sin ningun tipo de POST.

Tu PHP tiene $_GET... cuando habias enviado TODO por Post.

Envias 4 variables pero llamas bien solo a 2 de ellas... una repitiendo codigo.

Pon Error_Reporting(E_ALL) y veras que errores tienes si corriges lo que te explique en el segundo parrafo...

Seria mejor y optimo que hagas caso... Y que envies de Flash directo todas las variables que PayPal necesita.
U otra opcion seria que hagas un PHP limpio que via cURL u fopen visite PayPal y devuelva si la transaccion fue exitosa.. (Llamese IPN)

Por tomasdev

220 de clabLevel

1 tutorial

 

Argentina por ahora...

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.