贝宝 CORS 错误

Posted

技术标签:

【中文标题】贝宝 CORS 错误【英文标题】:PAYPAL CORS error 【发布时间】:2017-01-10 01:37:01 【问题描述】:

我正在使用adaptivepayments api。获取paypal key的代码是,

    PayRequest payRequest = new PayRequest(requestEnvelope, "PAY_PRIMARY",
                getProperties().getProperty("paypal_failed_url").trim() + bookingId, "SGD", receiverList,
                getProperties().getProperty("paypal_success_url").trim() + bookingId);
        payRequest.setFeesPayer("PRIMARYRECEIVER");
        payRequest.setTrackingId(transactionKey);
        payRequest.setReceiverList(receiverList);
        AdaptivePaymentsService service = null;
        Map<String, String> sdkConfig = new HashMap<String, String>();
        sdkConfig.put("mode", "sandbox");
        sdkConfig.put("acct1.UserName", "SG_Owner_api1.owner.com");
        sdkConfig.put("acct1.Password", "WY8HAW6WGUNM3R72");
        sdkConfig.put("acct1.Signature", "AFcWxV21C7fd0v3bYYYRCps-s-rl31ATxmPR-EfTtPngimumXW80wNhGsQ");
        sdkConfig.put("acct1.AppId", "APP-80W284485P519543T");

        service = new AdaptivePaymentsService(sdkConfig);

        PayResponse payResponse = null;

        // ## Making API call
        // Invoke the appropriate method corresponding to API in service
        // wrapper object
        payResponse = service.pay(payRequest);
        logger.debug("-->" + payResponse.getPayKey());
        logger.debug("-->" + payResponse.getResponseEnvelope().getAck());

paykey成功返回,支付成功后,paypal页面应该显示给用户授权,沙箱链接是, (https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_ap-payment&paykey=paykey)

我正在做的敌人,

     httpResponse.addHeader("Access-Control-Allow-Origin", "*");
        httpResponse.addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");
        httpResponse.addHeader("Access-Control-Allow-Headers",
                "access-control-allow-origin,content-type, accept");

        httpResponse.sendRedirect(url + payKey);
        return Response.status(successResponse.getCode()).entity(successResponse).build();

paypal palpage 未显示,我可以在浏览器控制台中看到错误,"https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_ap-payment&paykey=paykey" geeting 错误,请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许访问 Origin 'localhost:8080'。

请告诉我需要做什么才能重定向到贝宝页面。

谢谢, 盖伊特里

【问题讨论】:

您使用哪种语言? 你在用 chrome 试试吗? 是的,在 chrome 中尝试 【参考方案1】:

我认为您是通过 AJAX 调用按钮的 onClick 操作来执行此操作的。您可以使用另一种选项而不是使用 ajax hit 将按钮放在表单标签内,并在表单操作中添加您的链接和设置方法作为 get(或允许的方法)

<form action="https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_ap-payment&paykey=paykey" method="get">
<button type="submit" value="Proceed to Payment"/>
</form>

如果您可以为人们提供一些代码来提供帮助,那就太好了,因为这只是空想,因为我们不知道您实际上想做什么。

【讨论】:

【参考方案2】:

AFAIK 这可能 Chrome 不支持 localhost 通过 Access-Control-Allow-Origin

要在标头中发送 Access-Control-Allow-Origin,只需尝试将主机文件中的 localhost(Windows 上为 C:\Windows\System32\drivers\etc\hosts,大多数 Unix 上为 /etc/hosts)到其他域,例如:

127.0.0.1   localhost mydomain.com

然后,如果您使用 mydomain.com 而不是 localhost 访问您的脚本,调用应该会成功。

【讨论】:

Vyas : 1:1 XMLHttpRequest 无法加载请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许访问 Origin 'example.com:8080'。

以上是关于贝宝 CORS 错误的主要内容,如果未能解决你的问题,请参考以下文章

贝宝 SDK 集成错误

贝宝支付流链接错误

贝宝沙盒账户错误状态

贝宝付款 - 500 错误

贝宝 MPL iOS 错误 -1

错误 401 贝宝