braintree 2.31.0 → 2.32.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +2 -2
- data/lib/braintree.rb +12 -0
- data/lib/braintree/client_token.rb +5 -0
- data/lib/braintree/client_token_gateway.rb +2 -1
- data/lib/braintree/configuration.rb +1 -1
- data/lib/braintree/credit_card.rb +1 -1
- data/lib/braintree/credit_card_gateway.rb +3 -3
- data/lib/braintree/customer.rb +18 -4
- data/lib/braintree/customer_gateway.rb +2 -2
- data/lib/braintree/customer_search.rb +1 -0
- data/lib/braintree/error_codes.rb +81 -14
- data/lib/braintree/exceptions.rb +2 -0
- data/lib/braintree/gateway.rb +16 -0
- data/lib/braintree/payment_instrument_type.rb +7 -0
- data/lib/braintree/payment_method.rb +17 -0
- data/lib/braintree/payment_method_gateway.rb +58 -0
- data/lib/braintree/paypal_account.rb +47 -0
- data/lib/braintree/paypal_account_gateway.rb +41 -0
- data/lib/braintree/sepa_bank_account.rb +34 -0
- data/lib/braintree/sepa_bank_account_gateway.rb +16 -0
- data/lib/braintree/successful_result.rb +1 -1
- data/lib/braintree/test/nonce.rb +10 -0
- data/lib/braintree/test_transaction.rb +15 -0
- data/lib/braintree/testing_gateway.rb +35 -0
- data/lib/braintree/transaction.rb +6 -0
- data/lib/braintree/transaction/paypal_details.rb +14 -0
- data/lib/braintree/transaction_gateway.rb +3 -1
- data/lib/braintree/transaction_search.rb +4 -0
- data/lib/braintree/unknown_payment_method.rb +20 -0
- data/lib/braintree/version.rb +2 -2
- data/lib/braintree/webhook_testing_gateway.rb +1 -1
- data/spec/integration/braintree/client_api/client_token_spec.rb +80 -17
- data/spec/integration/braintree/client_api/spec_helper.rb +93 -10
- data/spec/integration/braintree/credit_card_spec.rb +28 -27
- data/spec/integration/braintree/customer_search_spec.rb +23 -0
- data/spec/integration/braintree/customer_spec.rb +83 -1
- data/spec/integration/braintree/payment_method_spec.rb +315 -0
- data/spec/integration/braintree/paypal_account_spec.rb +188 -0
- data/spec/integration/braintree/subscription_spec.rb +50 -20
- data/spec/integration/braintree/test_transaction_spec.rb +104 -0
- data/spec/integration/braintree/transaction_search_spec.rb +60 -0
- data/spec/integration/braintree/transaction_spec.rb +583 -8
- data/spec/integration/spec_helper.rb +22 -0
- data/spec/spec_helper.rb +8 -2
- data/spec/unit/braintree/customer_spec.rb +24 -4
- data/spec/unit/braintree/payment_method_spec.rb +25 -0
- data/spec/unit/braintree/paypal_account_spec.rb +31 -0
- data/spec/unit/braintree/unknown_payment_method_spec.rb +29 -0
- metadata +141 -120
- checksums.yaml +0 -7
- data/spec/httpsd.pid +0 -1
data/README.rdoc
CHANGED
@@ -45,7 +45,7 @@ Example of using non-bang method:
|
|
45
45
|
|
46
46
|
result = Braintree::Customer.create(:first_name => "Josh")
|
47
47
|
if result.success?
|
48
|
-
puts "Created customer #{result.customer.id}
|
48
|
+
puts "Created customer #{result.customer.id}"
|
49
49
|
else
|
50
50
|
puts "Validations failed"
|
51
51
|
result.errors.for(:customer).each do |error|
|
@@ -57,7 +57,7 @@ Example of using bang method:
|
|
57
57
|
|
58
58
|
begin
|
59
59
|
customer = Braintree::Customer.create!(:first_name => "Josh")
|
60
|
-
puts "Created customer #{customer.id}
|
60
|
+
puts "Created customer #{customer.id}"
|
61
61
|
rescue Braintree::ValidationsFailed
|
62
62
|
puts "Validations failed"
|
63
63
|
end
|
data/lib/braintree.rb
CHANGED
@@ -53,11 +53,18 @@ require "braintree/merchant_account/individual_details"
|
|
53
53
|
require "braintree/merchant_account/business_details"
|
54
54
|
require "braintree/merchant_account/funding_details"
|
55
55
|
require "braintree/merchant_account/address_details"
|
56
|
+
require "braintree/payment_instrument_type"
|
57
|
+
require "braintree/payment_method"
|
58
|
+
require "braintree/payment_method_gateway"
|
59
|
+
require "braintree/paypal_account"
|
60
|
+
require "braintree/paypal_account_gateway"
|
56
61
|
require "braintree/plan"
|
57
62
|
require "braintree/plan_gateway"
|
58
63
|
require "braintree/settlement_batch_summary"
|
59
64
|
require "braintree/settlement_batch_summary_gateway"
|
60
65
|
require "braintree/resource_collection"
|
66
|
+
require "braintree/sepa_bank_account"
|
67
|
+
require "braintree/sepa_bank_account_gateway"
|
61
68
|
require "braintree/sha256_digest"
|
62
69
|
require "braintree/signature_service"
|
63
70
|
require "braintree/subscription"
|
@@ -67,16 +74,21 @@ require "braintree/successful_result"
|
|
67
74
|
require "braintree/test/credit_card"
|
68
75
|
require "braintree/test/merchant_account"
|
69
76
|
require "braintree/test/venmo_sdk"
|
77
|
+
require "braintree/test/nonce"
|
70
78
|
require "braintree/test/transaction_amounts"
|
79
|
+
require "braintree/testing_gateway"
|
71
80
|
require "braintree/transaction"
|
81
|
+
require "braintree/test_transaction"
|
72
82
|
require "braintree/transaction/address_details"
|
73
83
|
require "braintree/transaction/credit_card_details"
|
74
84
|
require "braintree/transaction/customer_details"
|
75
85
|
require "braintree/transaction/disbursement_details"
|
86
|
+
require "braintree/transaction/paypal_details"
|
76
87
|
require "braintree/transaction/subscription_details"
|
77
88
|
require "braintree/transaction_gateway"
|
78
89
|
require "braintree/transaction_search"
|
79
90
|
require "braintree/transaction/status_details"
|
91
|
+
require "braintree/unknown_payment_method"
|
80
92
|
require "braintree/disbursement"
|
81
93
|
require "braintree/transparent_redirect"
|
82
94
|
require "braintree/transparent_redirect_gateway"
|
@@ -22,7 +22,8 @@ module Braintree
|
|
22
22
|
|
23
23
|
def self._generate_signature # :nodoc:
|
24
24
|
[
|
25
|
-
:customer_id, :proxy_merchant_id,
|
25
|
+
:address_id, :customer_id, :proxy_merchant_id, :merchant_account_id,
|
26
|
+
:version, :sepa_mandate_acceptance_location, :sepa_mandate_type,
|
26
27
|
{:options => [:make_default, :verify_card, :fail_on_duplicate_payment_method]}
|
27
28
|
]
|
28
29
|
end
|
@@ -165,7 +165,7 @@ module Braintree
|
|
165
165
|
@gateway.credit_card.delete(token)
|
166
166
|
end
|
167
167
|
|
168
|
-
# Returns true if this credit card is the customer's default.
|
168
|
+
# Returns true if this credit card is the customer's default payment method.
|
169
169
|
def default?
|
170
170
|
@default
|
171
171
|
end
|
@@ -25,7 +25,7 @@ module Braintree
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def delete(token)
|
28
|
-
@config.http.delete("/payment_methods/#{token}")
|
28
|
+
@config.http.delete("/payment_methods/credit_card/#{token}")
|
29
29
|
end
|
30
30
|
|
31
31
|
def expired(options = {})
|
@@ -42,7 +42,7 @@ module Braintree
|
|
42
42
|
|
43
43
|
def find(token)
|
44
44
|
raise ArgumentError if token.nil? || token.to_s.strip == ""
|
45
|
-
response = @config.http.get "/payment_methods/#{token}"
|
45
|
+
response = @config.http.get "/payment_methods/credit_card/#{token}"
|
46
46
|
CreditCard._new(@gateway, response[:credit_card])
|
47
47
|
rescue NotFoundError
|
48
48
|
raise NotFoundError, "payment method with token #{token.inspect} not found"
|
@@ -58,7 +58,7 @@ module Braintree
|
|
58
58
|
|
59
59
|
def update(token, attributes)
|
60
60
|
Util.verify_keys(CreditCardGateway._update_signature, attributes)
|
61
|
-
_do_update(:put, "/payment_methods/#{token}", :credit_card => attributes)
|
61
|
+
_do_update(:put, "/payment_methods/credit_card/#{token}", :credit_card => attributes)
|
62
62
|
end
|
63
63
|
|
64
64
|
# Deprecated
|
data/lib/braintree/customer.rb
CHANGED
@@ -4,7 +4,7 @@ module Braintree
|
|
4
4
|
include BaseModule
|
5
5
|
|
6
6
|
attr_reader :addresses, :company, :created_at, :credit_cards, :email, :fax, :first_name, :id, :last_name,
|
7
|
-
:phone, :updated_at, :website, :custom_fields
|
7
|
+
:phone, :updated_at, :website, :custom_fields, :paypal_accounts
|
8
8
|
|
9
9
|
# See http://www.braintreepayments.com/docs/ruby/customers/search
|
10
10
|
def self.all
|
@@ -107,6 +107,7 @@ module Braintree
|
|
107
107
|
@gateway = gateway
|
108
108
|
set_instance_variables_from_hash(attributes)
|
109
109
|
@credit_cards = (@credit_cards || []).map { |pm| CreditCard._new gateway, pm }
|
110
|
+
@paypal_accounts = (@paypal_accounts || []).map { |pm| PayPalAccount._new gateway, pm }
|
110
111
|
@addresses = (@addresses || []).map { |addr| Address._new gateway, addr }
|
111
112
|
@custom_fields = attributes[:custom_fields].is_a?(Hash) ? attributes[:custom_fields] : {}
|
112
113
|
end
|
@@ -121,9 +122,17 @@ module Braintree
|
|
121
122
|
return_object_or_raise(:transaction) { credit(transaction_attributes) }
|
122
123
|
end
|
123
124
|
|
124
|
-
#
|
125
|
+
# Deprecated. Use Braintree::Customer.default_payment_method
|
126
|
+
#
|
127
|
+
# Returns the customer's default credit card.
|
125
128
|
def default_credit_card
|
126
|
-
|
129
|
+
warn "[DEPRECATED] Customer#default_credit_card is deprecated. Please use Customer#default_payment_method"
|
130
|
+
@credit_cards.find { |credit_card| credit_card.default? }
|
131
|
+
end
|
132
|
+
|
133
|
+
# Returns the customer's default payment method.
|
134
|
+
def default_payment_method
|
135
|
+
payment_methods.find { |payment_instrument| payment_instrument.default? }
|
127
136
|
end
|
128
137
|
|
129
138
|
# See http://www.braintreepayments.com/docs/ruby/customers/delete
|
@@ -131,9 +140,14 @@ module Braintree
|
|
131
140
|
@gateway.customer.delete(id)
|
132
141
|
end
|
133
142
|
|
143
|
+
# Returns the customer's payment methods
|
144
|
+
def payment_methods
|
145
|
+
@credit_cards.dup + @paypal_accounts.dup
|
146
|
+
end
|
147
|
+
|
134
148
|
def inspect # :nodoc:
|
135
149
|
first = [:id]
|
136
|
-
last = [:addresses, :credit_cards]
|
150
|
+
last = [:addresses, :credit_cards, :paypal_accounts]
|
137
151
|
order = first + (self.class._attributes - first - last) + last
|
138
152
|
nice_attributes = order.map do |attr|
|
139
153
|
"#{attr}: #{send(attr).inspect}"
|
@@ -74,7 +74,7 @@ module Braintree
|
|
74
74
|
credit_card_signature = CreditCardGateway._create_signature - [:customer_id]
|
75
75
|
[
|
76
76
|
:company, :email, :fax, :first_name, :id, :last_name, :phone, :website,
|
77
|
-
:device_data,
|
77
|
+
:device_data, :payment_method_nonce,
|
78
78
|
{:credit_card => credit_card_signature},
|
79
79
|
{:custom_fields => :_any_key_}
|
80
80
|
]
|
@@ -123,7 +123,7 @@ module Braintree
|
|
123
123
|
credit_card_options[:options] << :update_existing_token
|
124
124
|
[
|
125
125
|
:company, :email, :fax, :first_name, :id, :last_name, :phone, :website,
|
126
|
-
:device_data,
|
126
|
+
:device_data, :payment_method_nonce,
|
127
127
|
{:credit_card => credit_card_signature},
|
128
128
|
{:custom_fields => :_any_key_}
|
129
129
|
]
|
@@ -37,35 +37,43 @@ module Braintree
|
|
37
37
|
module CreditCard
|
38
38
|
BillingAddressConflict = "91701"
|
39
39
|
BillingAddressIdIsInvalid = "91702"
|
40
|
-
|
41
|
-
CustomerIdIsInvalid = "91705"
|
42
|
-
ExpirationDateConflict = "91708"
|
43
|
-
TokenFormatIsInvalid = "91718"
|
44
|
-
TokenIsInUse = "91719"
|
45
|
-
TokenIsTooLong = "91720"
|
46
|
-
TokenIsNotAllowed = "91721"
|
47
|
-
TokenIsRequired = "91722"
|
40
|
+
CannotUpdateCardUsingPaymentMethodNonce = "91735"
|
48
41
|
CardholderNameIsTooLong = "81723"
|
49
42
|
CreditCardTypeIsNotAccepted = "81703"
|
50
43
|
CreditCardTypeIsNotAcceptedBySubscriptionMerchantAccount = "81718"
|
51
|
-
|
44
|
+
CustomerIdIsInvalid = "91705"
|
45
|
+
CustomerIdIsRequired = "91704"
|
52
46
|
CvvIsInvalid = "81707"
|
47
|
+
CvvIsRequired = "81706"
|
48
|
+
CvvVerificationFailed = "81736"
|
49
|
+
PostalCodeVerificationFailed = "81737"
|
53
50
|
DuplicateCardExists = "81724"
|
54
|
-
|
51
|
+
ExpirationDateConflict = "91708"
|
55
52
|
ExpirationDateIsInvalid = "81710"
|
53
|
+
ExpirationDateIsRequired = "81709"
|
56
54
|
ExpirationDateYearIsInvalid = "81711"
|
57
55
|
ExpirationMonthIsInvalid = "81712"
|
58
56
|
ExpirationYearIsInvalid = "81713"
|
59
57
|
InvalidVenmoSDKPaymentMethodCode = "91727"
|
60
|
-
NumberIsRequired = "81714"
|
61
58
|
NumberIsInvalid = "81715"
|
59
|
+
NumberIsRequired = "81714"
|
62
60
|
NumberLengthIsInvalid = "81716"
|
63
61
|
NumberMustBeTestNumber = "81717"
|
64
62
|
PaymentMethodConflict = "81725"
|
63
|
+
PaymentMethodNonceCardTypeIsNotAccepted = "91734"
|
64
|
+
PaymentMethodNonceConsumed = "91731"
|
65
|
+
PaymentMethodNonceLocked = "91733"
|
66
|
+
PaymentMethodNonceUnknown = "91732"
|
67
|
+
TokenFormatIsInvalid = "91718"
|
68
|
+
TokenIsInUse = "91719"
|
69
|
+
TokenIsNotAllowed = "91721"
|
70
|
+
TokenIsRequired = "91722"
|
71
|
+
TokenIsTooLong = "91720"
|
65
72
|
VenmoSDKPaymentMethodCodeCardTypeIsNotAccepted = "91726"
|
66
73
|
VerificationNotSupportedOnThisMerchantAccount = "91730"
|
67
74
|
|
68
75
|
module Options
|
76
|
+
UseBillingForShippingDisabled = "91572"
|
69
77
|
UpdateExistingTokenIsInvalid = "91723"
|
70
78
|
VerificationMerchantAccountIdIsInvalid = "91728"
|
71
79
|
UpdateExistingTokenNotAllowed = "91729"
|
@@ -101,6 +109,20 @@ module Braintree
|
|
101
109
|
InternationalPhoneFormatIsInvalid = "92205"
|
102
110
|
end
|
103
111
|
|
112
|
+
module PayPalAccount
|
113
|
+
CannotVaultOneTimeUsePayPalAccount = "82902"
|
114
|
+
CannotHaveBothAccessTokenAndConsentCode = "82903"
|
115
|
+
ConsentCodeOrAccessTokenIsRequired = "82901"
|
116
|
+
CustomerIdIsRequiredForVaulting = "82905"
|
117
|
+
IncompletePayPalAccount = "82901"
|
118
|
+
PaymentMethodNonceConsumed = "92907"
|
119
|
+
PaymentMethodNonceLocked = "92909"
|
120
|
+
PaymentMethodNonceUnknown = "92908"
|
121
|
+
PayPalAccountsAreNotAccepted = "82904"
|
122
|
+
PayPalCommunicationError = "92910"
|
123
|
+
TokenIsInUse = "92906"
|
124
|
+
end
|
125
|
+
|
104
126
|
# See http://www.braintreepayments.com/docs/ruby/subscriptions/validations
|
105
127
|
module Subscription
|
106
128
|
BillingDayOfMonthCannotBeUpdated = "91918"
|
@@ -123,6 +145,10 @@ module Braintree
|
|
123
145
|
NumberOfBillingCyclesIsTooSmall = "91909"
|
124
146
|
NumberOfBillingCyclesMustBeGreaterThanZero = "91907"
|
125
147
|
NumberOfBillingCyclesMustBeNumeric = "91906"
|
148
|
+
PaymentMethodNonceCardTypeIsNotAccepted = "91924"
|
149
|
+
PaymentMethodNonceIsInvalid = "91925"
|
150
|
+
PaymentMethodNonceNotAssociatedWithCustomer = "91926"
|
151
|
+
PaymentMethodNonceUnvaultedCardIsNotAccepted = "91927"
|
126
152
|
PaymentMethodTokenCardTypeIsNotAccepted = "91902"
|
127
153
|
PaymentMethodTokenIsInvalid = "91903"
|
128
154
|
PaymentMethodTokenNotAssociatedWithCustomer = "91905"
|
@@ -147,6 +173,7 @@ module Braintree
|
|
147
173
|
ExistingIdIsInvalid = "92011"
|
148
174
|
ExistingIdIsRequired = "92012"
|
149
175
|
IdToRemoveIsIncorrectKind = "92021"
|
176
|
+
IdToRemoveIsInvalid = "92025"
|
150
177
|
IdToRemoveIsNotPresent = "92016"
|
151
178
|
InconsistentNumberOfBillingCycles = "92018"
|
152
179
|
InheritedFromIdIsInvalid = "92013"
|
@@ -173,6 +200,7 @@ module Braintree
|
|
173
200
|
CannotBeVoided = "91504"
|
174
201
|
CannotCancelRelease = "91562"
|
175
202
|
CannotCloneCredit = "91543"
|
203
|
+
CannotCloneTransactionWithPayPalAccount = "91573"
|
176
204
|
CannotCloneTransactionWithVaultCreditCard = "91540"
|
177
205
|
CannotCloneUnsuccessfulTransaction = "91542"
|
178
206
|
CannotCloneVoiceAuthorizations = "91541"
|
@@ -181,9 +209,12 @@ module Braintree
|
|
181
209
|
CannotRefundCredit = "91505"
|
182
210
|
CannotRefundUnlessSettled = "91506"
|
183
211
|
CannotRefundWithPendingMerchantAccount = "91559"
|
212
|
+
CannotRefundSettlingTransaction = "91574"
|
184
213
|
CannotRefundWithSuspendedMerchantAccount = "91538"
|
185
214
|
CannotReleaseFromEscrow = "91561"
|
215
|
+
CannotSimulateTransactionSettlement = "91575"
|
186
216
|
CannotSubmitForSettlement = "91507"
|
217
|
+
ChannelIsTooLong = "91550"
|
187
218
|
CreditCardIsRequired = "91508"
|
188
219
|
CustomFieldIsInvalid = "91526"
|
189
220
|
CustomFieldIsTooLong = "81527"
|
@@ -191,18 +222,23 @@ module Braintree
|
|
191
222
|
CustomerDoesNotHaveCreditCard = "91511"
|
192
223
|
CustomerIdIsInvalid = "91510"
|
193
224
|
HasAlreadyBeenRefunded = "91512"
|
194
|
-
MerchantAccountDoesNotSupportRefunds = "91547"
|
195
225
|
MerchantAccountDoesNotSupportMOTO = "91558"
|
226
|
+
MerchantAccountDoesNotSupportRefunds = "91547"
|
196
227
|
MerchantAccountIdIsInvalid = "91513"
|
197
228
|
MerchantAccountIsSuspended = "91514"
|
198
229
|
OrderIdIsTooLong = "91501"
|
199
|
-
ChannelIsTooLong = "91550"
|
200
230
|
PaymentMethodConflict = "91515"
|
201
231
|
PaymentMethodConflictWithVenmoSDK = "91549"
|
202
232
|
PaymentMethodDoesNotBelongToCustomer = "91516"
|
203
233
|
PaymentMethodDoesNotBelongToSubscription = "91527"
|
234
|
+
PaymentMethodNonceCardTypeIsNotAccepted = "91567"
|
235
|
+
PaymentMethodNonceConsumed = "91564"
|
236
|
+
PaymentMethodNonceLocked = "91566"
|
237
|
+
PaymentMethodNonceUnknown = "91565"
|
204
238
|
PaymentMethodTokenCardTypeIsNotAccepted = "91517"
|
205
239
|
PaymentMethodTokenIsInvalid = "91518"
|
240
|
+
PaymentInstrumentNotSupportedByMerchantAccount = "91577"
|
241
|
+
PayPalNotEnabled = "91576"
|
206
242
|
ProcessorAuthorizationCodeCannotBeSet = "91519"
|
207
243
|
ProcessorAuthorizationCodeIsInvalid = "81520"
|
208
244
|
ProcessorDoesNotSupportCredits = "91546"
|
@@ -213,8 +249,8 @@ module Braintree
|
|
213
249
|
ServiceFeeAmountCannotBeNegative = "91554"
|
214
250
|
ServiceFeeAmountFormatIsInvalid = "91555"
|
215
251
|
ServiceFeeAmountIsTooLarge = "91556"
|
216
|
-
ServiceFeeIsNotAllowedOnCredits = "91552"
|
217
252
|
ServiceFeeAmountNotAllowedOnMasterMerchantAccount = "91557"
|
253
|
+
ServiceFeeIsNotAllowedOnCredits = "91552"
|
218
254
|
SettlementAmountIsLessThanServiceFeeAmount = "91551"
|
219
255
|
SettlementAmountIsTooLarge = "91522"
|
220
256
|
SubMerchantAccountRequiresServiceFeeAmount = "91553"
|
@@ -224,6 +260,9 @@ module Braintree
|
|
224
260
|
TaxAmountCannotBeNegative = "81534"
|
225
261
|
TaxAmountFormatIsInvalid = "81535"
|
226
262
|
TaxAmountIsTooLarge = "81536"
|
263
|
+
ThreeDSecureAuthenticationFailed = "81571"
|
264
|
+
ThreeDSecureTokenIsInvalid = "91568"
|
265
|
+
ThreeDSecureTransactionDataDoesntMatchVerify = "91570"
|
227
266
|
TypeIsInvalid = "91523"
|
228
267
|
TypeIsRequired = "91524"
|
229
268
|
UnsupportedVoiceAuthorization = "91539"
|
@@ -347,6 +386,34 @@ module Braintree
|
|
347
386
|
SettlementDateIsInvalid = "82302"
|
348
387
|
CustomFieldIsInvalid = "82303"
|
349
388
|
end
|
389
|
+
|
390
|
+
module ClientToken
|
391
|
+
CustomerDoesNotExist = "92804"
|
392
|
+
FailOnDuplicatePaymentMethodRequiresCustomerId = "92803"
|
393
|
+
MakeDefaultRequiresCustomerId = "92801"
|
394
|
+
ProxyMerchantDoesNotExist = "92805"
|
395
|
+
VerifyCardRequiresCustomerId = "92802"
|
396
|
+
UnsupportedVersion = "92806"
|
397
|
+
end
|
398
|
+
|
399
|
+
module PaymentMethod
|
400
|
+
CustomerIdIsInvalid = "93105"
|
401
|
+
CustomerIdIsRequired = "93104"
|
402
|
+
NonceIsInvalid = "93102"
|
403
|
+
NonceIsRequired = "93103"
|
404
|
+
PaymentMethodParamsAreRequired = "93101"
|
405
|
+
CannotForwardPaymentMethodType = "93107"
|
406
|
+
end
|
407
|
+
|
408
|
+
module AuthorizationFingerprint
|
409
|
+
InvalidCreatedAt = "93204"
|
410
|
+
InvalidFormat = "93202"
|
411
|
+
InvalidPublicKey = "93205"
|
412
|
+
InvalidSignature = "93206"
|
413
|
+
MissingFingerprint = "93201"
|
414
|
+
OptionsNotAllowedWithoutCustomer = "93207"
|
415
|
+
SignatureRevoked = "93203"
|
416
|
+
end
|
350
417
|
end
|
351
418
|
end
|
352
419
|
|
data/lib/braintree/exceptions.rb
CHANGED
data/lib/braintree/gateway.rb
CHANGED
@@ -41,10 +41,22 @@ module Braintree
|
|
41
41
|
PlanGateway.new(self)
|
42
42
|
end
|
43
43
|
|
44
|
+
def payment_method
|
45
|
+
PaymentMethodGateway.new(self)
|
46
|
+
end
|
47
|
+
|
48
|
+
def paypal_account
|
49
|
+
PayPalAccountGateway.new(self)
|
50
|
+
end
|
51
|
+
|
44
52
|
def merchant_account
|
45
53
|
MerchantAccountGateway.new(self)
|
46
54
|
end
|
47
55
|
|
56
|
+
def sepa_bank_account
|
57
|
+
SEPABankAccountGateway.new(self)
|
58
|
+
end
|
59
|
+
|
48
60
|
def settlement_batch_summary
|
49
61
|
SettlementBatchSummaryGateway.new(self)
|
50
62
|
end
|
@@ -61,6 +73,10 @@ module Braintree
|
|
61
73
|
TransactionGateway.new(self)
|
62
74
|
end
|
63
75
|
|
76
|
+
def testing
|
77
|
+
TestingGateway.new(self)
|
78
|
+
end
|
79
|
+
|
64
80
|
def verification
|
65
81
|
CreditCardVerificationGateway.new(self)
|
66
82
|
end
|