Php IPN VERIFIED和strcmp不再起作用

时间:2014-01-10 09:03:28

标签: php paypal paypal-ipn

我对IPN系统中PayPal收到的VERIFIED字符串有一个奇怪的问题。 我使用PHP来检查付款的有效性。 截至昨天下午5点,一切正常。 但是在最后两次付款时,我的脚本无法再拯救“已验证”的字符串。 在这里,你是我的剧本:

[...]
$fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);
[...]
if (!$fp)
  {[...]
  }
else
  {fputs ($fp, $header . $req);
   while (!feof($fp))
     {$res = fgets ($fp, 1024);
      $ResTotale .= $res;
      if (strcmp ($res, "VERIFIED") == 0)
        {// Payment ok!
         [...]
        }
   [...]
  }

直到昨天,我们从PayPal收到了这些数据:

[...]
domain=.paypal.com VERIFIED
[...]

通过最后两笔付款,我们收到了:

[...]
8
VERIFIED
0
[...]

该脚本将此付款标记为无效。 我改变了“strcmp”if语句:

if ((strcmp ($res, "VERIFIED") == 0) || (strcmp (trim($res), "VERIFIED") == 0) || (trim($res) == "VERIFIED"))

有谁能告诉我这个脚本是否有效? 提前谢谢。

3 个答案:

答案 0 :(得分:3)

请检查Paypal IPN sends back VERIFIED but with numbers before and after

此外,评估应该包括trim()

if(strcmp(trim($ res),“VERIFIED”)== 0)

请参阅:https://ppmts.custhelp.com/app/answers/detail/a_id/926/kw/http%201.1

答案 1 :(得分:1)

我遇到了同样的问题,发现一个非常简单的工作我改变了功能:

if (strcmp ($res, "VERIFIED") == 0) {

通过

if (strpos($res,'VERIFIED') !== false) {

因此,使用strcmp的任何地方都必须更改为strpos。

我希望这会对你们中的一些人有所帮助:)。

Mouns

答案 2 :(得分:0)

我知道这是旧的,但我遇到了同样的问题,唯一对我有用的是使用$nextTick()。 希望它有所帮助。