当我创建一个新的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的正确方法,那么正确的方法是什么?
发布于 2013-02-21 08:01:03
我浏览了示例代码和他们的社区,但没有太多内容可供参考。我唯一能想到的就是改变:
arbResult.getResultSubscriptionId();
至:
arbTransaction.getResultSubscriptionId();
我知道这听起来不合逻辑,但这是我能做的最好的事情了。
发布于 2013-03-29 10:15:14
根据源代码,您使用的方法是正确的。
如果将这些调用追溯到代码中,就会看到订阅id是由net.authorize.arb.Result的importResponseMessages()中的以下调用设置的
getElementText(txn.getCurrentResponse().getDocumentElement(),AuthNetField.ELEMENT_SUBSCRIPTION_ID.getFieldName());
因此,如果在arbResult
变量上调用它,可能会更接近。请注意,应将txn
替换为您的变量arbTransaction
。
或者,您可以深入研究响应本身,以了解Authorize.net应用程序密钥没有返回正确的订阅id的原因。
xml = arbTransaction.getCurrentResponse().dump(true);
true
确定XML树是否折叠。XML应该是包含来自authorize.net的xml
响应的字符串
https://stackoverflow.com/questions/14992102
复制相似问题