From 7bf95efca19bd87b5cadbe06dc39f20e99f800ed Mon Sep 17 00:00:00 2001 From: Anirudh Umarji Date: Thu, 26 Mar 2026 20:44:50 -0400 Subject: [PATCH 1/2] advanced-search transactions: support venmoUsername search --- CHANGELOG.md | 3 ++ .../TransactionSearchRequest.java | 4 +++ .../integrationtest/TransactionIT.java | 30 +++++++++++++++++++ 3 files changed, 37 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1d998205..c7d87a1f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Changelog +## unreleased +* Add support to search by 'venmoUsername' in advanced search for transactions + ## 3.48.0 * Add `acceptPartialAuthorization` in `TransactionRequest` and `partiallyAuthorized` in `Transaction` * Deprecate transactions for `visa_checkout_card` and maintain search functionality diff --git a/src/main/java/com/braintreegateway/TransactionSearchRequest.java b/src/main/java/com/braintreegateway/TransactionSearchRequest.java index f8561821..3fbdbcdc 100644 --- a/src/main/java/com/braintreegateway/TransactionSearchRequest.java +++ b/src/main/java/com/braintreegateway/TransactionSearchRequest.java @@ -125,6 +125,10 @@ public TextNode paypalAuthorizationId() { return textNode("paypal_authorization_id"); } + public TextNode venmoUsername() { + return textNode("venmo_username"); + } + public TextNode processorAuthorizationCode() { return textNode("processor_authorization_code"); } diff --git a/src/test/java/com/braintreegateway/integrationtest/TransactionIT.java b/src/test/java/com/braintreegateway/integrationtest/TransactionIT.java index 582b1b66..f0eb0700 100644 --- a/src/test/java/com/braintreegateway/integrationtest/TransactionIT.java +++ b/src/test/java/com/braintreegateway/integrationtest/TransactionIT.java @@ -5354,6 +5354,36 @@ public void searchOnAllTextFields() { assertEquals(transaction.getId(), collection.getFirst().getId()); } + @Test + public void searchOnVenmoUsername() { + TransactionRequest request = new TransactionRequest() + .merchantAccountId(FAKE_VENMO_ACCOUNT_MERCHANT_ACCOUNT_ID) + .amount(SandboxValues.TransactionAmount.AUTHORIZE.amount) + .paymentMethodNonce(Nonce.VenmoAccount); + + Result result = gateway.transaction().sale(request); + assertTrue(result.isSuccess()); + + Transaction transaction = result.getTarget(); + String venmoUsername = transaction.getVenmoAccountDetails().getUsername(); + assertNotNull(venmoUsername); + + TransactionSearchRequest matchingSearchRequest = new TransactionSearchRequest() + .id().is(transaction.getId()) + .venmoUsername().is(venmoUsername); + + ResourceCollection matchingCollection = gateway.transaction().search(matchingSearchRequest); + assertEquals(1, matchingCollection.getMaximumSize()); + assertEquals(transaction.getId(), matchingCollection.getFirst().getId()); + + TransactionSearchRequest nonMatchingSearchRequest = new TransactionSearchRequest() + .id().is(transaction.getId()) + .venmoUsername().is(venmoUsername + "-does-not-match"); + + ResourceCollection nonMatchingCollection = gateway.transaction().search(nonMatchingSearchRequest); + assertEquals(0, nonMatchingCollection.getMaximumSize()); + } + @Test public void searchWithCreditCardNumberStartsWithEndsWith() { String creditCardToken = String.valueOf(new Random().nextInt()); From 6d629bcd30f364da41c869f98fc69307465c6e42 Mon Sep 17 00:00:00 2001 From: Anirudh Umarji Date: Thu, 26 Mar 2026 20:58:27 -0400 Subject: [PATCH 2/2] chore: methods should be alphabetized --- .../com/braintreegateway/TransactionSearchRequest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/braintreegateway/TransactionSearchRequest.java b/src/main/java/com/braintreegateway/TransactionSearchRequest.java index 3fbdbcdc..e4e884d8 100644 --- a/src/main/java/com/braintreegateway/TransactionSearchRequest.java +++ b/src/main/java/com/braintreegateway/TransactionSearchRequest.java @@ -125,10 +125,6 @@ public TextNode paypalAuthorizationId() { return textNode("paypal_authorization_id"); } - public TextNode venmoUsername() { - return textNode("venmo_username"); - } - public TextNode processorAuthorizationCode() { return textNode("processor_authorization_code"); } @@ -177,6 +173,10 @@ public TextNode shippingStreetAddress() { return textNode("shipping_street_address"); } + public TextNode venmoUsername() { + return textNode("venmo_username"); + } + public MultipleValueNode paymentInstrumentType() { return multiTypeNode("payment_instrument_type"); }