PayPal重复点击通知URL

时间:2014-06-27 12:09:18

标签: php paypal paypal-adaptive-payments adaptive-parallel-payment

我通过paypal自适应支付付款并成功付款

然后我发送验证请求,我的状态=已验证

这是代码:

function process_new() {
$req = 'cmd=_notify-validate&'.file_get_contents("php://input");
$ipnmsg=$this->decodePayPalIPN($req);
$ch = curl_init('https://www.sandbox.paypal.com/cgi-bin/webscr');
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_FORBID_REUSE, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: Close'));
$res=curl_exec($ch);
curl_close($ch);
    //if ($this->InstantPaymentNotification->is_valid($req)) 
    if($res=='VERIFIED') // i got verified here
    {
        $txnIds=array();
        $notifications = $this->InstantPaymentNotification->buildAssociationsFromIPN_new($ipnmsg);
        foreach($notifications as $notification){
            $this->IpnNotification->create();
            $this->IpnNotification->save($notification);
            $txnIds[]=$this->IpnNotification->id;
            }
       //$this->InstantPaymentNotificationNew->saveAll($notification);
        $this->__processTransactionNew($txnIds);
    }

    //$this->redirect('/');
}

无法找到notify_url继续点击的原因。

如果需要更多信息,我也会发布它们......

这是IPN历史记录:

enter image description here

  `$code = curl_getinfo($curl, CURLINFO_HTTP_CODE);`

它返回200但仍然paypal显示HTTP状态代码:500

和通知网址:http://example.com/instant_payment_notifications/process_new 不返回HTTP状态代码:500

感谢。

1 个答案:

答案 0 :(得分:2)

仔细查看您的PayPal屏幕截图:您的服务器正在返回这些请求的HTTP代码,这意味着PayPal将此解释为坏事并且HTTP事务未成功完成,它将会再试一次,直到它收到200 OK。

检查服务器的配置。您最近是否更改了服务器的配置?如果您将自己的POST制作到端点URL,它是否会为您返回500状态代码?这些请求被提出后,它是否已经停止维护了?设置一些API监控以确保不会经常抛出这500个错误。