Braintree 측에서 orderId를 유지할 수는 있지만 직접 조회를 수행하는 방법을 쉽게 볼 수 없습니다. 여기
우리가 그것을 처리하는 방법은 다음과 같습니다
가 다시 브레인 트리에서 벗어나 트랜잭션 ID로 ORDERID를 지속. 수표를 발행해야하는 경우 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);
:
난 당신이 뭔가를 할 거라고 상상하는 것