我正在为网站设置 Authorize.Net DPM(直接邮寄方法)支付网关。有些东西我根本不理解,也无法拼凑起来。
DPM 的基本操作是商家网站——我的网站——提供信用卡表格。该表格直接发布到 Authorize.Net。在 CC 和其他发布的详细信息获得授权后,Authorize.Net 会将结果发布回我的站点。我将其称为回调帖子。现在,这里的事情对我来说不太好。
回调 POST 直接来自 Authorize.Net 并且不与用户共享会话,因此 POST 处理程序只有已发布的信息。金额 (x_amount) 和 Authorize.Net 生成的交易 ID (x_trans_id) 使用预先商定的秘密和 Authorize.Net 帐户登录 ID 进行哈希处理。这可用于检查提供该回调的系统的真实性。据我所知,这实际上只是检查发件人是否知道预先约定的秘密。
因此,我可以在回调中信任的唯一数据是金额和网关生成的交易 ID(这是该ID 可用于我的站点的第一个点,因此它的值没有意义)。
我看不到的是如何将授权结果与最终用户支付的交易联系起来。POST 中没有其他数据可以相信没有被更改,并且无论如何它不会传递商家生成的 ID(x_fp_sequence 和 x_timestamp 的组合)。
我期望在回调中能够做的是获取卡授权的结果,确保结果是可信的,在用户将表单发布到授权之前将其绑定到数据库中存储的待处理事务.Net,以便交易可以自信地标记为完成。但是怎么做?
我使用过 SagePay 服务器网关,它也有一个回调。但是,回调包含将结果绑定到正在处理的交易所需的所有字段(它包括商家生成的交易 ID),重要的是它提供了所有需要信任的 POSTed 字段的哈希,以便可以检查它们.
那么我忽略了什么?如果这有助于解释问题,我可以提供示例数据。我正在使用 OmniPay 并正在扩展此网关的驱动程序。