php - 如何在 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 问题,它只是给我这个操作的这个错误
解决方案
这不是支付网关的问题。只是跨域标头问题。跨域资源共享 (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: *");
?>
推荐阅读
- keycloak - 带有 Vercel 的动态 URL 的 keycloak 有效重定向 URI
- docker - 是否可以使用 Openstreetmaps 切片服务器将切片提供给带有 docker 图像的 mapbox gl
- flutter - TextField 和 DatePicker 提供空值
- reactjs - 如何使用 useStated 修改此 const 并使其工作
- linkedin - 如何在 Linkedin API 上获得 LinkedIn r_fullprofile 访问权限?
- php - 基于一个值组合 2 个数组 - PHP
- flask - GKE 上的服务+部署在 30 分钟后挂断
- python - 解码以 \x02 开头并以 \x03 控制字符结尾的字节
- c - 为什么分配在范围之外仍然存在,但声明却没有
- python - 在 Jupyter Notebook 中加载自定义函数