2017-01-28 2 views
2

私はBraintreeと混乱しています。顧客がサイト上の特定のアイテムを注文すると、彼は彼のクレジットカードでBTに対して料金を請求し、この支払いをJavaクライアント経由で確認する必要があります。Java Braintree check transaction

Transaction transaction = gateway.transaction().find("the_transaction_id"); 

しかし私はorderIdで検索する必要があります。私のシステムが注文イベントごとに発行する特別なIDです。どのようにJava APIを使用してBTでそれを行うには?

答えて

2

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); 

私はあなたのような何かをしたい想像します