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