Authorize.net 添加新的 paymentProfile 时出错 - 代码:E00114,无效的 OTS 令牌

Authorize.net Error when adding new paymentProfile - code: E00114, Invalid OTS Token

我们正在尝试为现有的 customerProfile 添加新的 customerPaymentProfile。我们正在根据提供的 github 样本构建我们的代码 https://github.com/AuthorizeNet/sample-code-node/blob/master/CustomerProfiles/create-customer-payment-profile.js

唯一的区别是,我们不会将 CC 详细信息传递给我们的服务器。相反,我们从前端传递 opaqueData。在初始 customerProfile 创建(使用单一付款资料)时它有效 w/c 很好。但是如果我们尝试添加新的 paymentProfile(使用新的 opaqueData),我们会得到错误代码:E00114,无效的 OTS 令牌。

官方documentation关于错误码不多说

似乎有几种不同的情况会抛出此错误代码

使用Accept.js

我们的案例(node.js SDK)

其他

我们还尝试将事务延迟至少 7 秒,然后再使用 opaqueData 可能允许他们的系统按照建议同步 here 以接收相同的错误消息。

有人遇到过这样的事情吗? 任何形式的帮助都将不胜感激。

我们做错了什么,通过反复试验(通过 API)来确定客户是否存在。因此点击 api 一次或两次导致无效令牌(第二次调用时出错)

所以我们尝试创建一个 customerProfile,w/customerPaymentProfile & 如果 customerProfile 已经存在(如果它是重复的电子邮件),这将抛出错误。这里的好处是 customerProfileId 带有错误负载。

我们虽然使用来自错误负载的 customerProfileId 来为客户创建新的付款资料,通过减少系统上的一次数据库调用给我们带来了一些优势。

我们策略的问题是 opaqueData 将过期,当我们使用它来创建 customerProfile(w/payment profile)时即使请求失败.

所以解决方案是在我们的系统中保存客户信息,并检查它是否是回头客。如果是,则从数据库中获取 customerProfileId,并在 authorize.net

上创建新的 customerPaymentProfile

也可以先创建 customerProfile,w/o customerPaymentProfile。如果此交易失败,那么至少您还没有使用 opaqueData 并且您会得到 customerProfileId w/o 进行任何查询你的分贝。因此,当您尝试创建新的 customerPaymentProfile 时,您不会收到错误代码 E00114,因为尚未使用 opaqueData。

经验教训对我们来说是艰难的,但希望它能帮助别人。