Authorize.net创建ARB并获取Id



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

我浏览了样本代码和他们的社区,没有什么可做的。我唯一能想到的就是改变:

arbResult.getResultSubscriptionId();

至:

arbTransaction.getResultSubscriptionId();

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

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

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

最新更新