Payment Methods

A payment method represents transactable payment information such as credit card details or a customer's authorization to charge a PayPal or Venmo account. Payment methods belong to a customer, are securely stored in the Braintree Vault, and have a getPaymentMethodToken() attribute that you can persist on your servers (with reduced PCI compliance burden) and later use to create transactions.

Create

Use PaymentMethod.create() to create a payment method for an existing customer:

PaymentMethodRequest request = new PaymentMethodRequest()
    .customerId("131866"))
    .paymentMethodNonce("nonce-from-the-client");

Result<PaymentMethod> result = gateway.paymentMethod().create(request);
Java

Alternatively, you can create a new customer with a payment method using Customer.create() with the paymentMethodNonce() parameter.

Once successfully created, you can use Transaction.sale() with the paymentMethodToken() parameter to create a transaction.

Credit card verification

If the payment method is a credit card, you can use options().verifyCard() to ensure that Braintree attempts to verify that the credit card number matches a valid, open account.

PaymentMethodRequest request = new PaymentMethodRequest()
  .customerId("the_customer_id")
  .paymentMethodNonce("nonce-from-the-client")
  .options()
  .verifyCard(true)
  .verificationMerchantAccountId("the_merchant_account_id")
  .done();

Result<PaymentMethod> result = gateway.paymentMethod().create(request);
Java

If you wish to always run verification regardless of the presence of verifyCard, you can turn on card verification in the Control Panel.

Card verification can be performed through the customer API or the credit card API. See also:

Update

Use PaymentMethod.update() to update an existing payment method.

Make default

Use the makeDefault option to set a payment method as the default for its customer:

PaymentMethodRequest updateRequest = new PaymentMethodRequest()
    .options()
      .makeDefault(true)
    .done();

Result<PaymentMethod> result = gateway.paymentMethod().update("the_token", updateRequest);
Java

Billing address

Update the billing address:

PaymentMethodRequest updateRequest = new PaymentMethodRequest()
    .billingAddress()
        .streetAddress("100 Maple Lane")
        .options()
            .updateExisting(true)
            .done()
        .done();

Result<PaymentMethod> result = gateway.paymentMethod().update("the_token", updateRequest);
Java

You can also omit the updateExisting option to create a new billing address for just this payment method.

See the reference and more examples of updating a payment method. If you want to update both payment method and customer information together, use Customer.update().

Find

Use PaymentMethod.find() to find a payment method:

PaymentMethod paymentMethod = gateway.paymentMethod().find("the_token");
Java

If the payment method cannot be found, it will throw a NotFoundException.

Delete

Use PaymentMethod.delete() to delete a payment method:

gateway.paymentMethod().delete("the_token");
Java