【问题标题】:Authorize.net Error when adding new Customer with payment Profile - code: E00116, OTS Token Access Violation使用付款配置文件添加新客户时出现 Authorize.net 错误 - 代码:E00116,OTS 令牌访问违规
【发布时间】:2020-04-02 15:48:02
【问题描述】:

我们正在尝试使用默认付款资料添加新客户或为现有客户资料添加新客户付款资料。

我们不会将 CC 详细信息传递给我们的服务器,我们也不想使用任何Authoirzed.net 托管表单或 Accept.js UI。这就是为什么我们将此 Accept.js 集成到我们自己的付款表单中的原因as per this Authoirzed.net documenation

我们从前端 Acept.js 传递 opaqueData 像这样在收到响应的支付对象中。

"payment": {
                "opaqueData": {
                    "dataDescriptor": "COMMON.ACCEPT.INAPP.PAYMENT",
                    "dataValue": "1234567890ABCDEF1111AAAA2222BBBB3333CCCC4444DDDD5555EEEE6666FFFF7777888899990000"
                }

根据我们的初始工作流程,我们创建客户资料(使用单个付款资料)或有时只创建 Crate 客户,然后在他的客户资料中添加付款资料,因此我们使用以下方法。

Customer Profile with Payment

Adding Customer Payment Profile in or an existing customer profile

这些 API 的文档清楚地提到这些 API 支持支付对象中的不透明数据,即使我们传递 InValid Token,我们也会得到正确的错误响应E00114, Invalid OTS Token。但是如果我们传递 Valid Token 我们会得到以下响应。

{"messages": {"resultCode": "Error","message": [{ "code": "E00116","text": "OTS Token access violation"}]}}

但我们能够执行支付交易功能,如授权,通过在支付对象中传递不透明数据向信用卡收取费用,而不会出现任何问题。

Create an Accept Payment Transaction

Authorize a Credit Card

如果我们在调用 Authorize.net 时传递 createProfile as true 信用卡 使用 nonce 进行一次性付款。交易成功后,网关将返回一个新客户,该客户具有可用于其他交易的付款资料。但在这种情况下,我们无法针对一个客户配置文件创建更多的客户付款配置文件。此外,如果用户想要更改客户付款配置文件,我们必须重新创建整个客户配置文件。

我们在authorized.net 开发者社区上进行了大量搜索,但无法找到答案。我们发现一篇帖子指出了同样的问题

OTS Token Access Violation

在其中,他提到文档似乎是说您可以使用 nonce 为现有客户配置文件创建付款配置文件,但实际上,它会给您一个 OTS 令牌访问违规。所以他决定使用 Accept, js UI 而不是 Accept.js,让它为他处理所有这些细节。

虽然我们不想使用任何 Authorized.net UI,但我们尝试了Accept.js UI,但在 Accept.js UI 中也遇到了相同的错误" code ": "E00116", "text": "OTS Token access violation"

我们真的陷入了困境。

我们也看到了这样的解释,这可能是因为密钥是为生产生成但在沙盒中使用的,但我在 sandbox.authorize.net 中重置了两次密钥,但没有解决问题。

我们陷入困境,因为无法将付款资料链接到客户资料,从而中断了我们的整个流程。如果我们有任何前进的方向,我们将不胜感激。

【问题讨论】:

    标签: authorize.net


    【解决方案1】:

    According to one source,如果公共客户端密钥(由前端使用)和事务密钥(由后端使用)不匹配,可能会发生这种情况。前端和后端都使用 API 登录 ID。

    还值得检查: -- 确保你的validationMode 是你想要的,无论是testMode 还是liveMode。您可以登录到您的 Authorize.net 帐户并将网关设置为测试模式或直播模式。 -- Accept.js 有 2 个 API 端点 -- 一个用于沙盒 authorize.net 帐户,另一个用于“真钱” Authorize.net 帐户。 https://developer.authorize.net/api/reference/index.html#gettingstarted-section-section-header

    【讨论】:

      【解决方案2】:

      E00116 出现:

      1. 如果一个令牌由商家 A 生成,但被商家 B 用于createTransaction(例如,为 Sandbox 生成的令牌,但在生产中使用)。

      2. 如果 API 登录 ID (merchantAuthentication.name) 不遵守大写,也可能发生此错误,您需要确保使用与 Authorize.net 商户接口中生成的 API 登录 ID 完全相同的值。

      【讨论】:

        猜你喜欢
        • 2021-12-12
        • 2020-03-27
        • 2015-07-03
        • 2018-05-14
        • 2021-09-17
        • 2012-02-11
        • 1970-01-01
        • 1970-01-01
        • 2021-02-08
        相关资源
        最近更新 更多