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 src="https://www.paypalobjects.com/js/external/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=trueand >>>> 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+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.