Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Paypal Embedded Flow not using returnUrl or cancelUrl

I am using Paypals Adaptive Payments and Embedded flow feature to provide checkout via a minibrowser. Everything seems to be working correctly in the sandbox environment except that when the payment is completed successfully, the user is never redirected to my returnUrl set in the PAY API request. Same goes for my cancelUrl.

After the payment is complete, the user is shown an order overview in the minibrowser and a button labelled "close". If a user clicks this button, the minibrowser is closed.

If a user clicks cancel at any time, the minibrowser is closed.

There doesn't seem to be a way to have my page aware of the change besides setting up some polling or something which doesn't make sense, my returnUrl and cancelUrl should be used somewhere, right?

this is my code to get the redirect url (using adaptive payments gem):

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"

And here is how I am setting up the paypal js:

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

It all seems pretty straight forward, not sure what I am missing.

like image 939
Dan.StackOverflow Avatar asked Oct 12 '12 13:10

Dan.StackOverflow


People also ask

What is PayPal Adaptive payments?

PayPal Adaptive Payments handles payments between a sender of a payment and one or more receivers of the payment. It's possible to split the order total with secondary receivers, so you can pay commissions or partners. PayPal is not accepting new signups and activations for Adaptive Payments.

What are Adaptive payments?

Adaptive payments are payments made between one sender and multiple receivers–for example, let's say you need a cell phone carrier, cable company, and internet service provider to fulfill your communication needs.


2 Answers

Looks like the PayPal experience for embedded flows has gotten worse. Now you'll receive an error message after invoking mini or lightbox that says "Payment can't be completed. This feature is currently unavailable."

like image 38
JohnP Avatar answered Oct 12 '22 15:10

JohnP


Well - seems to be a bug on our side - just tried it myself and confirmed with our integration teams. :-(

Unfortunately the other short term fix I can think of other than what you've mentioned (checking for the existence of the popup window) is to call the PaymentDetails API from your server side to check the status of the Payment. I've opened the bug on our side but don't have an ETA.

Edit 10/18: Sorry I'm wrong. This is working - it's just that our developer guide is not providing all the required information. In case of the mini-browser flow, you would need to provide a 'callbackFunction' and also name your dgFlow variable as 'dgFlowMini'. (the latter is important - as apdg.js is expecting the 'dgFlowMini' variable to be defined) Here is the code that works:

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'});

I have a working sample here: https://pp-ap-sample.appspot.com/adaptivesample?action=pay (make sure you select mini as the Experience Type)

We will get our docs updated and also cleanup apdg.js to remove the dependency on the JS variable name.

like image 119
Praveen Avatar answered Oct 12 '22 14:10

Praveen