【问题标题】:What is the ssl address SSL for paypal IPNpaypal IPN的ssl地址SSL是什么
【发布时间】:2013-08-04 12:36:41
【问题描述】:

我正在尝试制作一个 php 页面来收听 Paypal 的 IPN。我已经让它在沙箱中工作了,现在我想把它推到 prod 上。我找不到正确的 SSL 请求。

这是我的 php 脚本的一部分:

$header = "POST /cgi-bin/webscr HTTP/1.0\r\n";
$header .= "Host: www.sandbox.paypal.com:443\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);

问题的第二部分:如何在用户购买东西之前测试它是否有效?

【问题讨论】:

  • paypal.com/cgi-bin/webscr" method="post">
  • 这是
    结帐 URL,而不是 IPN 验证 URL。差别不大。

标签: php paypal paypal-ipn


【解决方案1】:

ssl://www.paypal.com 是要验证的地址。

确保 /cgi-bin/webscr 是您将 POST 发送到的 URI,并且它在有效负载中包含 cmd=_notify-validate。

此外,将您的 HTTP 版本设置为 HTTP/1.1。 HTTP/1.0 请求将在未来not be supported anymore
您已经添加了 Host 标头,因此从技术上讲,您已经在发送 HTTP 1.1 数据。

请注意,HTTP 1.1 可能会返回分块数据,因此如果您使用 fsockopen(),它需要能够处理该问题。
(cURL 没有这个问题,因为它是一个更复杂的 HTTP 库,而不是 fsockopen,后者纯粹是一个套接字连接。)

【讨论】:

  • 感谢您的回答!当我使用 IPN 模拟器时,当我将结果转储到文件 fputs ($fp, $header . $req); file_put_contents('log2.txt', $fp); 时,我得到了 INVALID。这是否意味着出了问题?
  • 这意味着您至少可以连接,这很好。这确实意味着您发送的 POST 数据与您收到的数据不完全匹配。您发回验证的数据必须与从 PayPal 收到的数据完全匹配,才能返回“已验证”响应。
  • 我如何检查从贝宝收到的数据,这样我才能确定我发回的是同样的东西?
猜你喜欢
  • 2016-07-10
  • 2017-06-25
  • 2012-12-24
  • 2016-03-07
  • 2017-07-16
  • 2016-12-30
  • 2011-12-27
  • 1970-01-01
  • 2015-06-08
相关资源
最近更新 更多