Class: ActiveMerchant::Billing::BraintreeBlueGateway
- Includes:
- BraintreeCommon
- Defined in:
- lib/active_merchant/billing/gateways/braintree_blue.rb
Overview
For more information on the Braintree Gateway please visit their Developer Portal
About this implementation
This implementation leverages the Braintree-authored ruby gem: github.com/braintree/braintree_ruby
Debugging Information
Setting an ActiveMerchant wiredump_device will automatically configure the Braintree logger (via the Braintree gem’s configuration) when the BraintreeBlueGateway is instantiated. Additionally, the log level will be set to DEBUG. Therefore, all you have to do is set the wiredump_device and you’ll get your debug output from your HTTP interactions with the remote gateway. (Don’t enable this in production.) The ActiveMerchant implementation doesn’t mess with the Braintree::Configuration globals at all, so there won’t be any side effects outside Active Merchant.
If no wiredump_device is set, the logger in Braintree::Configuration.logger will be cloned and the log level set to WARN.
Constant Summary
Constants inherited from Gateway
Gateway::CREDIT_DEPRECATION_MESSAGE, Gateway::CURRENCIES_WITHOUT_FRACTIONS, Gateway::DEBIT_CARDS
Instance Attribute Summary
Attributes inherited from Gateway
Instance Method Summary collapse
- #authorize(money, credit_card_or_vault_id, options = {}) ⇒ Object
- #capture(money, authorization, options = {}) ⇒ Object
- #credit(money, credit_card_or_vault_id, options = {}) ⇒ Object
-
#initialize(options = {}) ⇒ BraintreeBlueGateway
constructor
A new instance of BraintreeBlueGateway.
- #purchase(money, credit_card_or_vault_id, options = {}) ⇒ Object
- #refund(*args) ⇒ Object
- #store(creditcard, options = {}) ⇒ Object
- #unstore(customer_vault_id, options = {}) ⇒ Object (also: #delete)
- #update(vault_id, creditcard, options = {}) ⇒ Object
- #void(authorization, options = {}) ⇒ Object
Methods included from BraintreeCommon
Methods inherited from Gateway
#card_brand, card_brand, inherited, supports?, #test?
Methods included from CreditCardFormatting
Constructor Details
#initialize(options = {}) ⇒ BraintreeBlueGateway
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/active_merchant/billing/gateways/braintree_blue.rb', line 43 def initialize( = {}) requires!(, :merchant_id, :public_key, :private_key) @merchant_account_id = [:merchant_account_id] super if wiredump_device logger = ((Logger === wiredump_device) ? wiredump_device : Logger.new(wiredump_device)) logger.level = Logger::DEBUG else logger = Braintree::Configuration.logger.clone logger.level = Logger::WARN end @configuration = Braintree::Configuration.new( :merchant_id => [:merchant_id], :public_key => [:public_key], :private_key => [:private_key], :environment => ([:environment] || (test? ? :sandbox : :production)).to_sym, :custom_user_agent => "ActiveMerchant #{ActiveMerchant::VERSION}", :logger => logger, ) @braintree_gateway = Braintree::Gateway.new( @configuration ) end |
Instance Method Details
#authorize(money, credit_card_or_vault_id, options = {}) ⇒ Object
69 70 71 |
# File 'lib/active_merchant/billing/gateways/braintree_blue.rb', line 69 def (money, credit_card_or_vault_id, = {}) create_transaction(:sale, money, credit_card_or_vault_id, ) end |
#capture(money, authorization, options = {}) ⇒ Object
73 74 75 76 77 78 |
# File 'lib/active_merchant/billing/gateways/braintree_blue.rb', line 73 def capture(money, , = {}) commit do result = @braintree_gateway.transaction.submit_for_settlement(, amount(money).to_s) Response.new(result.success?, (result)) end end |
#credit(money, credit_card_or_vault_id, options = {}) ⇒ Object
84 85 86 |
# File 'lib/active_merchant/billing/gateways/braintree_blue.rb', line 84 def credit(money, credit_card_or_vault_id, = {}) create_transaction(:credit, money, credit_card_or_vault_id, ) end |
#purchase(money, credit_card_or_vault_id, options = {}) ⇒ Object
80 81 82 |
# File 'lib/active_merchant/billing/gateways/braintree_blue.rb', line 80 def purchase(money, credit_card_or_vault_id, = {}) (money, credit_card_or_vault_id, .merge(:submit_for_settlement => true)) end |
#refund(*args) ⇒ Object
88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/active_merchant/billing/gateways/braintree_blue.rb', line 88 def refund(*args) # legacy signature: #refund(transaction_id, options = {}) # new signature: #refund(money, transaction_id, options = {}) money, transaction_id, _ = extract_refund_args(args) money = amount(money).to_s if money commit do result = @braintree_gateway.transaction.refund(transaction_id, money) Response.new(result.success?, (result), {:braintree_transaction => (transaction_hash(result.transaction) if result.success?)}, {:authorization => (result.transaction.id if result.success?)} ) end end |
#store(creditcard, options = {}) ⇒ Object
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
# File 'lib/active_merchant/billing/gateways/braintree_blue.rb', line 113 def store(creditcard, = {}) if [:customer].present? MultiResponse.new.tap do |r| customer_exists_response = nil r.process{customer_exists_response = check_customer_exists([:customer])} r.process do if customer_exists_response.params["exists"] add_credit_card_to_customer(creditcard, ) else add_customer_with_credit_card(creditcard, ) end end end else add_customer_with_credit_card(creditcard, ) end end |
#unstore(customer_vault_id, options = {}) ⇒ Object Also known as: delete
160 161 162 163 164 165 166 167 168 169 |
# File 'lib/active_merchant/billing/gateways/braintree_blue.rb', line 160 def unstore(customer_vault_id, = {}) commit do if(!customer_vault_id && [:credit_card_token]) @braintree_gateway.credit_card.delete([:credit_card_token]) else @braintree_gateway.customer.delete(customer_vault_id) end Response.new(true, "OK") end end |
#update(vault_id, creditcard, options = {}) ⇒ Object
131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 |
# File 'lib/active_merchant/billing/gateways/braintree_blue.rb', line 131 def update(vault_id, creditcard, = {}) braintree_credit_card = nil commit do braintree_credit_card = @braintree_gateway.customer.find(vault_id).credit_cards.detect { |cc| cc.default? } return Response.new(false, 'Braintree::NotFoundError') if braintree_credit_card.nil? .merge!(:update_existing_token => braintree_credit_card.token) credit_card_params = ({ :credit_card => { :number => creditcard.number, :cvv => creditcard.verification_value, :expiration_month => creditcard.month.to_s.rjust(2, "0"), :expiration_year => creditcard.year.to_s } }, )[:credit_card] result = @braintree_gateway.customer.update(vault_id, :first_name => creditcard.first_name, :last_name => creditcard.last_name, :email => scrub_email([:email]), :credit_card => credit_card_params ) Response.new(result.success?, (result), :braintree_customer => (customer_hash(@braintree_gateway.customer.find(vault_id), :include_credit_cards) if result.success?), :customer_vault_id => (result.customer.id if result.success?) ) end end |
#void(authorization, options = {}) ⇒ Object
103 104 105 106 107 108 109 110 111 |
# File 'lib/active_merchant/billing/gateways/braintree_blue.rb', line 103 def void(, = {}) commit do result = @braintree_gateway.transaction.void() Response.new(result.success?, (result), {:braintree_transaction => (transaction_hash(result.transaction) if result.success?)}, {:authorization => (result.transaction.id if result.success?)} ) end end |