【问题标题】:Paypal's Token ID Unique?Paypal 的令牌 ID 是唯一的吗?
【发布时间】:2012-09-13 10:14:19
【问题描述】:

它返回的贝宝Token ID(即:EC-XXXXXXXXXXXXXXXXX)总是唯一的吗?我怀疑会是这样吗?但我正在做的是将其插入到我的事务表中以验证此事务是否已被处理。

我知道 Transaction ID 也可以工作,但问题是在使用 GetExpressCheckoutDetailsDoExpressCheckout 等 PayPal API 方法之前首先返回 Token ID。

请根据您自己的经验告诉我您认为最好的方法。

谢谢

【问题讨论】:

  • 听起来您想使用交易 ID 来识别交易。从名字上看,Token 可能是一个用于安全的 nonce,不保证唯一。

标签: php paypal


【解决方案1】:

Token 是唯一的,但它只代表会话,这就是它首先返回的原因。它根本不表示一个完整的交易,你不应该为此目的存储它。无论如何,我不建议将其存储以供将来使用,因为 PayPal 不使用它来识别退款交易等(我至少见过)。

我建议您只使用令牌来管理从SetExpressCheckout -> GetExpressCheckoutDetails -> DoExpressCheckoutPayment 开始的实际结帐流程,然后将从DoExpressCheckoutPayment 返回的 TransactionID 存储为您的“交易完成”指标。您也应该检查PaymentStatus 的回报,因为电子支票不会立即将钱存入您的帐户。

【讨论】:

  • 感谢您的回复,我认为非常相似。我使用的原因是我可以阻止多次刷新尝试,你认为这是个好主意吗?
  • for example: 用户刚刚点击确认按钮,在下一页他的预订成功,他的预订和交易信息被成功存储。但是,如果用户刷新页面,它会导致一些错误,例如重复事务 ID 错误,因为我在 mysql 中设置了具有唯一索引的列。它仍然会插入预订数据,因为它的主键是在将预订数据插入 MySQL 时生成的唯一预订代码。
  • 我想我刚刚意识到这样做不是一个好主意,在我上面的例子中也是如此。所以感谢您为我消除了困惑。
  • 很高兴能帮上忙!顺便说一句,如果您的用户刷新页面并且您重新提交完整的请求,PayPal 将返回错误,因为已完成的会话令牌现在无效。因此,TransactionID 将为空。
  • 我会做重定向。无论如何,重定向几乎是即时的,并且会话变量往往会阻止人们立即开始新的购买。确实有很多方法可以做到。只要 PayPal 防止重复收费,我想你会没事的。 :) 祝你好运。
【解决方案2】:

事务 ID 对于事务是唯一的。 Token ID 是为检查 Transaction ID 是否正确而创建的数字。

【讨论】:

    猜你喜欢
    • 2014-06-05
    • 2016-08-05
    • 2018-04-08
    • 1970-01-01
    • 2011-10-19
    • 2016-01-23
    • 2022-01-19
    • 2014-02-22
    • 2018-08-29
    相关资源
    最近更新 更多