Set Up Your Client
If you do not decommission your app versions that include the older SDK versions or force upgrade your app with the updated certificates by the expiration date, 100% of your customer traffic will fail.
Android SDK setup
In your app's build.gradle
, add the following:
- Kotlin
- Groovy
dependencies {
implementation("com.braintreepayments.api:drop-in:6.13.0")
}
For other installation techniques and notes, see theAndroid Client SDK Guide.
Get a client token
Client tokens are optional: You can initialize Braintree with atokenization key instead of aclient token. If you are using a tokenization key, you may skip this section anduse the tokenization key for your authorization instead.
Your server is responsible for generating a client token, which contains the authorization and configuration details that your client needs to initialize the client SDK.
Initialize Braintree with aClientTokenProvider
to asychronously fetch a client token on your behalf when it is needed in the SDK.
Try it now
So you can jump right in we generated atokenization key for you. This is for testing purposes only! When you're ready to build your own integration, use your own tokenization key or generate your own client token.
- Java
- Kotlin
public class MyActivity extends AppCompatActivity implements DropInListener {
private DropInClient dropInClient;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
dropInClient = new DropInClient(this, dropInRequest, "sandbox_f252zhq7_hh4cpc39zq4rgjcg");
dropInClient.setListener(this);
}
}
Present Drop-in UI
At this point, you are ready to collect payment information from your customer.
Drop-in is the easiest way to get started. It provides a fully fledged payments experience out of the box. You can also choose to create a custom UI and then tokenize the payment information directly.
- Java
- Kotlin
public void onBraintreeSubmit(View v) {
DropInRequest dropInRequest = new DropInRequest();
dropInClient.launchDropInForResult(this, DROPIN_REQUEST_CODE);
}
To handle the result of the Drop-in flow, implement a DropInListener
:
- Java
- Kotlin
public class MyActivity extends AppCompatActivity implements DropInListener {
@Override
public void onDropInSuccess(@NonNull DropInResult dropInResult) {
// send dropInResult.getPaymentMethodNonce().getString() to server
}
@Override
public void onDropInFailure(@NonNull Exception error) {
if (error instanceof UserCanceledException) {
// user canceled
} else {
// handle error
}
}
}
Test your integration
Create a sandbox account
If you haven't already, sign up for a free Braintree sandbox account:
Sign Up for a Braintree Sandbox Account
Log in to obtain your sandbox API credentials. You'll need your:
- Sandbox merchant ID
- Public key
- Private key
Use these credentials for your development and testing.
Test values
When testing in the sandbox, be sure to use our test card numbers (e.g.4111111111111111
) and nonces (e.g. fake-valid-nonce
). Real payment method data will not work in the sandbox. See our Testing page for more details.
Send payment method nonce to server
Send the resulting payment method nonce to your server (this example uses Android Async Http Client - adapt to your own setup):
- Android
void postNonceToServer(String nonce) {
AsyncHttpClient client = new AsyncHttpClient();
RequestParams params = new RequestParams();
params.put("payment_method_nonce", nonce);
client.post("http://your-server/checkout", params, new AsyncHttpResponseHandler() {
// Your implementation here
});
}
world.greeted = true
At this point, you should have a working client-side checkout flow. When your user provides payment information, you receive a payment method nonce and send it to your server.
Next, your server closes the loop by using the payment method nonce to create a transaction.