考虑以下场景:在电子商务网站上,由于某种原因,一些用户在填写了所有必要的信息后未能完成订单(“仅”缺少付款)。
为了不丢失他们的习惯,该网站希望在 24 小时内向每个用户发送一封提醒电子邮件,其中包含他们的订单摘要和一个 PayPal 链接,以便他们完成交易。
- 如何构建此链接?
- 会有什么问题?
- 该链接将如何处理?
普通的电子邮件不是最安全的地方,所以我建议不要只放入其中: - PayPal 链接 - 完整的订单详细信息
但是您可以做的是存储有关会话的所有信息并通过“简单链接”将其检索到您的安全应用程序,然后可以生成一个新的 Paypal 交易页面:
<a href="https://yourapp.com/retrieve-transaction?id=ENCRYPTED_ID">...</a>
单击链接后,您需要要求用户登录。即使交易本身没有风险(需要独立支付),链接本身也会暴露交易内容;考虑药品或其他敏感或机密的购买。出于同样的原因,您不想将这些详细信息放入邮件中,您也不希望仅通过单击即可访问它们。
然后,您将通过登录创建一个有效会话,这将提供对帐户信息、订单历史记录等的访问权限。通过添加来自 ENCRYPTED_ID 的信息,您可以将来自“冻结”购买会话的所有信息注入会话。
现在,您拥有重新创建快速订购页面所需的一切,并带有 PayPal 链接。
最后,您应该在预设时间后和交易完成后提供链接失效,以防用户(或其他人)再次点击同一链接。
如果付款成功,您将删除冻结的会话
每隔一小时(比如说),您检查是否有超过 48 小时的未完成的冻结会话。这些已过期,您将其删除。
如果有其他会话早于 24 小时但新于 48 小时,则没有“已发送邮件!” 标志,您发送带有该会话链接的电子邮件,并设置标志。
在收到对该链接的点击时,您请求登录(并提醒如果该链接超过 24 小时,它将无法正常工作)。