【问题标题】:PayPal - IPN Listener and encrypting paymentPayPal - IPN 监听器和加密支付
【发布时间】:2015-09-14 06:20:57
【问题描述】:

我需要向我正在开发的网站添加付款,但我不知道该怎么做。在网站上,用户将能够购买虚拟积分。因此,一旦他们付款,他们的帐户将被记入 x 点数。

我在我使用的 IPN http://phprocks.letsnurture.com/paypal-ipn-with-php/ 上遇到了本教程,并且能够使用 PayPal IPN 模拟器 (https://developer.paypal.com/developer/ipnSimulator) 进行一些测试。一切顺利,“付款”后用户数据保存到数据库中。

但是,有人提出了另一种处理付款的方法。使用这个加密支付的http://blog.scrobbld.com/paypal/protecting-your-payments-with-ewp/ 教程。

在第二个教程中作者提到了这一点: “如果他们使用 Firefox,并且安装了 Firebug,那么编辑页面的 DOM 并将其发布到 PayPal 将非常容易。因此,我可以将其设置为:”

<input type="hidden" name="amount" value="0.99">

但是第一个教程中的if 没有处理这方面的问题吗?或者第二个教程中的加密是否为支付提供了更高的安全性?

// 3. Make sure the amount(s) paid match
if ($_POST['mc_gross'] != '0.34')
{
  $errmsg .= "'mc_gross' does not match: ";
  $errmsg .= $_POST['mc_gross']."\n";
}

所以如果我理解正确的话,我可以使用第一个教程中的 ipn 监听器类,以及第二个教程中的加密支付吗?

【问题讨论】:

    标签: php paypal


    【解决方案1】:

    在 IPN 内,交易已经发生。因此,如果不匹配,您可以向自己发送通知,自动退还付款,或根据需要进行处理。

    不过,一个安全按钮,无论是加密的还是由 PayPal 托管的(我更喜欢这样)都不会在按钮代码中显示定价数据,因此任何人都无法在没有正确定价的情况下进行付款.

    所以你可以同时使用两者,但如果你首先使用安全按钮,IPN 中的逻辑确实会过时。

    【讨论】:

    • 好的...所以 PayPal 可以为我托管按钮。不知道那个。谢谢你。但是,如果我没有 IPN,如何检查交易是否发生并记入用户?你知道这方面的任何文章或教程吗?我想使用类似&lt;input type="hidden" name="custom" value="&lt;?php echo $user_id; ?&gt;"/&gt; 的东西来发送付款后返回的用户ID。这样我就可以知道该归功于谁。
    • IPN 仍然非常重要,也是一个非常有用的工具。您根本不需要担心在其中验证定价。离开它不会有什么坏处,只是如果您使用托管按钮,它永远不会失败定价检查(除非您更改了数据库中的定价但没有更新托管按钮。)您可以使用不过,IPN 可以处理您想要的任何其他交易后处理,我强烈推荐它。您是否偶然使用 WordPress?
    【解决方案2】:

    安德鲁回答中的关键短语是“已经发生” (IPN)。

    如果您事先确实可以验证定价,除了选择加密之外,您还可以使用Express Checkout 处理数据的地方服务器端 而不是HTML @ 987654322@ 直接发布到 Paypal,如示例所示。

    通过这种方式,您可以将 IPN 视为更真实的东西 - 基于事务中的事件的“消息传递”服务,而不是使其成为事务的一部分(您需要以某种方式使其无效)交易事后)。

    虽然“无效”(信用/退款/取消)交易确实会正常发生,但恕我直言,它“应该”是因为您的业务规则(而不是某些验证问题,例如处理被篡改的数据)。

    “如果他们使用 Firefox,并且安装了 Firebug,那么编辑页面的 DOM 就非常容易了......”

    篡改 HTML form 数据在所有&lt;form /&gt;所有现代浏览器都有内部工具(Firefox、 Chrome、Internet Explorer)来检查它(“客户端”)所涉及的所有内容。这就是为什么在 Web 开发的任何时候都需要验证(客户端和服务器端)。

    第..

    【讨论】:

      猜你喜欢
      • 2015-04-18
      • 2016-06-29
      • 2015-12-21
      • 2016-05-18
      • 1970-01-01
      • 2015-10-29
      • 2012-08-19
      • 2014-06-23
      • 2012-01-17
      相关资源
      最近更新 更多