【发布时间】:2013-03-19 03:13:39
【问题描述】:
在过去的几天里,我一直致力于使用 PayPal SDK for PHP(它使用 REST API)实现支付集成。但是,我遇到了一些问题。
当付款人被重定向到 PayPal 网站以批准其付款并被重定向回返回 URL 时,PayPal 在执行批准的付款时返回 HTTP 400 状态代码。执行支付的代码如下。请注意,$paymentId 是创建付款后返回的 ID,$payerId 是与批准一起发送的 PayerID。
$payment = Payment::get($paymentId);
$paymentExecution = new PaymentExecution();
$paymentExecution->setPayer_id($payerId);
$payment->execute($paymentExecution);
显示付款无效:
{"name":"PAYMENT_STATE_INVALID","message":"由于当前支付状态,此请求无效","information_link":"https://developer.paypal.com/docs/api/#PAYMENT_STATE_INVALID","debug_id":"223647e6e42fb"}
在弄清楚哪里出了问题(请注意,API 中包含的示例也给出了相同的错误),我在日志文件中偶然发现了以下行:
PPHttpConnection: 无效或未找到证书颁发机构 - 使用捆绑的 CA 证书文件重试
我检查以确保 SDK 找到了 SDK 中包含的证书。所以我的猜测是这是一个无效的证书。我现在有点不知道该怎么做。有人知道如何解决这个问题吗?
【问题讨论】:
-
确保
payment_id和payer_id是正确的。参考developer.paypal.com/webapps/developer/docs/api/… -
我的错,指出 PayPal 的错误响应。帖子已编辑。 PayPal 批准付款后收到的响应不会出现错误。尝试执行付款时弹出。
-
当您发送多于一个的样品付款执行付款请求时,可能会发生这种情况,因此请检查是否有重复的语句(
$payment->execute($paymentExecution);)。证书问题只是一个警告,SDK 将使用捆绑的 CA 证书文件重试请求。 -
检查了多个执行语句。付款只执行一次。关于证书问题:当我使用此代码
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);关闭证书验证时,支付确实达到了已完成状态并且没有抛出 PPConnectionException。但是,由于安全措施,这不是一个可行的解决方案。
标签: certificate paypal