1

新しい 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();
}

新しい ARB サブスクリプション ID を取得する正しい方法ではない場合getResultSubscriptionId()、使用する正しい方法は何ですか?

4

2 に答える 2

0

ソース コードによると、正しい方法を使用しています。

呼び出しをコードに戻すと、net.authorize.arb.Result の importResponseMessages() で次の呼び出しによってサブスクリプション ID が設定されることがわかります。

getElementText(txn.getCurrentResponse().getDocumentElement(),AuthNetField.ELEMENT_SUBSCRIPTION_ID.getFieldName());

したがって、これをarbResult変数で呼び出すと、さらに近づく可能性があります。txnvariable に置き換える必要があることに注意してくださいarbTransaction

または、応答自体を調べて、Authorize.net APK が正しいサブスクリプション ID を返さない理由を確認することもできます。

xml = arbTransaction.getCurrentResponse().dump(true);

true、XML ツリーが折りたたまれているかどうかを決定します。xmlauthorize.net からの XML 応答を含む文字列にする必要があります。

于 2013-03-29T02:15:13.967 に答える
0

私はサンプル コードとそのコミュニティを調べましたが、先に進むことはあまりありません。私が試してみることができる唯一のことは、変更することです:

arbResult.getResultSubscriptionId();

に:

arbTransaction.getResultSubscriptionId();

それは論理的に聞こえないことはわかっていますが、私ができる最善のことです。

于 2013-02-21T00:01:02.967 に答える