Paypal的令牌ID是唯一的吗?

8
PayPal返回的“Token ID”(例如:EC-XXXXXXXXXXXXXXXXX),是否总是唯一的?我在怀疑它是否唯一?但我的做法是将其插入到交易表中,以验证此交易是否已经处理过。
我知道Transaction ID也可以起作用,但问题是,在使用PayPal API方法(如 GetExpressCheckoutDetails 或 DoExpressCheckout)之前,Token ID会首先返回。
请根据您自己的经验,让我知道您认为什么是最好的选择。
谢谢

1
听起来你想使用交易ID来识别交易。从名称上看,令牌可能是用于安全的一次性随机数,并不能保证唯一性。 - user684934
2个回答

7
令牌是唯一的,但它仅代表会话,这就是为什么它首先返回的原因。它根本不表示完整的交易,您不应该将其用于此目的。我也不建议将其存储以备将来使用,因为PayPal并未将其用于识别退款等交易(至少我没有看到过)。
我建议您仅使用令牌来管理实际的结帐流程,从SetExpressCheckout -> GetExpressCheckoutDetails -> DoExpressCheckoutPayment,然后将从DoExpressCheckoutPayment返回的TransactionID存储为您的“交易完成”指示器。您还应该检查PaymentStatus返回,因为电子支票不会立即将钱转入您的账户。

谢谢回复,我也有相似的想法。我使用的原因是为了阻止多个刷新尝试,你认为这样做好吗? - Zubair1
例如:用户刚刚点击确认按钮,在下一页中他的预订成功了,并且他的预订和交易信息已经成功存储。但是,如果用户刷新页面,会导致一些错误,比如在MySQL中我已经使用唯一索引设置了列,就会出现重复交易ID的错误。它仍然会插入预订数据,因为它的主键是在将预订数据插入MySQL时生成的唯一预订代码。 - Zubair1
很高兴能帮忙!顺便说一下,如果您的用户刷新页面并重新提交完整请求,PayPal将返回错误,因为已完成的会话令牌现在无效。因此,TransactionID将为空。 - jimp
我已经尝试了很多次,但是将相同的令牌ID发送到Paypal仍然显示相同的响应(包括交易ID),唯一的区别似乎是它不会从用户那里扣除金额超过一次。 - Zubair1
1
我会进行重定向。重定向会非常快,而且会话变量往往会阻止人们在另一个购买之后立即开始新的购买。实际上有很多方法可以做到这一点。只要PayPal能够防止重复收费,我认为你会没问题的。祝你好运。 - jimp
显示剩余3条评论

0

交易ID是交易的唯一标识。

令牌ID是一个数字,用于检查交易ID是否正确。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接