什么会导致 PayPal 的 AdaptivePayments API 返回“内部服务器错误。请检查服务器日志以获取详细信息”?

Posted

技术标签:

【中文标题】什么会导致 PayPal 的 AdaptivePayments API 返回“内部服务器错误。请检查服务器日志以获取详细信息”?【英文标题】:What would cause PayPal's AdaptivePayments API to return a " internal server error. please check the server logs for details"? 【发布时间】:2016-03-27 18:03:37 【问题描述】:

我正在集成 PayPal 的 AdaptivePayment API,但每次我拨打电话时都会收到从 CURL 调用返回的错误“内部服务器错误。请检查服务器日志以获取详细信息”。我相信我拥有所有必需的标题。其他人遇到过这个问题吗?我的代码如下:

            $appID = "APP-80W284485P519543T";
            $username = "***********";
            $password = "***********";
            $signature = "**********";

            $endpoint = "https://svcs.sandbox.paypal.com/AdaptivePayments/";

            $headers = array(
                "X-PAYPAL-SECURITY-USERID: " . $username,
                "X-PAYPAL-SECURITY-PASSWORD: ". $password,
                "X-PAYPAL-SECURITY-SIGNATURE: ". $signature,
                "X-PAYPAL-REQUEST-DATA-FORMAT: JSON",
                "X-PAYPAL-RESPONSE-DATA-FORMAT: JSON",
                "X-PAYPAL-APPLICATION-ID: ". $appID
            );

            $packet = array(
                "actionType" => "PAY",
                "currencyCode" => "USD",
                "cancelUrl" => "cancel.html",
                "returnUrl" => "success.html",
                "receiverList" => array(
                    "receiver" => array(
                        array(
                            "amount" => "1.00",
                            "email" => "example@gmail.com",
                            "primary" => true
                        ),
                        array(
                            "amount" => "0.50",
                            "email" => "example2@gmail.com",
                            "primary" => false
                        )
                    )
                ),
                "requestEnvelope" => array(
                    "errorLanguage" => "en_US"
                )
            );


            $ch = curl_init();

            curl_setopt($ch, CURLOPT_URL, $endpoint."PAY");
            curl_setopt($ch, CURLOPT_VERBOSE, 1);

            //turning off the server and peer verification(TrustManager Concept).
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);

            curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
            curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($packet));

            $response = curl_exec($ch);

            if (curl_errno($ch)) 
            
                // moving to display page to display curl errors
                echo curl_errno($ch);
                echo curl_error($ch);

                  //Execute the Error handling module to display errors. 
             
            else 
            
                echo "RESPONSE";
                header('Content-Type: application/json');
                echo $response;
                curl_close($ch);
            

【问题讨论】:

可能有多种原因。您是否按照指示检查了日志? 如何查看 PayPal 的日志? 这不是 PayPal 的日志。这是你的日志。正如您在原始帖子中提到的,您需要为 cURL 创建日志,您可以检查其中是否有任何错误。还要检查一般的 php 错误日志,并提供您发送的 API 请求的示例(如果这些都没有引导您到任何地方)。 不,错误是没有意义的,您在自己的日志中看到的是 PayPal 告诉您检查日志的错误响应。这基本上是 PayPal 中的一个错误,如果您发送错误/丢失的参数,他们应该返回 400 Bad Request。相反,在许多情况下,您会收到 500 Internal Server Error,这表明 PayPal 方面存在未处理的异常。 【参考方案1】:

您的端点 URL 错误,应该是:

$endpoint = "https://svcs.sandbox.paypal.com/AdaptivePayments/Pay";

【讨论】:

以上是关于什么会导致 PayPal 的 AdaptivePayments API 返回“内部服务器错误。请检查服务器日志以获取详细信息”?的主要内容,如果未能解决你的问题,请参考以下文章

PayPal 自适应付款 - 预批准请求导致“无效请求”错误

是啥导致我的 PayPal IPN 脚本失败?

将 PayPal 按钮集成到站点中

如何验证 PayPal Webhook 签名?

Paypal IPN - 检测是不是由于资金不足而导致付款不成功

为啥我在 Django 中使用此调用从 Paypal 收到“内部错误”?