Braintree側でorderIdを永続化することは可能かもしれませんが、直接その上でルックアップを実行する方法はすぐにはわかりません。ここで
は、我々はそれを処理する方法は次のとおりです。
は、あなたが戻っブレインツリーから取得するトランザクションIDを使用して注文IDを持続します。チェックを行う必要がある場合は、orderIdを使用してテーブルを検索し、transactionIdを見つけて、同じfind()
メソッドを呼び出して支払いを見つけます。
//some paymentService
public Result<Transaction> sale(BigDecimal amount,
String nonce,
String firstName,
String lastName,
String postalCode) {
TransactionRequest request = new TransactionRequest()
.customer()
.firstName(firstName)
.lastName(lastName)
.done()
.billingAddress()
.firstName(firstName)
.lastName(lastName)
.postalCode(postalCode)
.done()
.type(Type.SALE)
.amount(amount)
.paymentMethodNonce(nonce)
.options()
.submitForSettlement(true)
.done();
return gateway.transaction().sale(request);
}
//and then...
Result<Transaction> result = paymentService.sale(amount, nonce, firstName, lastName, postalCode);
if (result.isSuccess()) {
Transaction transaction = result.getTarget();
String transactionId = transaction.getId(); //persist this ID and your orderId together in your DB
...
}
//when you need to find payment details, it'd be like:
Order order = someService.find(orderId);
PaymentHistory paymentHistory = order.getPaymentHistory();
String transactionId = paymentHistory.getTransactionId();
Transaction transaction = gateway.transaction().find(transactionId);
:
私はあなたのような何かをしたい想像します