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

PayPal Rest API点击“Continue to Review Order”陷入无限循环求助

PayPal REST API集成问题修复:无限循环跳转+无响应返回

核心问题分析

  • 非法payer字段传入:创建订单时手动指定payer.email_address会触发PayPal验证逻辑冲突,该字段应由用户在PayPal授权页面登录后自动填充,商家提前传入会导致订单创建失败或跳转异常,引发无限循环。
  • curl请求无错误捕获:代码仅执行curl_exec但未检查请求是否失败,导致$response为空时无法定位问题根源。
  • user_action参数不匹配需求:设置user_action => 'PAY_NOW'会跳过订单审核步骤直接进入付款流程,与你需要的"Continue to Review Order"操作逻辑冲突,引发跳转异常。

修复步骤与代码示例

1. 移除冗余的payer字段

删除purchase_units下的payer数组,该信息无需商家提前传入。

2. 修正user_action参数

将user_action改为'CONTINUE',对应"Continue to Review Order"的审核流程。

3. 添加curl错误处理

增加curl错误检查和HTTP状态码验证,方便排查请求失败原因。

修复后的完整代码:

$postFields = json_encode(array(
    'intent' => 'CAPTURE',
    'purchase_units' => array(
        array(
            'amount' => array(
                'currency_code' => $currency,
                'value' => $amount
            ),
            'payee' => array(
                'email_address' => 'support@sxxx.com',
            ),
            'application_context' => array(                   
                'user_action' => 'CONTINUE', // 匹配订单审核流程
                'return_url' => 'http://localhost/paypal_success.php?order_id=' . $orderId,
                'cancel_url' => 'http://localhost/cancel.php'
            )
        )
    )
));

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $paypalApiUrl);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 生产环境必须开启SSL验证,测试环境可临时关闭但不推荐
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);

$response = curl_exec($ch);

// 检查curl请求是否失败
if(curl_errno($ch)){
    $error_msg = curl_error($ch);
    echo '<script>console.log("CURL错误: ' . json_encode($error_msg) . '");</script>';
} else {
    // 检查HTTP响应状态码
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    echo '<script>console.log("HTTP状态码: ' . $http_code . '");</script>';
    echo '<script>console.log("响应数据: ' . json_encode($response) . '");</script>';
}

curl_close($ch);

额外排查点

  • 确认$paypalApiUrl正确性:测试环境用https://api-m.sandbox.paypal.com/v2/checkout/orders,生产环境用https://api-m.paypal.com/v2/checkout/orders。
  • 确认$headers包含正确的Bearer授权令牌和Content-Type: application/json头信息。
  • 检查$orderId是否有效,避免return_url携带非法参数导致跳转异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 00:40:08