大多数商家使用 PayPal 即时付款通知 (IPN) 来接收包括送货地址在内的付款详细信息。这使您可以从 PayPal 接收实时通知,而不是在您认为已付款后对我们进行 ping 操作。下面是一个简单的 PHP 脚本,它将获取 IPN 并对其进行验证,以确保它不是欺骗尝试。一旦通过验证,您就可以更新您的数据库、发送电子邮件或在您知道已付款后执行任何所需的任务。
// Validate with curl
$req = 'cmd=_notify-validate';
foreach ($_POST as $key => $value)
{
$value = urlencode(stripslashes($value));
$req .= "&" . $key . "=" . $value;
}
$curl_result=$curl_err='';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,'www.paypal.com');//Change URL to sandbox.paypal.com if testing in our developer environment
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/x-www-form-urlencoded", "Content-Length: " . strlen($req)));
curl_setopt($ch, CURLOPT_HEADER , 0);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$curl_result = @curl_exec($ch);
$curl_err = curl_error($ch);
curl_close($ch);
//Set validation flag
if (strpos($curl_result, "VERIFIED")!==false)
$valid = true;
else
$valid = false;
这种方法比支付数据传输 (PDT) 更可靠,因为它不依赖消费者返回您的网站进行支付。