Giter VIP home page Giter VIP logo

braintree-android-drop-in's Introduction

Braintree Android Drop-In

Build Status

Braintree Android Drop-In is a readymade UI that allows you to accept card and alternative payments in your Android app.

Screenshot of Drop-In

Adding it to your project

Add the dependency in your build.gradle:

dependencies {
  implementation 'com.braintreepayments.api:drop-in:5.2.1'
}

To use the latest build from the master branch use:

dependencies {
  implementation 'com.braintreepayments.api:drop-in:5.2.2-SNAPSHOT'
}

Usage

Create a DropInRequest and use the Intent to start Drop-In:

DropInRequest dropInRequest = new DropInRequest()
    .clientToken(mClientToken);
startActivityForResult(dropInRequest.getIntent(context), DROP_IN_REQUEST);

Handle the response:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == DROP_IN_REQUEST) {
        if (resultCode == RESULT_OK) {
            DropInResult result = data.getParcelableExtra(DropInResult.EXTRA_DROP_IN_RESULT);
            String paymentMethodNonce = result.getPaymentMethodNonce().getNonce();
            // send paymentMethodNonce to your server
        } else if (resultCode == RESULT_CANCELED) {
            // canceled
        } else {
            // an error occurred, checked the returned exception
            Exception exception = (Exception) data.getSerializableExtra(DropInActivity.EXTRA_ERROR);
        }
    }
}

Localization

Drop-In is currently localized for 23 languages. To view localized text for a specific locale, open its corresponding values-<LOCALE_NAME>/strings.xml resource file.

3D Secure + Drop-in

The new Drop-In supports 3D-Secure verification. Assuming you have 3D-Secure configured for your account, enable it in your client with DropInRequest.requestThreeDSecureVerification(true) and set an amount. Then, create a ThreeDSecureRequest() object, setting ThreeDSecurePostalAddress and ThreeDSecureAdditionalInformation fields where possible; the more fields that are set, the less likely a user will be presented with a challenge. For more information, check our 3D Secure Migration Guide. Make sure to attach this object to the BTDropInRequest before use.

ThreeDSecurePostalAddress billingAddress = new ThreeDSecurePostalAddress()
    .givenName("Jill")
    .surname("Doe")
    .phoneNumber("5551234567")
    .streetAddress("555 Smith St")
    .extendedAddress("#2")
    .locality("Chicago")
    .region("IL")
    .postalCode("12345")
    .countryCodeAlpha2("US");

ThreeDSecureRequest threeDSecureRequest = new ThreeDSecureRequest()
    .amount("1.00")
    .versionRequested(ThreeDSecureRequest.VERSION_2)
    .email("[email protected]")
    .mobilePhoneNumber("3125551234")
    .billingAddress(billingAddress)
    .additionalInformation(additionalInformation);


// Optional additional information.
// For best results, provide as many of these elements as possible.
ThreeDSecureAdditionalInformation additionalInformation = new ThreeDSecureAdditionalInformation()
    .accountId("account-id");

DropInRequest dropInRequest = new DropInRequest()
    .clientToken(mAuthorization)
    .requestThreeDSecureVerification(true)
    .threeDSecureRequest(threedSecureRequest);

Fetch last used payment method

If your user already has an existing payment method, you may not need to show Drop-In. You can check if they have an existing payment method using DropInResult#fetchDropInResult. Note that a payment method will only be returned when using a client token created with a customer_id.

DropInResult.fetchDropInResult(activity, clientToken, new DropInResult.DropInResultListener() {
    @Override
    public void onError(Exception exception) {
        // an error occurred
    }

    @Override
    public void onResult(DropInResult result) {
        if (result.getPaymentMethodType() != null) {
            // use the icon and name to show in your UI
            int icon = result.getPaymentMethodType().getDrawable();
            int name = result.getPaymentMethodType().getLocalizedName();

            if (result.getPaymentMethodType() == PaymentMethodType.GOOGLE_PAY) {
                // The last payment method the user used was GooglePayment. The GooglePayment
                // flow will need to be performed by the user again at the time of checkout
                // using GooglePayment#requestPayment(...). No PaymentMethodNonce will be
                // present in result.getPaymentMethodNonce(), this is only an indication that
                // the user last used GooglePayment.
            } else {
                // show the payment method in your UI and charge the user at the
                // time of checkout using the nonce: paymentMethod.getNonce()
                PaymentMethodNonce paymentMethod = result.getPaymentMethodNonce();
            }
        } else {
            // there was no existing payment method
        }
    }
});

Help

Feedback

Here are a few ways to get in touch:

License

Braintree Android Drop-In is open source and available under the MIT license. See the LICENSE file for more info.

braintree-android-drop-in's People

Contributors

bblackbelt avatar billwerges avatar braintreeps avatar cooperbarth avatar demerino avatar epreuve avatar hollabaq86 avatar jackellenberger avatar lkorth avatar quinnjn avatar sarahkoop avatar scannillo avatar sestevens avatar sshropshire avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.