【发布时间】: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 客户,然后在他的客户资料中添加付款资料,因此我们使用以下方法。
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.net 时传递 createProfile as true 信用卡 使用 nonce 进行一次性付款。交易成功后,网关将返回一个新客户,该客户具有可用于其他交易的付款资料。但在这种情况下,我们无法针对一个客户配置文件创建更多的客户付款配置文件。此外,如果用户想要更改客户付款配置文件,我们必须重新创建整个客户配置文件。
我们在authorized.net 开发者社区上进行了大量搜索,但无法找到答案。我们发现一篇帖子指出了同样的问题
在其中,他提到文档似乎是说您可以使用 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