Skip to content

braintree/braintree_android

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Braintree Android SDK

GitHub Actions Tests Instrumentation tests

Welcome to Braintree's Android SDK. This library will help you accept card and alternative payments in your Android app.

📣  A new major version of the SDK is now available. See the v5 migration guide for details.

The Braintree SDK supports Android API 23 and above.

The Braintree SDK requires Java 11 and uses Kotlin 1.9.10.

📣 Announcements

Upgrade your integration to continue accepting Braintree payments The SSL certificates for the Android SDK are set to expire by March 30, 2026. Upgrade to v4.45.0+ or v5.0.0+ to continue processing payments using the Braintree SDK. Click here for more details

Adding It To Your Project

The features of the Braintree SDK are organized into modules that can be imported as dependencies in your build.gradle file. See the Migration Guide for specific dependencies required for each module.

For an integration offering card payments, add the following dependency in your build.gradle:

dependencies {
    implementation 'com.braintreepayments.api:card:5.20.0'
}

To preview the latest work in progress builds, add the following SNAPSHOT dependency in your build.gradle:

dependencies {
    implementation 'com.braintreepayments.api:card:5.0.0-beta2-SNAPSHOT'
}

You will also need to add the Sonatype snapshots repo to your top-level build.gradle to import SNAPSHOT builds:

allprojects {
    repositories {
        maven {
            url 'https://oss.sonatype.org/content/repositories/snapshots/'
        }
    }
}

Documentation

Start with 'Hello, Client!' for instructions on basic setup and usage.

Next, read the full documentation for information about integration options, such as Drop-In UI, PayPal and credit card tokenization.

Upgrade Your SDK Version

We always recommend updating to the latest version of the SDK which can be found in our CHANGELOG.

For major version upgrades, feel free to check out the MIGRATION GUIDE.

For more details on how to add and managed build dependencies, see the Android Developer Guidelines.

Versions

This SDK abides by our Client SDK Deprecation Policy. For more information on the potential statuses of an SDK check our developer docs.

Major version number Status Released Deprecated Unsupported
5.x.x Active October 2024 TBA TBA
4.x.x Deprecated June 2021 October 2025 October 2026
3.x.x Unsupported February 2019 June 2022 June 2023
2.x.x Unsupported November 2015 March 2020 March 2021

Versions 3.x.x and below are unsupported.

Payment Buttons

The Braintree Android SDK now allows merchants to draw and render both PayPal and Venmo payment buttons using a discrete set of parameters. The SDK will handle the loading and disable state of the button and allow you to display and offer buttons meeting the current brand guidelines versus maintaining responsibility on your own. We will call the tokenize methods with your request and allow you a seamless branded experience in your mobile apps.

Note: Ensure you include the UIComponents module in your project to use this feature.

If you would like to draw a PayPal branded button in your mobile app, you can do so like this:

<com.braintreepayments.api.uicomponents.PayPalButton
    android:id="@+id/payPalButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    custom:buttonColor="blue" />
class ExampleFragment : Fragment() {
    private lateinit var payPalButton: PayPalButton
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        payPalButton = view.findViewById<PayPalButton>(R.id.payPalButton)
        payPalButton.initialize(
            activityResultCaller = this,
            authorization = "[TOKENIZATION_KEY or CLIENT_TOKEN]",
            appLinkReturnUrl = Uri.parse("https://merchant-app.com"),
            deepLinkFallbackUrlScheme = "com.merchant.app.payments"
        )
        payPalButton.updatePayPalRequest(PayPalRequest(...))
        paypalButton.setLaunchCallback = { launchResult ->
            when (launchResult) {
                is PayPalPendingRequest.Started-> {
                    // store pending request to disk
                }
                is PayPalPendingRequest.Failure -> {
                    // handle error
                }
            }
        }
    }
    
    override fun onResume() {
        super.onResume()
        val pendingRequest = fetchPendingRequest()
        if (pendingRequest != null) {
            payPalButton.handleReturnToApp(pendingRequest, intent) { payPalResult ->
                when (payPalResult) {
                    is PayPalResult.Success -> {
                        // handle success
                    }
                    is PayPalResult.Failure -> {
                        // handle failure
                    }
                    is PayPalResult.Cancel -> {
                        // handle canceled
                    }
                }
            }
        }
        // clear pending request
    }
}

Similarly, if you would like to draw a Venmo branded button in your mobile app, you can do so like this:

<com.braintreepayments.api.uicomponents.VenmoButton
    android:id="@+id/venmoButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    custom:buttonColor="blue" />
class ExampleFragment : Fragment() {
    private lateinit var venmoButton: VenmoButton
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        venmoButton = view.findViewById<VenmoButton>(R.id.venmoButton)
        venmoButton.initialize(
            activityResultCaller = this,
            authorization = "[TOKENIZATION_KEY or CLIENT_TOKEN]",
            appLinkReturnUrl = Uri.parse("https://merchant-app.com"),
            deepLinkFallbackUrlScheme = "com.merchant.app.payments"
        )
        venmoButton.setVenmoRequest(VenmoRequest(...))
        venmoButton.setLaunchCallback = { launchResult ->
            when (launchResult) {
                is  VenmoPendingRequest.Started-> {
                    // store pending request to disk
                }
                is VenmoPendingRequest.Failure -> {
                    // handle error
                }
            }
        }
    }
    
    override fun onResume() {
        super.onResume()
        val pendingRequest = fetchPendingRequest()
        if (pendingRequest != null) {
            venmoButton.handleReturnToApp(pendingRequest, intent) { payPalResult ->
                when (payPalResult) {
                    is VenmoResult.Success -> {
                        // handle success
                    }
                    is VenmoResult.Failure -> {
                        // handle failure
                    }
                    is VenmoResult.Cancel -> {
                        // handle canceled
                    }
                }
            }
        }
        // clear pending request
    }
}

Help

Feedback

The Braintree Android SDK is in active development. We welcome your feedback!

Here are a few ways to get in touch:

License

The Braintree Android SDK is open source and available under the MIT license. See the LICENSE file for more info.