You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PayPal Checkout V2服务端/JS SDK实现报错:JSON输入意外终止

解决PayPal checkout.js "Unexpected end of Json input" 错误

先排查后端PHP的响应问题

  • 直接在浏览器访问后端生成支付按钮数据的接口URL,查看返回内容:
    • 如果是空内容:检查PHP代码是否正确输出JSON,比如是否漏写echo json_encode($result);,或代码执行中途被exit、错误中断。
    • 如果返回PHP报错的HTML页面:在PHP开头添加error_reporting(E_ALL); ini_set('display_errors', 1);,直接查看报错信息,排查变量未定义、语法错误、API调用失败等问题。
    • 如果返回的JSON格式异常:把内容复制到JSON校验工具中检查,确认是否存在未转义引号、多余逗号等语法错误。

检查前端请求逻辑

  • 确认前端调用后端接口的请求方法(GET/POST)与后端处理逻辑匹配,比如后端接收POST参数时,前端是否误用GET请求或参数传递错误。
  • 若前后端跨域,需在PHP中添加CORS响应头:
    header("Access-Control-Allow-Origin: 你的前端域名");
    header("Content-Type: application/json");
    
    生产环境避免用*,指定具体域名更安全。

调试后端PayPal API调用

  • 确认后端调用PayPal接口的流程正确:检查API密钥、请求URL是否无误,是否成功获取PayPal返回的订单数据(比如Create Order接口的id参数),并正确封装为JSON返回给前端。
  • 在PHP中添加日志记录,便于排查API交互问题:
    $log_content = date('Y-m-d H:i:s') . " 请求内容: " . json_encode($request_data) . "\n 响应内容: " . $api_response . "\n\n";
    file_put_contents('paypal_debug.log', $log_content, FILE_APPEND);
    

优化前端错误捕获

  • 在前端代码中添加更详细的错误处理,明确是请求失败还是JSON解析失败:
    paypal.Button.render({
      payment: function(data, actions) {
        return fetch('/你的后端接口路径', {
          method: 'POST',
          headers: {
            'Content-Type': 'application/json'
          },
          body: JSON.stringify({ /* 传递给后端的参数 */ })
        })
        .then(function(response) {
          if (!response.ok) {
            throw new Error('请求失败,状态码: ' + response.status);
          }
          return response.json();
        })
        .catch(function(error) {
          console.error('支付初始化错误:', error);
          // 可在此处给用户显示友好错误提示
        });
      },
      // 其他配置项(如onAuthorize处理支付完成逻辑)
    }, '#paypal-button-container');
    

内容的提问来源于stack exchange,提问作者Fernando Padilla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 20:05:42