Set Up Your Server
Install and configure
The SSL certificates for all Braintree SDKs are set to expire by June 31, 2025. This will impact existing versions of the SDK in published versions of your app. To reduce the impact, upgrade the Ruby SDK to version 4.23.0+ for the new SSL certificates.
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.
Requires Ruby 2.6 or later.
Add the braintree gem to your project's Gemfile:
- Ruby
gem "braintree", "~> 4.26.0"
And run bundle install to install it.
In your code, configure the environment and API credentials:
- Ruby
gateway = Braintree::Gateway.new(
:environment => :sandbox,
:merchant_id => "use_your_merchant_id",
:public_key => "use_your_public_key",
:private_key => "use_your_private_key",
)
See the Braintree Ruby Version Changelog.
Generate a client token
customer_id
when generating the client token lets returning customers select from previously used payment method options, improving user experience over multiple checkouts.- Ruby
# pass client_token to your front-end
@client_token = gateway.client_token.generate(
:customer_id => a_customer_id
)
If the customer can't be found, it will raise an ArgumentError
.
Set Up Your Client 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:
- Ruby
get "/client_token" do
gateway.client_token.generate
end
How the token is used by the client may vary. In JavaScript integrations the client token is often included in the generated HTML/JS, while in mobile apps the client token must be requested. These methods are discussed in the client token setup section.
Receive a payment method nonce from your client
Once your client successfully obtains a customer payment method, it receives a payment_method_nonce
representing customer payment authorization, which it then sends to your server.
Your server implementation is then responsible for receiving the payment_method_nonce
and using it appropriately.
- Ruby
post "/checkout" do
nonce_from_the_client = params[:payment_method_nonce]
# Use payment method nonce here...
end
Create a transaction
- Ruby
result = gateway.transaction.sale(
:amount => "10.00",
:payment_method_nonce => nonce_from_the_client,
:device_data => device_data_from_the_client,
:options => {
:submit_for_settlement => true
}
)
The sale call returns a Transaction Result Object which contains the transaction and information about the request.
Test your integration
Always develop and test your code against your sandbox account before processing live transactions against a production account.
Transition to production
At this point, you should be able to accept a payment method nonce and create a transaction in our sandbox. When you're ready to start charging real money, transition over to our production environment. We'll explain that process next.