Authorize.net创建ARB并获得Id

时间:2013-02-20 23:46:21

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

当我创建新的ARB订阅时,响应会回来,我会保存它给我们的ID。我尝试了它,它给了我们“33”。

然后当无声后回调命中我们的方法时,响应有一个不同的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的正确方法,那么使用的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

我查看了示例代码以及他们的社区,并没有太多可以继续下去。我唯一能想到的就是改变:

arbResult.getResultSubscriptionId();

为:

arbTransaction.getResultSubscriptionId();

我知道这听起来并不合乎逻辑,但这是我能做到的最好的事情。

答案 1 :(得分:0)

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

如果您将回调追溯到代码中,您将看到订阅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响应的字符串