Monday, May 28, 2012

Re: Paypal Integration / JNSI

When the user cancels or finishes the purchase, Paypal redirects the user to a page within the iframe or popup window. My cancel URL looks like this http://127.0.0.1:8888/xxx.html?gwt.codesvr=127.0.0.1:9997#!homePage;cancel=true. I am using GWTP so the following code should give you an idea on how it works:

    @Override
    public void prepareFromRequest(PlaceRequest placeRequest) {
        super.prepareFromRequest(placeRequest);
        String cancel = placeRequest.getParameter("cancel", "");
        if ("true".equals(cancel)) {
            paypalClose();
        }
    }

    public static native void paypalClose() /*-{
if (top && top.opener && top.opener.top) {
top.opener.top.dgFlow.closeFlow();
top.close();
} else if (top) {
top.dgFlow.closeFlow();
top.close();
}
    }-*/;

top.close() will close the paypal flow (iframe or popup window).

On Monday, May 28, 2012 5:06:23 PM UTC+2, Mayumi wrote:
Thank you so much for the reply!

So you're calling JSNI above from the return/cancel page correct?
If so are you doing something like window.parent. paypalClose() from inside the IFRAME that paypal insert
the return/cancel pages from?

Thanks!

On Monday, 28 May 2012 03:42:58 UTC-5, Sydney wrote:
    public static native void paypalClose() /*-{
if (top && top.opener && top.opener.top) {
top.opener.top.dgFlow.closeFlow();
top.close();
} else if (top) {
top.dgFlow.closeFlow();
top.close();
}
    }-*/;


On Sunday, May 27, 2012 8:21:25 PM UTC+2, Mayumi wrote:
How did you end up fixing this?

On Saturday, 12 May 2012 08:41:58 UTC-5, Sydney wrote:
I use the Paypal Adaptive API. So far I managed to display the paypal page using a lightbox. But I have a problem when trying to close the lightbox. I failed in Step 4

3. Include the PayPal JavaScript functions from dg.js.

</script>

4. Create an embedded flow object and associate it with your payment form or button.

<script>
var dgFlow = new PAYPAL.apps.DGFlow({ trigger: 'submitBtn' });
</script>

After Completing This Task:

On the pages you identify as the return and cancel URLs in the Pay API operation, you must
include the PayPal JavaScript functions from dg.js and close the PayPal window, as in the
following example:

dgFlow = top.dgFlow || top.opener.top.dgFlow;
dgFlow.closeFlow();
top.close();

What I did:

For step 4, I call the following JNSI method:

    private native void paypalLight() /*-{
var dgFlow = new $wnd.PAYPAL.apps.DGFlow({
trigger : 'submitBtn'
});
    }-*/;

The paypal page is displayed in the lightbox, than I click the cancel button. My cancelURL is http://127.0.0.1:8888/xxx.html?gwt.codesvr=127.0.0.1:9997#!homePage;cancel=true and in this page I process the cancel parameter by calling the following JNSI:

    public static native void paypalClose() /*-{
dgFlow = $wnd.top.dgFlow || $wnd.top.opener.top.dgFlow;
dgFlow.closeFlow();
$wnd.top.close();
    }-*/;

When I cancel the transaction, the cancelUrl gets called, and the paypalClose method is called. I get the error: (TypeError): $wnd.top.opener is null.

Any ideas?
Thanks



--
You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group.
To view this discussion on the web visit https://groups.google.com/d/msg/google-web-toolkit/-/PA18WxkN3MoJ.
To post to this group, send email to google-web-toolkit@googlegroups.com.
To unsubscribe from this group, send email to google-web-toolkit+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.

No comments:

Post a Comment