【问题标题】:Authorize.net create ARB and get IdAuthorize.net 创建 ARB 并获取 Id
【发布时间】:2013-02-06 04:15:28
【问题描述】:

当我创建一个新的 ARB 订阅时,响应会返回并保存它给我们的 id。我试了一下,它给了我们“33”。

然后当静默 post 回调命中我们的方法时,响应具有不同的 id,15631016。

15631016 与我们在 authorize.net 在线门户中看到的匹配是正确的。

那么,什么是 33,为什么它不返回真实的 ARB ID?

这是创建新 ARB 并获取 arbId 的代码:

net.authorize.arb.Transaction arbTransaction = createARBTransaction(startDate.getTime(), creditCard, member, splitOccurrences.intValue() - 1, splitUnit, useBillingAddress, billingAddress, recurringOrder.getTotalAmount().doubleValue(), recurringOrder);

net.authorize.arb.Result<?> arbResult = (net.authorize.arb.Result<?>) merchant.postTransaction(arbTransaction);

String arbId;
if (arbResult.isOk()) {
   arbId = arbResult.getResultSubscriptionId();
}

如果getResultSubscriptionId() 不是获取新 ARB 订阅 ID 的正确方法,那么正确的使用方法是什么?

【问题讨论】:

  • 好的,我解决了这个问题。发布的代码工作正常。问题是后来在代码中 ARB ID 被错误地更改为不正确的非相关值......哇!深夜编码太多...解决此类问题的最佳方法是什么?

标签: java authorize.net authorize.net-arb silent-post


【解决方案1】:

我浏览了示例代码和他们的社区,没有太多可继续的。我唯一能想到的尝试就是改变:

arbResult.getResultSubscriptionId();

到:

arbTransaction.getResultSubscriptionId();

我知道这听起来不合逻辑,但这是我能想到的最好的了。

【讨论】:

  • 谢谢,我试试看。
  • 示例代码令人困惑,因为它使用的代码似乎与我认为 UpHelix 从发布的代码中使用的 authorize.net Java SDK 不同。
【解决方案2】:

根据源代码,您使用的是正确的方法。

如果您将调用追溯到代码中,您会看到订阅 ID 是由 net.authorize.arb.Result 的 importResponseMessages() 中的以下调用设置的

getElementText(txn.getCurrentResponse().getDocumentElement(),AuthNetField.ELEMENT_SUBSCRIPTION_ID.getFieldName());

因此,如果您在 arbResult 变量上调用它,您可能会更接近。请注意,txn 应替换为您的变量 arbTransaction

或者,您可以深入研究响应本身,了解 Authorize.net APK 未返回正确订阅 ID 的原因。

xml = arbTransaction.getCurrentResponse().dump(true);

true 确定 XML 树是否折叠。 xml 应该是一个字符串,其中包含来自 authorize.net 的 XML 响应

【讨论】:

    猜你喜欢
    • 2018-06-19
    • 2013-02-07
    • 2011-06-14
    • 2012-11-24
    • 2012-09-28
    • 2011-08-18
    • 1970-01-01
    • 2014-04-14
    • 2015-02-09
    相关资源
    最近更新 更多