【问题标题】:Preserve asp.net Session Data on Authorize.NET webhook response在 Authorize.NET webhook 响应上保留 asp.net 会话数据
【发布时间】:2018-09-08 21:14:32
【问题描述】:

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

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

  1. 支付成功后返回URL,将用户重定向到主页。
  2. webhook url,Authorization.Net webhook 将向其发布 transID。

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

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

但是在新的 api 中,当 webhook 在我的 webhook URL 上发送发布数据时,它会异步执行此操作,使用与进行付款的会话不同的会话。 因此,当我从 AuthorizeNET 收到 transID 和后续付款详细信息时,它不知道会话相关应用程序特定的付款详细信息。

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

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

【问题讨论】:

    标签: asp.net payment-gateway authorize.net authorize.net-webhooks


    【解决方案1】:

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

    【讨论】:

    • 如果我使用查询字符串,我应该使用什么标识符?另外,有没有办法使 url 灵活,以便它可以用作返回 url 和 webhook post url(我可以添加条件逻辑以在处理程序中采取必要的操作)?
    • 如果您插入数据库,则将 id 作为您插入的行的主键。您可能可以让您的返回 URL 和 webhook URL 相同。您只需要确保 URL 知道 GET 请求和 POST 请求之间的区别,以便知道应该采取什么操作。
    • 是否保证来自重定向的 'GET' 将在 webhook 之前发生?如果 webhook 'POST' 数据先怎么办,这种情况下不会有 session 数据。
    • 无法保证哪个会先出现。重定向应该在 webhook 被触发之前发生,但由于延迟和其他因素无法保证。
    猜你喜欢
    • 2019-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 2013-07-14
    • 1970-01-01
    相关资源
    最近更新 更多