1

当我创建一个新的 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 的正确方法,那么正确的方法是什么?

4

2 回答 2

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 响应

于 2013-03-29T02:15:13.967 回答
0

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

arbResult.getResultSubscriptionId();

至:

arbTransaction.getResultSubscriptionId();

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

于 2013-02-21T00:01:02.967 回答