在 Authorize.NET webhook 响应中保留 asp.net 会话数据

Preserve asp.net Session Data on Authorize.NET webhook response

我正在尝试将 Authorize.NET 从 CIM 升级到 Accept Hosted,但遇到了这个问题:

Authorize.NET Accept Hosted 需要 2 url 进行配置。

  1. Return URL,在成功支付后将用户重定向到主页。
  2. A webhook url,Authorization.Net webhook 将 post transID.

在重定向时,我需要访问存储在当前会话中的特定于应用程序的付款详细信息。 注意:这些不是 authorize.net 付款详细信息,我可以从 webhook->transID->GetTransactionDetails

获取它们

在 CIM 中,重定向 url 包含来自 AuthorizeNET 的支付信息(transID 等),以及特定于应用程序的会话支付信息。所以我能够在一个处理程序中处理它们,该处理程序在重定向时被调用。

但是在新的 api 中,当网络钩子向我的网络钩子 URL 发送 post 数据时,它是异步执行的,使用与付款会话不同的会话制成。 因此,当我从 AuthorizeNET 收到 transID 和后续付款详细信息时,它不知道依赖于会话的应用程序特定付款详细信息。

我的问题是,在收到 Authorize.Net 的付款详细信息后,如何保留特定于会话的数据?

有没有人遇到过类似的问题?解决此问题的最佳方法是什么?

您无法跨系统维护会话,因此您需要另一种方法来存储该数据并在用户 return 访问您的站点后检索该数据。一种常见的方法是将该数据保存在数据库中,并将该数据的标识符存储在 cookie 或自定义字段中,Authorize.Net 将作为交易的一部分为您传递并且 returning 重定向。在这种情况下,您传入 hostedPaymentReturnOptions.url 的 return URL 可以包含具有该标识符的查询字符串(即 https://www.yoursite.com/return_url?id=12345)。然后,一旦用户 return 返回您的站点,您就可以使用该标识符从数据库中检索他们的会话数据并将其添加回他们的会话中。