什么会导致 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 自适应付款 - 预批准请求导致“无效请求”错误