schools example iframe paypal framebusting

example - Integración de PayPal con el carrito basado en iframe



php iframe (3)

Usamos la API Payments Pro NVP de PayPal para proporcionar una tarjeta de crédito sin interrupciones y el procesamiento de PayPal en nuestro sitio. Creamos un widget de carro basado en iframes que nuestros clientes colocan en su sitio para que sus usuarios puedan comprar artículos y pagar a través de nuestra cuenta Paypal.

Si bien las transacciones con tarjeta de crédito funcionan bien, estamos viendo problemas cuando un usuario intenta pagar con su cuenta de PayPal. La API utiliza una redirección al hacer clic en el logotipo de PayPal, pero luego parece que el código de PayPal ejecuta una secuencia de comandos de framebusting y la transacción no puede continuar.

Estoy buscando sugerencias o ejemplos de código para saber cómo manejar a los usuarios que desean PayPal para el pago a través del iframe. Una opción es abrir una nueva ventana emergente, pero luego deja el diseño abierto a problemas, ya que el usuario puede alternar entre esa ventana y la ventana que contiene el iframe y es concebible que el carro se desincronice con lo que muestra la ventana de PayPal.


PayPal Express Checkout / ''Pagar con PayPal'' en Pro Hosted no admite iframes por razones de seguridad. Abrir una ventana emergente (o establecer target = _parent) es la única manera de procesar esto correctamente.


Establezca su objetivo de formulario en - target = "_ top"


Ambas de las respuestas anteriores son correctas. Sin embargo, el soporte técnico de PayPal proporcionó un conjunto más completo de instrucciones que he proporcionado a continuación. Con suerte, ellos ayudarán a alguien más.

Modifique sus llamadas SetExpressCheckout para que los parámetros RETURNURL y CANCELURL apunten a una página de devolución especial que se encargará de cerrar la ventana emergente y continuar con el proceso de pago normal (más sobre esto más adelante).

A continuación, modifique la secuencia de comandos que redirige al comprador al sitio web de PayPal. Normalmente, esta secuencia de comandos devolvería una respuesta "302 Encontrado" (o similar) al navegador, indicando al navegador que debería seguir un redireccionamiento a alguna otra página. (En PHP, esto generalmente se logra con la función "encabezado", por ejemplo, header(“Location: https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=$token”); En cambio, este script debería emitir el siguiente código HTML / JavaScript (reemplazando a "TOKEN" con el token que recibió de PayPal). Esto abrirá una ventana emergente donde el comprador puede continuar el proceso de pago en PayPal. Puede insertar texto adicional, como desee, para indicar al comprador que debe usar la ventana emergente para completar su proceso de pago. Para evitar problemas con los bloqueadores de ventanas emergentes, puede crear un enlace o botón en su página, indicando al comprador que debe hacer clic en el enlace / botón para continuar y usar este código para el manejador "onClick" del objeto.

<script type="text/javascript"> window.open("https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=TOKEN","_blank","width=1024,height=768,location=1,resizable=1,scrollbars=1,status=1",true); </script>

Ahora, cree una nueva página que ejecute el siguiente código (o similar: este código se basa en PHP, ajústelo según sea necesario para el idioma que esté utilizando). Este código cerrará la ventana emergente y continuará el proceso de pago en su iframe existente. El parámetro RETURNURL de su llamada SetExpressCheckout debe apuntar a esta página. Reemplace "paypalreturn.php" con el script que usa actualmente para manejar a los compradores que regresan a su carrito de compras desde PayPal.

<html> <body> <script type="text/javascript"> window.opener.location="http://www.regattacentral.com/paypalreturn.php?token=<? echo $_REQUEST["token"]; ?>&PayerID=<? echo $_REQUEST["PayerID"]; ?>"; window.close(); </script> </body> </html>

Por último, repita este paso para su controlador CANCELURL.

• La compra se completa dentro del iframe y se muestra la identificación de la transacción.