【问题标题】:Best practice for crediting users account with PHP MySQL and paypal express checkout使用 PHP MySQL 和 paypal express checkout 记入用户帐户的最佳实践
【发布时间】:2013-01-17 01:38:16
【问题描述】:

我正在将 PayPal Express Checkout API 集成到数字商品/服务网站中。我解决了所有技术问题,但现在我有一个理论上的问题 - 当交易完成并且我从 PayPal 获得确认时,存储来自 paypal 的确认并记入我用户帐户的最佳方式是什么?

paypal 库中的 ConfirmPayment() 函数从 paypal 中返回一个关联数组,其中包括交易 ID,并确认我的企业帐户中有用户的钱。

所以我的计划是,将该事务 ID 作为 unique 值存储在 SQL 表中,因此如果用户重新加载确认页面,然后重新调用 ConfirmPayment($token),我的 PHP 脚本不会只需再次记入他们的帐户,因为 SQL 表将返回唯一 ID 错误。

聪明的程序员如何将最后的付款确认整合到他们的应用程序的其余部分? 谢谢。

【问题讨论】:

    标签: php sql paypal currency


    【解决方案1】:

    我会这样做:

    完整记录您从 Paypal 收到的所有消息。只是RAW数据应该没问题。然后超出这一点就不需要那么多的可追溯性。如果有任何事情发生,您可以检查日志。这真的不应该发生,如果您需要大量查看此日志以解决您遇到的任何问题,那么您会遇到不同类型的问题。这就是为什么我的建议是:不要花太多时间在上面,但要确保你有可追溯性(尽管是非常粗略的)。


    如果用户重新加载确认页面,Paypal 将不会再向您发送消息。请记住,您应该只接受 Paypal 已验证的交易。用户应该无法绕过 Paypal 来验证自己的交易。

    【讨论】:

    • 谢谢!我正在玩的重新加载是这样的:用户在贝宝的外部网站上确认付款信息后,他们会使用令牌重定向回我的页面,因此用户从贝宝获得一个网址:MyPage.com/confirm.php?token=123456789 和 confirm.php 脚本打电话给我的ConfirmPayment() 并记入用户的帐户。但是他们有那个带有令牌的 URL!每次他们加载confirm.php?token=... 我的脚本都会运行ConfirmPayment(token)
    • 是的,这不是您进行交易验证的方式。用户可以猜测令牌的价值并绕过 PayPal。 PayPal 有多种验证机制。我以前使用过 IPN,它是一个推送模型通知系统。 Paypal 会向您发送一条消息,说明哪笔交易已经过验证,以及一些额外的信息,例如用于验证数据未被篡改的安全哈希。这是你应该关注的。
    • 好吧,ConfirmPayment() 仍然将令牌连同用户的贝宝 ID 和我所有的 API ID 一起发送到贝宝,所以我想假冒令牌会从贝宝返回错误。但我现在正在研究 IPN,只要我能将用户排除在等式之外就是 +1 :-)
    猜你喜欢
    • 2014-06-10
    • 2020-02-21
    • 1970-01-01
    • 2013-03-30
    • 1970-01-01
    • 1970-01-01
    • 2014-07-11
    • 2017-11-18
    • 2021-06-26
    相关资源
    最近更新 更多