Authorize.net создай ARB и получи Id
Когда я создаю новую подписку ARB, ответ возвращается и я сохраняю идентификатор, который он нам дает. Я попробовал это, и это возвращает нам "33".
Затем, когда обратный вызов без вывода сообщений попадает в наш метод, ответ имеет другой идентификатор, 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, какой метод использовать?
2 ответа
Я ознакомился с примером кода, а также с его сообществом, и мне не о чем продолжать. Единственное, что я могу придумать, это изменить:
arbResult.getResultSubscriptionId();
чтобы:
arbTransaction.getResultSubscriptionId();
Я знаю, это не звучит логично, но это лучшее, что я могу придумать.
Согласно исходному коду, вы используете правильный метод.
Если вы проследите вызовы обратно в код, то увидите, что идентификатор подписки устанавливается следующим вызовом в importResponseMessages() net.authorize.arb.Result.
getElementText(txn.getCurrentResponse().getDocumentElement(),AuthNetField.ELEMENT_SUBSCRIPTION_ID.getFieldName());
так что если вы называете это на вашем arbResult
переменная, вы можете стать ближе. Обратите внимание, что txn
должен быть заменен вашей переменной arbTransaction
,
Кроме того, вы можете покопаться в самом ответе, чтобы узнать, почему APK Authorize.net не возвращает правильный идентификатор подписки.
xml = arbTransaction.getCurrentResponse().dump(true);
true
определяет, свернуто ли дерево XML. xml
должна быть строка, содержащая ваш ответ XML от authorize.net