0

我在 Laravel 4 中使用 omnipay 实现 Paypal Express。状态码:当我的网站尝试重定向到 paypal 时发现 302。

错误:

XMLHttpRequest 无法加载https://www.sandbox.paypal.com/xxxxxxxx。请求的资源上不存在“Access-Control-Allow-> Origin”标头。来源 ' http://www.example.com ' 是 ??> 因此不允许访问。

实际上,我发现如果我在 purchase.blade.php 中删除以下 Jquery 标头,它将正常工作。我正在使用控制器提交对贝宝的调用(不是 ajax 调用)。

<link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css" />
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>

但是,我需要 Jquery。任何想法或解决方法?

谢谢

4

1 回答 1

0

可能有点晚了,但我最近也有类似的问题。我在前端使用 AngularJS,并使用服务调用我的 CodeIgniter api 用于 Omnipay。

Omnipay 重定向到沙箱,但您希望将 URL 返回到您的 JS 或 Jquery,而不是立即从 CodeIgniter/Laravel/任何服务器端框架重定向。

解决方案:而不是:

  $response->redirect(), 

将其替换为:

   $url = $response->getRedirectUrl();
   print_r($url);

因此,该 url 作为对您的 Javascript 的回调返回,并且在您的 Javascript(我正在使用 Angular JS)控制器中,您可以在 window.location 中加载它。

 angular.module('gateway',[])
 .controller('payCtrl', function ($scope,payService,$window){
 $scope.paymentParams={};  //payment params from your form
payService.makePayment($scope.paymentParams) //send payment details to server
  .success (function (data){
   $window.location=data; // the data will be "https://www.paypal.com etc etc, which you will pass to the $window service to redirect to the location. 

  })
  .error (function (err){
   //handle error
  });
});

希望它可以帮助那里的人。

于 2015-06-23T00:47:11.827 回答