PayPal Checkout Express在上下文中,在我的GWT项目中不起作用

时间:2015-08-03 22:35:01

标签: paypal popupwindow gwt-rpc express-checkout

在我的项目GWT-RPC中,我在服务器端使用SDK商家PayPal在沙盒模式下使用API​​调用。在服务器端,我有:

PayPalAPIInterfaceServiceService service=new       PayPalAPIInterfaceServiceService(configMap);

            PaymentDetailsType paymentDetails = new PaymentDetailsType();
            paymentDetails.setPaymentAction(PaymentActionCodeType.fromValue("Sale"));
            PaymentDetailsItemType item = new PaymentDetailsItemType();
            BasicAmountType amt = new BasicAmountType();
            amt.setCurrencyID(CurrencyCodeType.EUR);
            String itemAmount = "10.00";
            amt.setValue(itemAmount);
            int itemQuantity = 1;
            item.setQuantity(itemQuantity);
            item.setName("pagamento su Movieuniverse");
            item.setAmount(amt);


            List<PaymentDetailsItemType> lineItems = new ArrayList<PaymentDetailsItemType>();
            lineItems.add(item);
            paymentDetails.setPaymentDetailsItem(lineItems);
            BasicAmountType orderTotal = new BasicAmountType();
            orderTotal.setCurrencyID(CurrencyCodeType.EUR);
            orderTotal.setValue(((Double)(Double.parseDouble(itemAmount) * itemQuantity)).toString()); 
            paymentDetails.setOrderTotal(orderTotal);
            List<PaymentDetailsType> paymentDetailsList = new ArrayList<PaymentDetailsType>();
            paymentDetailsList.add(paymentDetails);

            SetExpressCheckoutRequestDetailsType setExpressCheckoutRequestDetails = new SetExpressCheckoutRequestDetailsType();
            setExpressCheckoutRequestDetails.setReturnURL("http://127.0.0.1:8888/MovieUniverse.html#order_confirmed");
            setExpressCheckoutRequestDetails.setCancelURL("http://127.0.0.1:8888/MovieUniverse.html#order_cancelled");

            setExpressCheckoutRequestDetails.setPaymentDetails(paymentDetailsList);

            SetExpressCheckoutRequestType setExpressCheckoutRequest = new SetExpressCheckoutRequestType(setExpressCheckoutRequestDetails);
            setExpressCheckoutRequest.setVersion("104.0");

            SetExpressCheckoutReq setExpressCheckoutReq = new SetExpressCheckoutReq();
            setExpressCheckoutReq.setSetExpressCheckoutRequest(setExpressCheckoutRequest);

            SetExpressCheckoutResponseType res=service.setExpressCheckout(setExpressCheckoutReq);
            String token=res.getToken();
            return token;

通过这种方式,我使用2个脚本获取令牌并使用上下文模式 如PayPal Checkout Express上下文文档中所述

    window.paypalCheckoutReady=function(){
        paypal.checkout.setup("2GF99UMQQF66A",{
            environment:'sandbox',
            container: "paypal"
        });
    }   
ScriptInjector.fromString(JsResources.INSTANCE.scriptOpenPopupPaypal().getText()).setWindow(ScriptInjector.TOP_WINDOW).inject(); 


ScriptInjector.fromUrl("http://www.paypalobjects.com/api/checkout.js").setWindow(ScriptInjector.TOP_WINDOW).inject();

点击payapal checkout按钮,在弹出窗口中打开此链接(由两个脚本获取) https://www.sandbox.paypal.com/checkoutnow?useraction=commit&token=<TOKEN-OBTAINED>

我现在点击付款,但付款没有注册,关闭弹出窗口后,它仍然是我的页面,上面有paypal加载说明,在此页面下面是返回页面,这里是屏幕:

a

b

c

我不知道实现中有什么问题,为什么仍然是paypal加载,也许URL应该是不同的。在paypal文档写我应该使用: <form id="myContainer" method="post" action="/checkout"></form>, 但是如何从API调用中获得结果呢?所以我直接使用了link = URL + token,并将其插入html片段中的href(以供脚本使用):

<div class="container">
    <a id='paypal'
     href="">   
    </a>
</div>

因此链接将在弹出窗口中打开,但由于之前解释的原因,它不起作用。 非常感谢!

文档: PayPal Checkout Express in-context

1 个答案:

答案 0 :(得分:0)

2017年1月1日起已弃用此集成方法。 PayPal继续使用这种方法来支持现有的商家,但是请注意,新功能和增强功能不会应用于这些集成。

有关更多详细信息,请访问documentation

带上下文的PayPal Express Checkout流程可为您的客户提供简化的结账体验,使他们在整个付款授权过程中始终位于您的网站本地,并使他们能够使用PayPal余额,银行帐户或信用卡进行付款而无需共享或在您的网站上输入任何敏感信息。

有关新的集成,请参见PayPal Checkout Integration Guide