9

Estoy usando Paypals Adaptive Payments y la función Embedded Flow para proporcionar el pago a través de un miniexplorador. Todo parece funcionar correctamente en el entorno de sandbox, excepto que cuando el pago se completa con éxito, nunca se redirige al usuario a mi returnUrl establecido en la solicitud de la API PAY. Lo mismo ocurre con mi cancelUrl.Paypal Embedded Flow no usa returnUrl o cancelUrl

Después de completar el pago, se muestra al usuario una descripción general de la orden en el minibrowser y un botón con la etiqueta "cerrar". Si un usuario hace clic en este botón, el minibrowser se cierra.

Si un usuario hace clic en cancelar en cualquier momento, el minibrowser se cierra.

No parece haber una manera de que mi página tenga conocimiento del cambio además de configurar algún sondeo o algo que no tiene sentido, mi returnUrl y cancelUrl deberían usarse en alguna parte, ¿no?

este es mi código para obtener la URL de redireccionamiento (usando joya pagos de adaptación):

pay_request = PaypalAdaptive::Request.new 
data = { 
    'requestEnvelope' => {'errorLanguage' => 'en_US'}, 
    'currencyCode' => 'USD', 
    'receiverList' => 
      { 'receiver' => [ 
      {'email' => '...', 'amount'=> 10.00} 
      ]}, 
    'actionType' => 'PAY', 
    'returnUrl' => 'http://www.example.com/paid', 
    'cancelUrl' => 'http://www.example.com/cancelled', 
    'ipnNotificationUrl' => 'http://www.example.com/ipn' 
} 

pay_response = pay_request.pay(data) 
redirect_to pay_response.approve_paypal_payment_url "mini" 

Y aquí es como yo soy la creación de los js paypal:

var dg = new PAYPAL.apps.DGFlowMini({ trigger: "buyit", expType: "mini" }); 

todo parece bastante directo, no estoy seguro de lo que me estoy perdiendo.

+0

También estoy teniendo problemas con las URL de devolución, aunque la IPN de PayPal parece estar funcionando, obtengo una devolución de llamada en mi página web. https://www.paypal.com/us/cgi-bin/webscr?cmd=p/acc/ipn-info-outside – Ron

Respuesta

9

Bueno, parece ser un error de nuestro lado, lo probé y confirmé con nuestros equipos de integración. :-(

Lamentablemente, la otra solución a corto plazo que puedo pensar además de la mencionada (verificar la existencia de la ventana emergente) es llamar a la API PaymentDetails desde su servidor para verificar el estado del Pago He abierto el error de nuestro lado pero no tenemos un ETA.

Edit 10/18: Lo siento, estoy equivocado. Esto funciona, solo que nuestra guía para desarrolladores no proporciona todo la información requerida. En el caso del flujo del mini navegador, necesitaría proporcionar una 'función de devolución de llamada' y también nombrar su variable dgFlow como 'dgFlowMini'. (Esto último es importante, ya que apdg.js espera la variable 'dgFlowMini' por definir) Aquí está el código que funciona:

var returnFromPayPal = function(){ 
    alert("Returned from PayPal"); 
    // Here you would need to pass on the payKey to your server side handle to call the PaymentDetails API to make sure Payment has been successful or not 
    // based on the payment status- redirect to your success or cancel/failed urls 
} 
var dgFlowMini = new PAYPAL.apps.DGFlowMini({trigger: 'em_authz_button', expType: 'mini', callbackFunction: 'returnFromPayPal'}); 

Tengo una muestra de trabajo aquí: https://pp-ap-sample.appspot.com/adaptivesample?action=pay (asegúrese de seleccionar el mini como el tipo de experiencia)

obtendremos nuestros documentos actualizados y también apdg.js de limpieza para eliminar la dependencia de la variable JS nombre.

+0

Sí, de hecho, creé una copia local de apdg.js y la modifiqué para adaptarla a mis necesidades. Hay algunos otros problemas también, isOpen no hace lo que crees que hace. Cuando un usuario hace clic en el botón de PayPal, ahora tengo una solicitud ajax de intervalo que sondea mi servidor, que sondea PayPal. Esta es la única forma confiable de saber cuándo se ha completado el pago. –

+0

@Praveen También estoy enfrentando un problema similar. En mi caso, lo estamos implementando en la aplicación nativa IOS. El mini navegador se carga dentro de UIWebiew dentro de mi aplicación.Al crear la URL de cancelación de pago, así como returnUrl se especifican. Pero al completar el pago/cancelación, no se está redirigiendo para devolver o cancelar URL. – arundevma

+0

¿Se confirmó también que en el mini flujo no se utilizan las URL de devolución y cancelación? La documentación no es clara en esto. –

2

Parece que la experiencia de PayPal con los flujos integrados ha empeorado. Ahora recibirá un mensaje de error después de invocar el mini o lightbox que dice "El pago no se puede completar. Esta función no está disponible en este momento".

+5

Sí, amigo, la API de PayPal es una mierda completa. Son solo un montón de robos perezosos que no se preocupan por nadie. –