PHP网站实现PayPal支付出错

问题描述 投票:0回答:2

我正在努力尝试在我的 PHP 网站上使用 PayPal 付款。我编写了以下方法来处理订单创建,但在尝试将 PayPal 响应解析为 JSON 时,我一直收到错误消息。

        function createOrder($amount, $info) {
            $pp_env = PAYPAL_ENVIRONMENT_MODE == 1 ? PAYPAL_SANDBOX_ENV : PAYPAL_LIVE_ENV ;
            $accessToken = $this->generateAccessToken();
            $url = $pp_env."/v2/checkout/orders";
            $data = array(
                'intent' => 'CAPTURE',
                'purchase_units' => array(
                    array(
                        'amount' => array(
                            'currency_code' => CURRENCY_CODE,
                            'value' => $amount,
                        ),
                    ),
                ),
            );
            $headers = array(
                "Content-type: application/json",
                "Accept: application/json",
                "Authorization: Bearer " . $accessToken,
            );
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
            curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            $response = curl_exec($ch);
            curl_close($ch);
            return json_decode($response, true);
        }

当我尝试使用此代码将 HTTP 响应转换为 JSON 时,我的错误是客户端:

        createOrder() {
          return fetch("<?=base_url("public/paypal_create")?>", {
            method: "POST",
            headers: {
              "Content-Type": "application/json"
            }
          })
          .then((response) => response.json())
          .then((order) => order.id);
        }

enter image description here

以下是我使用浏览器开发工具可以看到的响应: enter image description here

任何人都可以找出我做错了什么?

php paypal
2个回答
0
投票

当您使用 CodeIgniter 时,您可能需要隐藏您的调试/开发人员信息。这似乎正在影响您的 JavaScript 期望的数据。

在呈现 JSON 的脚本中添加以下代码。

define('CI_DEBUG', 0);

https://codeigniter4.github.io/CodeIgniter4/testing/debugging.html#enabling-the-toolbar


-1
投票

使用“网络”选项卡查看单击按钮时服务器从其创建订单和捕获订单路由中做出的响应。响应必须只是前端按钮代码 JS 可以解析的有效 JSON 对象。

根据您问题中的错误信息,响应似乎包含其他 HTML 内容(不仅仅是 JSON),包括 debug_loader,这对于尝试将该响应解析为 JSON 的 fetch/XHR 无效。

© www.soinside.com 2019 - 2024. All rights reserved.