首页 > 解决方案 > PHP中的PayPal IPN无法向IPNPB发送请求

问题描述

我这里有一个 PayPal IPN 脚本,但问题是,它正在正确接收 POST 请求,但是当它尝试向 PayPal 发出 CURL 请求时,PayPal 似乎没有给出任何响应(甚至没有任何响应INVALID!)

这是我的代码:

<?php
    // Format POST values
    foreach($_POST as $name => $value) {
        $data .= $name.'='.$value.'&';
    }
    $data = substr_replace($data, NULL, -1);
    $data = urlencode($data);


    // THE PROBLEM COMES HERE, I TRY TO MAKE A CURL REQUEST TO PAYPAL BUT NO RESPONSE RETURNED
    $ch = curl_init('https://sandbox.ipnpb.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, $data);
    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);
    $res = curl_close($ch);

    file_put_contents('result.txt',$res);
    // There is nothing in my result.txt file for $res , but $data returns the POST data PayPal gave me
?>

标签: phppaypalpaypal-sandboxpaypal-ipn

解决方案


可能的解决方案是修改 Info Log 到收件人的 Paypal 帐户并设置 IPN

为此,请执行以下步骤:

  1. 步骤 个人资料 -> 个人资料和设置 -> 我的销售工具 -> 即时付款通知 -> 更新

  2. 点击“选择IPN设置”

  3. 将“通知 URL”字段设置为 HTML 表单中“notify_url”上的内容。
  4. 选择“接收 IPN 消息”
  5. 节省

注意:如果您查看 IPN 历史记录,它可能会显示为 Queued。这似乎是沙盒故障,或者可能是它处理了许多请求并且队列很长。您可以尝试使用小额(例如 1 美元)进行实时支付。请参阅此处:Paypal IPN 状态 - 已排队


推荐阅读