请求的资源上没有“Access-Control-Allow-Origin”标头 - Mollie payment ajax

时间:2017-05-03 17:14:49

标签: ajax laravel cross-domain omnipay mollie

我正在尝试使用以下2个库创建mollie付款:

当客户填写表单并提交ajax请求时,我的laravel应用程序中的函数将被提交。

在我的Laravel功能中,我正在尝试执行以下操作:

$gateway = Omnipay\Omnipay::create('Mollie');

$gateway->setApiKey('test_gSDS4xNA96AfNmmdwB3fAA47zS84KN');

$params = [
    'amount' => $ticket_order['order_total'] + $ticket_order['organiser_booking_fee'],
    'description' => 'Kapelhoek wijkfeesten',
    'returnUrl' => URL::action('EventCheckoutController@fallback'),
];


$response = $gateway->purchase($params)->send();


if ($response->isSuccessful()) {
    // payment was successful: update database
    print_r($response); die;
} elseif ($response->isRedirect()) {
    // redirect to offsite payment gateway
    return $response->getRedirectResponse(); die;
} else {
    // payment failed: display message to customer
    echo $response->getMessage(); die;
}

但我得到了这样的答复:

  

XMLHttpRequest无法加载https://www.mollie.com/payscreen/select-method/PRMtm6qnWG。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许原点“http://kapelhoektickets.dev”访问。

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

return $response->getRedirectResponse()正在重定向到应将消费者发送到的付款网址。但是,在AJAX调用中不允许此重定向。

相反,您的脚本应使用$response->getRedirectUrl()打印此付款网址,并且您的网页应使用javascript重定向消费者。

答案 1 :(得分:0)

我认为问题出在Api Dashboard上。您必须在发出POST请求之前将您的域列入白名单

答案 2 :(得分:0)

如果您从其他域请求API,则必须实施CORS - 我更喜欢此包https://github.com/barryvdh/laravel-cors