首页 > 解决方案 > 如何在 Laravel API 中使用支付网关

问题描述

我刚刚用 Laravel 做了一个api,前面用 ReactJS,但我想知道如何在这个项目中使用支付 getway,我想使用这个getway

我尝试了什么:

$zarinpal = new Zarinpal('XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX');
$zarinpal->isZarinGate(); // active zarinGate mode
$results = $zarinpal->request(
    "example.com/testVerify.php",
    1000,
    'testing',
    'me@example.com',
    '09000000000',
);

if (isset($results['Authority'])) {
    file_put_contents('Authority', $results['Authority']);
    $zarinpal->redirect();
}

它成功获取$results['Authority'])但它不会重定向到 getway,显然是因为我使用 laravel 作为 api,对吗?那么我在使用 api 时该怎么做呢?

它给了我这个错误:

从源“ http://localhost:3000 ”访问“ http://localhost:8000/api/deposit/agent ”处的 XMLHttpRequest已被 CORS 策略阻止:不存在“Access-Control-Allow-Origin”标头在请求的资源上。

POST http://localhost:8000/api/deposit/agent net::ERR_FAILED

但是我在 api 请求上没有 CORS 问题,它只是给我这个操作的这个错误

标签: phplaravel

解决方案


这不是支付网关的问题。只是跨域标头问题。跨域资源共享 (CORS) 是一种机制,它使用额外的 HTTP 标头告诉浏览器让在一个来源运行的 Web 应用程序可以访问来自不同来源的选定资源。当 Web 应用程序请求的资源与其自己的来源(域、协议或端口)不同时,它会执行跨域 HTTP 请求。

跨域请求的示例:从https://domain-a.com提供的前端 JavaScript 代码使用 XMLHttpRequest 向https://domain-b.com/data.json发出请求。

出于安全原因,浏览器限制从脚本发起的跨域 HTTP 请求。例如,XMLHttpRequest 和 Fetch API 遵循同源策略。这意味着使用这些 API 的 Web 应用程序只能从加载应用程序的同一来源请求资源,除非来自其他来源的响应包含正确的 CORS 标头。

您仍然可以从 PHP 脚本发送标头。这是将以下内容添加到 PHP 脚本的情况:

 <?php
 header("Access-Control-Allow-Origin: *");
?>

推荐阅读