【问题标题】:PAYPAL CORS error贝宝 CORS 错误
【发布时间】: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", "AFcWxV21C7fd0v3bYYYRCpSSRl31ATxmPR-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 中尝试

标签: java paypal paypal-sandbox


【解决方案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'。
    猜你喜欢
    • 2022-01-19
    • 2014-08-25
    • 2015-09-14
    • 2018-08-11
    • 2016-05-04
    • 2015-12-26
    • 2017-08-13
    • 1970-01-01
    • 2018-03-18
    相关资源
    最近更新 更多