代码之家  ›  专栏  ›  技术社区  ›  miojamo

paypal ipn通知两次

  •  2
  • miojamo  · 技术社区  · 15 年前

    我的通知脚本启动了两次,第一次被验证,第二次无效。

    我在用沙盒可能卖家账号设置不对?我用notifyurl和auto return设置了IPN。在表单中还有return和notify\ url集

    2 回复  |  直到 15 年前
        1
  •  3
  •   colithium    15 年前

    我记得在文档中它指出复制是可能的——这就是互联网的本质。这就是为什么它会给你一个唯一的事务ID。如果你收到两次通知,你应该用它来防止不好的事情发生。

    The docs 说“贝宝发送一个字回来,这要么是验证,如果消息来源于贝宝或无效,如果有任何与原来发送的不一致”。我猜你的代码两次意外地将“echo”发送回PayPak,其中一次格式不正确。也许他们都是相同的,但贝宝回应无效,如果它得到它两次。但不管怎样,对于一个特定的事务Id,一旦你得到验证,你就很好了。只需忽略所有后续响应。

    编辑2

    返回的url只是PayPal用来将用户重定向回您的站点。使用此页面感谢他们的购买,并通知他们,一旦处理完成,他们将收到通知。如果不想使用此功能,甚至可以将其设置为空字符串。当支付实际完成时(或者发现了一些问题),PayPal将调用notifyurl引用的脚本。在这里,你可以确保一切正常,处理重复通知,更新数据库,向用户发送电子邮件,说他们的付款已处理,等等。

        2
  •  0
  •   med rezzouq    7 年前

    在插入或更新mysql查询之前,请检查返回的事务id“$\u POST['txn\u id']”是否已存在于您的db表中,如果它不存在,请将其与其他$\u POST数据一起插入,因为paypal多次调用notify url。

    推荐文章