贝宝 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 错误的主要内容,如果未能解决你的问题,请参考以下文章