繁体   English   中英

如何测试 Paypal IPN 通知

[英]How to test Paypal IPN notification

我正在尝试让这个 PayPal IPN 脚本工作,但似乎我没有得到 paypal 的响应。 我不知道有什么问题,是在表单中还是在脚本中:

<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" target="_top">
    <input name="return" type="hidden" value="http://localhost/home/menu/index.php" />
    <input name="cancel_return" type="hidden" value="http://localhost/home/menu/index.php" />
    <input name="notify_url" type="hidden" value="http://localhost/home/menu/php/inni.php" /> 

这是脚本 inni.php:

$req = 'cmd=_notify-validate';
foreach ($_POST as $key => $value) {
    $value = urlencode(stripslashes($value));
    $req .= "&$key=$value";
}
$header = "POST /cgi-bin/webscr HTTP/1.0\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
$fp = fsockopen ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);
$item_name = $_POST['item_name'];
if (!$fp) {

} else {
fputs ($fp, $header . $req);
while (!feof($fp)) {
    $res = fgets ($fp, 1024);
    if (strcmp ($res, "VERIFIED") == 0) {
        // vérifier que payment_status a la valeur Completed
        if ( $payment_status == "Completed") {
                         if ( $email_account == $receiver_email) {
//insert in db
          }
        }
        else {
                // Statut de paiement: Echec
        }
        exit();
   }
    else if (strcmp ($res, "INVALID") == 0) {
        // Transaction invalide
    }
}
fclose ($fp);
}   

问题是您将 PayPal 发送到本地主机。

将链接 (notify_url) 更改为可公开访问的 URL 或 IP 地址。

贝宝从他们的服务器发送通知,因此发送到本地主机不会到达您,因为在这种情况下本地主机将是贝宝服务器本身。

您需要将 PayPal IPN 请求转发到您的本地计算机才能工作。 有几个项目可以解决这个问题,包括免费的和商业的。

免费和开源的变体是: https : //github.com/antoniomika/sish

一种商业变体: https : //ngrok.com/

Ngrok 的实现速度要快一些,因为您不需要配置服务器。

使用 Ngrok 将 http 请求转发到 localhost

./ngrok http -host-header=localhost 80

然后在浏览器中打开

http://localhost:4040/inspect/http

从状态页面复制您的 ngrok 网址

https://d1c7361aebf0.ngrok.io

假设您的 IPN 通知网址是

https://www.example.com/api/paypal-ipn

将其更新为并开始测试即时付款通知

https://d1c7361aebf0.ngrok.io/api/paypal-ipn

注意:确保禁用所有与域名相关的重定向以使其正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM