Set Up Your Server

Choose an SDK preference:

Install and configure

Braintree provides an open-source JAR file to integrate with the Braintree gateway.

Download Java library

  • Version: 2.87.0
  • SHA256: 97fb6c77b5a9f5ed81682005e9c6a1723d972b53162ccce9bb91a53f13f0f8bf

Or use Maven

Maven is a build manager for Java.

Edit the pom.xml for your project, and in dependencies add:

<dependency>
  <groupId>com.braintreepayments.gateway</groupId>
  <artifactId>braintree-java</artifactId>
  <version>2.87.0</version>
</dependency>

The Java Client Library is published to The Maven Central Repository, so no additional repositories are required.

Construct your gateway object

In your code, you must first construct a gateway object with the environment-specific (sandbox or production) access token provided in your PayPal dashboard:

BraintreeGateway gateway = new BraintreeGateway(useYourAccessToken);

This must be called before performing any method (e.g. client token generation, authorizations, captures).

note

Keep in mind that the step to initialize the gateway using the Express Checkout integration is different than that used for a direct integration with Braintree.

Generate a client token

Your server is responsible for generating a client token, which contains all the authorization and configuration information your client needs to initialize the client SDK to communicate with Braintree. The client-side page covers the client side of the exchange.

Send a client token to your client

Here is an example of how your server would generate and expose a client token:

get(new Route("/client_token") {
  @Override
  public Object handle(Request request, Response response) {
    return gateway.clientToken().generate();
  }
});

How the token is used by the client may vary. In JavaScript integrations the client token is often included in the generated HTML/JS, although you could load the client token from an AJAX call instead. These methods are discussed in the client token setup section.

Receive a payment method nonce from your client

Once your customer has successfully completed the PayPal checkout flow your client will receive a paymentMethodNonce representing customer payment authorization, which it then sends to your server.

Your server implementation is then responsible for receiving the paymentMethodNonce and creating a transaction.

post(new Route("/checkout") {
  @Override
  public Object handle(Request request, Response response) {
    String nonce = request.queryParams("payment_method_nonce");
    // Use payment method nonce here
  }
});

Create a transaction

You can create a transaction using a paymentMethodNonce and an amount. Below is an example of all relevant PayPal parameters you can pass in your transaction call:

BraintreeGateway gateway = new BraintreeGateway(useYourAccessToken);

TransactionRequest request = new TransactionRequest()
  .amount(request.queryParams("amount"))
  .merchantAccountId("USD")
  .paymentMethodNonce(request.queryParams("paymentMethodNonce"))
  .orderId("Mapped to PayPal Invoice Number")
  .descriptor()
    .name("Descriptor displayed in customer CC statements. 22 char max")
    .done()
  .shippingAddress()
    .firstName("Jen")
    .lastName("Smith")
    .company("Braintree")
    .streetAddress("1 E 1st St")
    .extendedAddress("Suite 403")
    .locality("Bartlett")
    .region("IL")
    .postalCode("60103")
    .countryCodeAlpha2("US")
    .done()
  .options()
    .paypal()
      .customField("PayPal custom field")
      .description("Description for PayPal email receipt")
      .done()
    .storeInVaultOnSuccess(true)
    .done();

Result<Transaction> saleResult = gateway.transaction().sale(request);

if (result.isSuccess()) {
  Transaction transaction = result.getTarget();
  System.out.println("Success ID: " + transaction.getId());
} else {
  System.out.println("Message: " + result.getMessage());
}

Specify currency

The customer will be charged in the currency you specify in the merchantAccountId field on the transaction call. You should pass the same currency here that you specified on the client side.

important

If you don't pass the merchantAccountId field, the customer will be charged in the default currency for the country associated with your account.

The merchantAccountId field accepts the 3-letter currency code of each of the currencies currently enabled for your account. You can see these currencies on the My Apps & Credentials page in your PayPal Developer Dashboard.

Shipping addresses

PayPal validates the shipping address, so it must follow the PayPal address conventions.

Seller Protection

By passing a shipping address, you may also be eligible for PayPal Seller Protection. You can check the status of Seller Protection as follows:

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

transaction.getPayPalDetails().getSellerProtectionStatus();
// "ELIGIBLE"

See also

The below are links to reference pages used by merchants performing direct integrations with Braintree. If you have questions about your Express Checkout integration, please be sure to contact PayPal Support rather than Braintree Support.

Next Page: Testing and Go Live →

Still Have Questions?

Browse our support options or submit a question to our technical support team.

Feedback