Невозможно перенаправить на PayPal с помощью omnipay с JQuery в заголовке

Я внедряю Paypal Express с помощью omnipay в Laravel 4.
Код состояния: 302 найдено, когда мой сайт пытается перенаправить на PayPal.

Ошибка:

XMLHttpRequest не может загрузить https://www.sandbox.paypal.com/xxxxxxxx. В запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-> Origin». Происхождениеhttp://www.example.com‘is ??> поэтому не разрешен доступ.

На самом деле я обнаружил, что, если я удаляю следующий заголовок Jquery в моем buy.blade.php, он будет работать нормально. Я использую контроллер для отправки вызова PayPal (не Ajax Call).

<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.
Любая идея или обходной путь?

Спасибо

0

Решение

может быть немного, но поздно, но у меня есть похожая проблема в последнее время. Я использую AngularJS для своего интерфейса и использую сервис для вызова API-интерфейса CodeIgniter для 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
});
});

Надеюсь, это поможет кому-то там.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]