braintree 2.26.0 → 2.27.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +4 -0
- data/lib/braintree.rb +4 -0
- data/lib/braintree/error_codes.rb +70 -6
- data/lib/braintree/merchant_account.rb +16 -2
- data/lib/braintree/merchant_account/address_details.rb +13 -0
- data/lib/braintree/merchant_account/business_details.rb +14 -0
- data/lib/braintree/merchant_account/funding_details.rb +13 -0
- data/lib/braintree/merchant_account/individual_details.rb +15 -0
- data/lib/braintree/merchant_account_gateway.rb +48 -2
- data/lib/braintree/version.rb +1 -1
- data/spec/httpsd.pid +1 -1
- data/spec/integration/braintree/merchant_account_spec.rb +307 -13
- data/spec/integration/braintree/transparent_redirect_spec.rb +24 -0
- data/spec/unit/braintree/merchant_account_spec.rb +1 -0
- data/spec/unit/braintree/webhook_notification_spec.rb +1 -1
- metadata +115 -107
- checksums.yaml +0 -15
data/README.rdoc
CHANGED
@@ -75,6 +75,10 @@ The unit specs can be run by anyone on any system, but the integration specs are
|
|
75
75
|
server of our gateway code. These integration specs are not meant for public consumption and will likely fail if run on
|
76
76
|
your system.
|
77
77
|
|
78
|
+
== Open Source Attribution
|
79
|
+
|
80
|
+
A list of open source projects that help power Braintree can be found here[https://www.braintreepayments.com/developers/open-source].
|
81
|
+
|
78
82
|
== License
|
79
83
|
|
80
84
|
See the LICENSE file.
|
data/lib/braintree.rb
CHANGED
@@ -46,6 +46,10 @@ require "braintree/gateway"
|
|
46
46
|
require "braintree/http"
|
47
47
|
require "braintree/merchant_account"
|
48
48
|
require "braintree/merchant_account_gateway"
|
49
|
+
require "braintree/merchant_account/individual_details"
|
50
|
+
require "braintree/merchant_account/business_details"
|
51
|
+
require "braintree/merchant_account/funding_details"
|
52
|
+
require "braintree/merchant_account/address_details"
|
49
53
|
require "braintree/plan"
|
50
54
|
require "braintree/plan_gateway"
|
51
55
|
require "braintree/settlement_batch_summary"
|
@@ -243,6 +243,15 @@ module Braintree
|
|
243
243
|
MasterMerchantAccountIdIsInvalid = "82607"
|
244
244
|
MasterMerchantAccountMustBeActive = "82608"
|
245
245
|
TosAcceptedIsRequired = "82610"
|
246
|
+
IdCannotBeUpdated = "82675"
|
247
|
+
MasterMerchantAccountIdCannotBeUpdated = "82676"
|
248
|
+
CannotBeUpdated = "82674"
|
249
|
+
DeclinedOFAC = "82621"
|
250
|
+
DeclinedMasterCardMatch = "82622"
|
251
|
+
DeclinedFailedKYC = "82623"
|
252
|
+
DeclinedSsnInvalid = "82624"
|
253
|
+
DeclinedSsnMatchesDeceased = "82625"
|
254
|
+
Declined = "82626"
|
246
255
|
|
247
256
|
module ApplicantDetails
|
248
257
|
FirstNameIsRequired = "82609"
|
@@ -259,13 +268,17 @@ module Braintree
|
|
259
268
|
CompanyNameIsRequiredWithTaxId = "82633"
|
260
269
|
TaxIdIsRequiredWithCompanyName = "82634"
|
261
270
|
RoutingNumberIsInvalid = "82635"
|
262
|
-
DeclinedOFAC = "82621"
|
263
|
-
DeclinedMasterCardMatch = "82622"
|
264
|
-
DeclinedFailedKYC = "82623"
|
265
|
-
DeclinedSsnInvalid = "82624"
|
266
|
-
DeclinedSsnMatchesDeceased = "82625"
|
267
|
-
Declined = "82626"
|
271
|
+
DeclinedOFAC = "82621" # Keep for backwards compatibility
|
272
|
+
DeclinedMasterCardMatch = "82622" # Keep for backwards compatibility
|
273
|
+
DeclinedFailedKYC = "82623" # Keep for backwards compatibility
|
274
|
+
DeclinedSsnInvalid = "82624" # Keep for backwards compatibility
|
275
|
+
DeclinedSsnMatchesDeceased = "82625" # Keep for backwards compatibility
|
276
|
+
Declined = "82626" # Keep for backwards compatibility
|
268
277
|
PhoneIsInvalid = "82636"
|
278
|
+
DateOfBirthIsInvalid = "82663"
|
279
|
+
AccountNumberIsInvalid = "82670"
|
280
|
+
EmailAddressIsRequired = "82665"
|
281
|
+
TaxIdMustBeBlank = "82673"
|
269
282
|
|
270
283
|
module Address
|
271
284
|
StreetAddressIsRequired = "82617"
|
@@ -274,8 +287,59 @@ module Braintree
|
|
274
287
|
RegionIsRequired = "82620"
|
275
288
|
StreetAddressIsInvalid = "82629"
|
276
289
|
PostalCodeIsInvalid = "82630"
|
290
|
+
RegionIsInvalid = "82664"
|
277
291
|
end
|
278
292
|
end
|
293
|
+
|
294
|
+
module Individual
|
295
|
+
FirstNameIsRequired = "82637"
|
296
|
+
LastNameIsRequired = "82638"
|
297
|
+
DateOfBirthIsRequired = "82639"
|
298
|
+
SsnIsInvalid = "82642"
|
299
|
+
EmailIsInvalid = "82643"
|
300
|
+
FirstNameIsInvalid = "82644"
|
301
|
+
LastNameIsInvalid = "82645"
|
302
|
+
PhoneIsInvalid = "82656"
|
303
|
+
DateOfBirthIsInvalid = "82666"
|
304
|
+
EmailIsRequired = "82667"
|
305
|
+
|
306
|
+
module Address
|
307
|
+
StreetAddressIsRequired = "82657"
|
308
|
+
LocalityIsRequired = "82658"
|
309
|
+
PostalCodeIsRequired = "82659"
|
310
|
+
RegionIsRequired = "82660"
|
311
|
+
StreetAddressIsInvalid = "82661"
|
312
|
+
PostalCodeIsInvalid = "82662"
|
313
|
+
RegionIsInvalid = "82668"
|
314
|
+
end
|
315
|
+
end
|
316
|
+
|
317
|
+
module Business
|
318
|
+
DbaNameIsInvalid = "82646"
|
319
|
+
LegalNameIsInvalid = "82677"
|
320
|
+
LegalNameIsRequiredWithTaxId = "82669"
|
321
|
+
TaxIdIsInvalid = "82647"
|
322
|
+
TaxIdIsRequiredWithLegalName = "82648"
|
323
|
+
TaxIdMustBeBlank = "82672"
|
324
|
+
module Address
|
325
|
+
StreetAddressIsInvalid = "82685"
|
326
|
+
PostalCodeIsInvalid = "82686"
|
327
|
+
RegionIsInvalid = "82684"
|
328
|
+
end
|
329
|
+
end
|
330
|
+
|
331
|
+
module Funding
|
332
|
+
AccountNumberIsInvalid = "82671"
|
333
|
+
AccountNumberIsRequired = "82641"
|
334
|
+
DestinationIsInvalid = "82679"
|
335
|
+
DestinationIsRequired = "82678"
|
336
|
+
EmailIsInvalid = "82681"
|
337
|
+
EmailIsRequired = "82680"
|
338
|
+
MobilePhoneIsInvalid = "82683"
|
339
|
+
MobilePhoneIsRequired = "82682"
|
340
|
+
RoutingNumberIsInvalid = "82649"
|
341
|
+
RoutingNumberIsRequired = "82640"
|
342
|
+
end
|
279
343
|
end
|
280
344
|
|
281
345
|
module SettlementBatchSummary
|
@@ -8,16 +8,30 @@ module Braintree
|
|
8
8
|
Suspended = "suspended"
|
9
9
|
end
|
10
10
|
|
11
|
-
|
11
|
+
module FundingDestinations
|
12
|
+
Bank = "bank"
|
13
|
+
MobilePhone = "mobile_phone"
|
14
|
+
Email = "email"
|
15
|
+
end
|
16
|
+
|
17
|
+
attr_reader :status, :id, :master_merchant_account,
|
18
|
+
:individual_details, :business_details, :funding_details
|
12
19
|
|
13
20
|
def self.create(attributes)
|
14
21
|
Configuration.gateway.merchant_account.create(attributes)
|
15
22
|
end
|
16
23
|
|
24
|
+
def self.update(id, attributes)
|
25
|
+
Configuration.gateway.merchant_account.update(id, attributes)
|
26
|
+
end
|
27
|
+
|
17
28
|
def initialize(gateway, attributes) # :nodoc
|
18
29
|
@gateway = gateway
|
19
|
-
@master_merchant_account = MerchantAccount._new(@gateway, attributes.delete(:master_merchant_account)) if attributes[:master_merchant_account]
|
20
30
|
set_instance_variables_from_hash(attributes)
|
31
|
+
@individual_details = IndividualDetails.new(@individual)
|
32
|
+
@business_details = BusinessDetails.new(@business)
|
33
|
+
@funding_details = FundingDetails.new(@funding)
|
34
|
+
@master_merchant_account = MerchantAccount._new(@gateway, attributes.delete(:master_merchant_account)) if attributes[:master_merchant_account]
|
21
35
|
end
|
22
36
|
|
23
37
|
class << self
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Braintree
|
2
|
+
class MerchantAccount
|
3
|
+
class AddressDetails
|
4
|
+
include BaseModule
|
5
|
+
|
6
|
+
attr_reader :street_address, :locality, :region, :postal_code
|
7
|
+
|
8
|
+
def initialize(attributes)
|
9
|
+
set_instance_variables_from_hash attributes unless attributes.nil?
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Braintree
|
2
|
+
class MerchantAccount
|
3
|
+
class BusinessDetails
|
4
|
+
include BaseModule
|
5
|
+
|
6
|
+
attr_reader :dba_name, :legal_name, :tax_id, :address_details
|
7
|
+
|
8
|
+
def initialize(attributes)
|
9
|
+
set_instance_variables_from_hash attributes unless attributes.nil?
|
10
|
+
@address_details = MerchantAccount::AddressDetails.new(@address)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Braintree
|
2
|
+
class MerchantAccount
|
3
|
+
class FundingDetails
|
4
|
+
include BaseModule
|
5
|
+
|
6
|
+
attr_reader :account_number_last_4, :destination, :email, :mobile_phone, :routing_number
|
7
|
+
|
8
|
+
def initialize(attributes)
|
9
|
+
set_instance_variables_from_hash attributes unless attributes.nil?
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Braintree
|
2
|
+
class MerchantAccount
|
3
|
+
class IndividualDetails
|
4
|
+
include BaseModule
|
5
|
+
|
6
|
+
attr_reader :first_name, :last_name, :email, :phone, :date_of_birth, :ssn_last_4,
|
7
|
+
:address_details
|
8
|
+
|
9
|
+
def initialize(attributes)
|
10
|
+
set_instance_variables_from_hash attributes unless attributes.nil?
|
11
|
+
@address_details = MerchantAccount::AddressDetails.new(@address)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -6,10 +6,16 @@ module Braintree
|
|
6
6
|
end
|
7
7
|
|
8
8
|
def create(attributes)
|
9
|
-
|
9
|
+
signature = MerchantAccountGateway._detect_signature(attributes)
|
10
|
+
Util.verify_keys(signature, attributes)
|
10
11
|
_do_create "/merchant_accounts/create_via_api", :merchant_account => attributes
|
11
12
|
end
|
12
13
|
|
14
|
+
def update(merchant_account_id, attributes)
|
15
|
+
Util.verify_keys(MerchantAccountGateway._update_signature, attributes)
|
16
|
+
_do_update "/merchant_accounts/#{merchant_account_id}/update_via_api", :merchant_account => attributes
|
17
|
+
end
|
18
|
+
|
13
19
|
def _do_create(url, params=nil) # :nodoc:
|
14
20
|
response = @config.http.post url, params
|
15
21
|
if response[:api_error_response]
|
@@ -19,7 +25,25 @@ module Braintree
|
|
19
25
|
end
|
20
26
|
end
|
21
27
|
|
22
|
-
def
|
28
|
+
def _do_update(url, params=nil) # :nodoc:
|
29
|
+
response = @config.http.put(url, params)
|
30
|
+
if response[:api_error_response]
|
31
|
+
ErrorResult.new(@gateway, response[:api_error_response])
|
32
|
+
else
|
33
|
+
SuccessfulResult.new(:merchant_account => MerchantAccount._new(@gateway, response[:merchant_account]))
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def self._detect_signature(attributes)
|
38
|
+
if attributes.has_key?(:applicant_details)
|
39
|
+
warn "[DEPRECATED] Passing :applicant_details to create is deprecated. Please use :individual, :business, and :funding."
|
40
|
+
MerchantAccountGateway._deprecated_create_signature
|
41
|
+
else
|
42
|
+
MerchantAccountGateway._create_signature
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def self._deprecated_create_signature # :nodoc:
|
23
47
|
[
|
24
48
|
{:applicant_details => [
|
25
49
|
:first_name, :last_name, :email, :date_of_birth, :ssn, :routing_number,
|
@@ -29,5 +53,27 @@ module Braintree
|
|
29
53
|
:tos_accepted, :master_merchant_account_id, :id
|
30
54
|
]
|
31
55
|
end
|
56
|
+
|
57
|
+
def self._signature # :nodoc:
|
58
|
+
[
|
59
|
+
{:individual => [
|
60
|
+
:first_name, :last_name, :email, :date_of_birth, :ssn, :phone,
|
61
|
+
{:address => [:street_address, :locality, :region, :postal_code]}]
|
62
|
+
},
|
63
|
+
{:business => [
|
64
|
+
:dba_name, :legal_name, :tax_id,
|
65
|
+
{:address => [:street_address, :locality, :region, :postal_code]}]
|
66
|
+
},
|
67
|
+
{:funding => [:destination, :email, :mobile_phone, :routing_number, :account_number]}
|
68
|
+
]
|
69
|
+
end
|
70
|
+
|
71
|
+
def self._create_signature # :nodoc:
|
72
|
+
_signature + [:tos_accepted, :master_merchant_account_id, :id]
|
73
|
+
end
|
74
|
+
|
75
|
+
def self._update_signature # :nodoc:
|
76
|
+
_signature
|
77
|
+
end
|
32
78
|
end
|
33
79
|
end
|
data/lib/braintree/version.rb
CHANGED
data/spec/httpsd.pid
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
10645
|
@@ -1,11 +1,11 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
|
2
2
|
|
3
|
-
|
3
|
+
DEPRECATED_APPLICATION_PARAMS = {
|
4
4
|
:applicant_details => {
|
5
5
|
:first_name => "Joe",
|
6
6
|
:last_name => "Bloggs",
|
7
7
|
:email => "joe@bloggs.com",
|
8
|
-
:phone => "
|
8
|
+
:phone => "3125551234",
|
9
9
|
:address => {
|
10
10
|
:street_address => "123 Credibility St.",
|
11
11
|
:postal_code => "60606",
|
@@ -14,7 +14,44 @@ VALID_APPLICATION_PARAMS = {
|
|
14
14
|
},
|
15
15
|
:date_of_birth => "10/9/1980",
|
16
16
|
:ssn => "123-00-1234",
|
17
|
-
:routing_number => "
|
17
|
+
:routing_number => "011103093",
|
18
|
+
:account_number => "43759348798",
|
19
|
+
:tax_id => "111223333",
|
20
|
+
:company_name => "Joe's Junkyard"
|
21
|
+
},
|
22
|
+
:tos_accepted => true,
|
23
|
+
:master_merchant_account_id => "sandbox_master_merchant_account"
|
24
|
+
}
|
25
|
+
|
26
|
+
VALID_APPLICATION_PARAMS = {
|
27
|
+
:individual => {
|
28
|
+
:first_name => "Joe",
|
29
|
+
:last_name => "Bloggs",
|
30
|
+
:email => "joe@bloggs.com",
|
31
|
+
:phone => "3125551234",
|
32
|
+
:address => {
|
33
|
+
:street_address => "123 Credibility St.",
|
34
|
+
:postal_code => "60606",
|
35
|
+
:locality => "Chicago",
|
36
|
+
:region => "IL",
|
37
|
+
},
|
38
|
+
:date_of_birth => "10/9/1980",
|
39
|
+
:ssn => "123-00-1234",
|
40
|
+
},
|
41
|
+
:business => {
|
42
|
+
:legal_name => "Joe's Bloggs",
|
43
|
+
:dba_name => "Joe's Junkyard",
|
44
|
+
:tax_id => "123456789",
|
45
|
+
:address => {
|
46
|
+
:street_address => "456 Fake St",
|
47
|
+
:postal_code => "48104",
|
48
|
+
:locality => "Ann Arbor",
|
49
|
+
:region => "MI",
|
50
|
+
}
|
51
|
+
},
|
52
|
+
:funding => {
|
53
|
+
:destination => Braintree::MerchantAccount::FundingDestinations::Bank,
|
54
|
+
:routing_number => "011103093",
|
18
55
|
:account_number => "43759348798"
|
19
56
|
},
|
20
57
|
:tos_accepted => true,
|
@@ -23,7 +60,15 @@ VALID_APPLICATION_PARAMS = {
|
|
23
60
|
|
24
61
|
describe Braintree::MerchantAccount do
|
25
62
|
describe "create" do
|
26
|
-
it "
|
63
|
+
it "accepts the deprecated parameters" do
|
64
|
+
result = Braintree::MerchantAccount.create(DEPRECATED_APPLICATION_PARAMS)
|
65
|
+
|
66
|
+
result.should be_success
|
67
|
+
result.merchant_account.status.should == Braintree::MerchantAccount::Status::Pending
|
68
|
+
result.merchant_account.master_merchant_account.id.should == "sandbox_master_merchant_account"
|
69
|
+
end
|
70
|
+
|
71
|
+
it "creates a merchant account with the new parameters and doesn't require an id" do
|
27
72
|
result = Braintree::MerchantAccount.create(VALID_APPLICATION_PARAMS)
|
28
73
|
|
29
74
|
result.should be_success
|
@@ -54,21 +99,270 @@ describe Braintree::MerchantAccount do
|
|
54
99
|
|
55
100
|
it "requires all fields" do
|
56
101
|
result = Braintree::MerchantAccount.create(
|
57
|
-
:master_merchant_account_id => "sandbox_master_merchant_account"
|
58
|
-
:tos_accepted => true,
|
59
|
-
:applicant_details => {}
|
102
|
+
:master_merchant_account_id => "sandbox_master_merchant_account"
|
60
103
|
)
|
61
104
|
result.should_not be_success
|
62
|
-
result.errors.for(:merchant_account).
|
105
|
+
result.errors.for(:merchant_account).on(:tos_accepted).first.code.should == Braintree::ErrorCodes::MerchantAccount::TosAcceptedIsRequired
|
63
106
|
end
|
64
107
|
|
65
|
-
|
108
|
+
context "funding destination" do
|
109
|
+
it "accepts a bank" do
|
110
|
+
params = VALID_APPLICATION_PARAMS.dup
|
111
|
+
params[:funding][:destination] = ::Braintree::MerchantAccount::FundingDestinations::Bank
|
112
|
+
result = Braintree::MerchantAccount.create(params)
|
113
|
+
|
114
|
+
result.should be_success
|
115
|
+
end
|
116
|
+
|
117
|
+
it "accepts an email" do
|
118
|
+
params = VALID_APPLICATION_PARAMS.dup
|
119
|
+
params[:funding][:destination] = ::Braintree::MerchantAccount::FundingDestinations::Email
|
120
|
+
params[:funding][:email] = "joebloggs@compuserve.com"
|
121
|
+
result = Braintree::MerchantAccount.create(params)
|
122
|
+
|
123
|
+
result.should be_success
|
124
|
+
end
|
125
|
+
|
126
|
+
it "accepts a mobile_phone" do
|
127
|
+
params = VALID_APPLICATION_PARAMS.dup
|
128
|
+
params[:funding][:destination] = ::Braintree::MerchantAccount::FundingDestinations::MobilePhone
|
129
|
+
params[:funding][:mobile_phone] = "3125882300"
|
130
|
+
result = Braintree::MerchantAccount.create(params)
|
131
|
+
|
132
|
+
result.should be_success
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
describe "update" do
|
138
|
+
it "updates the Merchant Account info" do
|
66
139
|
params = VALID_APPLICATION_PARAMS.clone
|
67
|
-
params
|
68
|
-
params
|
69
|
-
|
140
|
+
params.delete(:tos_accepted)
|
141
|
+
params.delete(:master_merchant_account_id)
|
142
|
+
params[:individual][:first_name] = "John"
|
143
|
+
params[:individual][:last_name] = "Doe"
|
144
|
+
params[:individual][:email] = "john.doe@example.com"
|
145
|
+
params[:individual][:date_of_birth] = "1970-01-01"
|
146
|
+
params[:individual][:phone] = "3125551234"
|
147
|
+
params[:individual][:address][:street_address] = "123 Fake St"
|
148
|
+
params[:individual][:address][:locality] = "Chicago"
|
149
|
+
params[:individual][:address][:region] = "IL"
|
150
|
+
params[:individual][:address][:postal_code] = "60622"
|
151
|
+
params[:business][:dba_name] = "James's Bloggs"
|
152
|
+
params[:business][:legal_name] = "James's Bloggs Inc"
|
153
|
+
params[:business][:tax_id] = "123456789"
|
154
|
+
params[:business][:address][:street_address] = "999 Fake St"
|
155
|
+
params[:business][:address][:locality] = "Miami"
|
156
|
+
params[:business][:address][:region] = "FL"
|
157
|
+
params[:business][:address][:postal_code] = "99999"
|
158
|
+
params[:funding][:account_number] = "43759348798"
|
159
|
+
params[:funding][:routing_number] = "071000013"
|
160
|
+
params[:funding][:email] = "check@this.com"
|
161
|
+
params[:funding][:mobile_phone] = "1234567890"
|
162
|
+
params[:funding][:destination] = Braintree::MerchantAccount::FundingDestinations::MobilePhone
|
163
|
+
result = Braintree::MerchantAccount.update("sandbox_sub_merchant_account", params)
|
70
164
|
result.should be_success
|
71
|
-
result.merchant_account.status.should ==
|
165
|
+
result.merchant_account.status.should == "active"
|
166
|
+
result.merchant_account.id.should == "sandbox_sub_merchant_account"
|
167
|
+
result.merchant_account.master_merchant_account.id.should == "sandbox_master_merchant_account"
|
168
|
+
result.merchant_account.individual_details.first_name.should == "John"
|
169
|
+
result.merchant_account.individual_details.last_name.should == "Doe"
|
170
|
+
result.merchant_account.individual_details.email.should == "john.doe@example.com"
|
171
|
+
result.merchant_account.individual_details.date_of_birth.should == "1970-01-01"
|
172
|
+
result.merchant_account.individual_details.phone.should == "3125551234"
|
173
|
+
result.merchant_account.individual_details.address_details.street_address.should == "123 Fake St"
|
174
|
+
result.merchant_account.individual_details.address_details.locality.should == "Chicago"
|
175
|
+
result.merchant_account.individual_details.address_details.region.should == "IL"
|
176
|
+
result.merchant_account.individual_details.address_details.postal_code.should == "60622"
|
177
|
+
result.merchant_account.business_details.dba_name.should == "James's Bloggs"
|
178
|
+
result.merchant_account.business_details.legal_name.should == "James's Bloggs Inc"
|
179
|
+
result.merchant_account.business_details.tax_id.should == "123456789"
|
180
|
+
result.merchant_account.business_details.address_details.street_address.should == "999 Fake St"
|
181
|
+
result.merchant_account.business_details.address_details.locality.should == "Miami"
|
182
|
+
result.merchant_account.business_details.address_details.region.should == "FL"
|
183
|
+
result.merchant_account.business_details.address_details.postal_code.should == "99999"
|
184
|
+
result.merchant_account.funding_details.account_number_last_4.should == "8798"
|
185
|
+
result.merchant_account.funding_details.routing_number.should == "071000013"
|
186
|
+
result.merchant_account.funding_details.email.should == "check@this.com"
|
187
|
+
result.merchant_account.funding_details.mobile_phone.should == "1234567890"
|
188
|
+
result.merchant_account.funding_details.destination.should == Braintree::MerchantAccount::FundingDestinations::MobilePhone
|
189
|
+
end
|
190
|
+
|
191
|
+
it "does not require all fields" do
|
192
|
+
result = Braintree::MerchantAccount.update("sandbox_sub_merchant_account", { :individual => { :first_name => "Jose" } })
|
193
|
+
result.should be_success
|
194
|
+
end
|
195
|
+
|
196
|
+
it "handles validation errors for blank fields" do
|
197
|
+
result = Braintree::MerchantAccount.update(
|
198
|
+
"sandbox_sub_merchant_account", {
|
199
|
+
:individual => {
|
200
|
+
:first_name => "",
|
201
|
+
:last_name => "",
|
202
|
+
:email => "",
|
203
|
+
:phone => "",
|
204
|
+
:address => {
|
205
|
+
:street_address => "",
|
206
|
+
:postal_code => "",
|
207
|
+
:locality => "",
|
208
|
+
:region => "",
|
209
|
+
},
|
210
|
+
:date_of_birth => "",
|
211
|
+
:ssn => "",
|
212
|
+
},
|
213
|
+
:business => {
|
214
|
+
:legal_name => "",
|
215
|
+
:dba_name => "",
|
216
|
+
:tax_id => ""
|
217
|
+
},
|
218
|
+
:funding => {
|
219
|
+
:destination => "",
|
220
|
+
:routing_number => "",
|
221
|
+
:account_number => ""
|
222
|
+
},
|
223
|
+
}
|
224
|
+
)
|
225
|
+
|
226
|
+
result.should_not be_success
|
227
|
+
result.errors.for(:merchant_account).for(:individual).on(:first_name).map(&:code).should == [Braintree::ErrorCodes::MerchantAccount::Individual::FirstNameIsRequired]
|
228
|
+
result.errors.for(:merchant_account).for(:individual).on(:last_name).map(&:code).should == [Braintree::ErrorCodes::MerchantAccount::Individual::LastNameIsRequired]
|
229
|
+
result.errors.for(:merchant_account).for(:individual).on(:date_of_birth).map(&:code).should == [Braintree::ErrorCodes::MerchantAccount::Individual::DateOfBirthIsRequired]
|
230
|
+
result.errors.for(:merchant_account).for(:individual).on(:email).map(&:code).should == [Braintree::ErrorCodes::MerchantAccount::Individual::EmailIsRequired]
|
231
|
+
result.errors.for(:merchant_account).for(:individual).for(:address).on(:street_address).map(&:code).should == [Braintree::ErrorCodes::MerchantAccount::Individual::Address::StreetAddressIsRequired]
|
232
|
+
result.errors.for(:merchant_account).for(:individual).for(:address).on(:postal_code).map(&:code).should == [Braintree::ErrorCodes::MerchantAccount::Individual::Address::PostalCodeIsRequired]
|
233
|
+
result.errors.for(:merchant_account).for(:individual).for(:address).on(:locality).map(&:code).should == [Braintree::ErrorCodes::MerchantAccount::Individual::Address::LocalityIsRequired]
|
234
|
+
result.errors.for(:merchant_account).for(:individual).for(:address).on(:region).map(&:code).should == [Braintree::ErrorCodes::MerchantAccount::Individual::Address::RegionIsRequired]
|
235
|
+
result.errors.for(:merchant_account).for(:funding).on(:destination).map(&:code).should == [Braintree::ErrorCodes::MerchantAccount::Funding::DestinationIsRequired]
|
236
|
+
result.errors.for(:merchant_account).on(:base).should be_empty
|
237
|
+
end
|
238
|
+
|
239
|
+
it "handles validation errors for invalid fields" do
|
240
|
+
result = Braintree::MerchantAccount.update(
|
241
|
+
"sandbox_sub_merchant_account", {
|
242
|
+
:individual => {
|
243
|
+
:first_name => "<>",
|
244
|
+
:last_name => "<>",
|
245
|
+
:email => "bad",
|
246
|
+
:phone => "999",
|
247
|
+
:address => {
|
248
|
+
:street_address => "nope",
|
249
|
+
:postal_code => "1",
|
250
|
+
:region => "QQ",
|
251
|
+
},
|
252
|
+
:date_of_birth => "hah",
|
253
|
+
:ssn => "12345",
|
254
|
+
},
|
255
|
+
:business => {
|
256
|
+
:legal_name => "``{}",
|
257
|
+
:dba_name => "{}``",
|
258
|
+
:tax_id => "bad",
|
259
|
+
:address => {
|
260
|
+
:street_address => "nope",
|
261
|
+
:postal_code => "1",
|
262
|
+
:region => "QQ",
|
263
|
+
},
|
264
|
+
},
|
265
|
+
:funding => {
|
266
|
+
:destination => "MY WALLET",
|
267
|
+
:routing_number => "LEATHER",
|
268
|
+
:account_number => "BACK POCKET",
|
269
|
+
:email => "BILLFOLD",
|
270
|
+
:mobile_phone => "TRIFOLD"
|
271
|
+
},
|
272
|
+
}
|
273
|
+
)
|
274
|
+
|
275
|
+
result.should_not be_success
|
276
|
+
result.errors.for(:merchant_account).for(:individual).on(:first_name).map(&:code).should == [Braintree::ErrorCodes::MerchantAccount::Individual::FirstNameIsInvalid]
|
277
|
+
result.errors.for(:merchant_account).for(:individual).on(:last_name).map(&:code).should == [Braintree::ErrorCodes::MerchantAccount::Individual::LastNameIsInvalid]
|
278
|
+
result.errors.for(:merchant_account).for(:individual).on(:email).map(&:code).should == [Braintree::ErrorCodes::MerchantAccount::Individual::EmailIsInvalid]
|
279
|
+
result.errors.for(:merchant_account).for(:individual).on(:phone).map(&:code).should == [Braintree::ErrorCodes::MerchantAccount::Individual::PhoneIsInvalid]
|
280
|
+
result.errors.for(:merchant_account).for(:individual).for(:address).on(:street_address).map(&:code).should == [Braintree::ErrorCodes::MerchantAccount::Individual::Address::StreetAddressIsInvalid]
|
281
|
+
result.errors.for(:merchant_account).for(:individual).for(:address).on(:postal_code).map(&:code).should == [Braintree::ErrorCodes::MerchantAccount::Individual::Address::PostalCodeIsInvalid]
|
282
|
+
result.errors.for(:merchant_account).for(:individual).for(:address).on(:region).map(&:code).should == [Braintree::ErrorCodes::MerchantAccount::Individual::Address::RegionIsInvalid]
|
283
|
+
result.errors.for(:merchant_account).for(:individual).on(:ssn).map(&:code).should == [Braintree::ErrorCodes::MerchantAccount::Individual::SsnIsInvalid]
|
284
|
+
|
285
|
+
result.errors.for(:merchant_account).for(:business).on(:legal_name).map(&:code).should == [Braintree::ErrorCodes::MerchantAccount::Business::LegalNameIsInvalid]
|
286
|
+
result.errors.for(:merchant_account).for(:business).on(:dba_name).map(&:code).should == [Braintree::ErrorCodes::MerchantAccount::Business::DbaNameIsInvalid]
|
287
|
+
result.errors.for(:merchant_account).for(:business).on(:tax_id).map(&:code).should == [Braintree::ErrorCodes::MerchantAccount::Business::TaxIdIsInvalid]
|
288
|
+
result.errors.for(:merchant_account).for(:business).for(:address).on(:street_address).map(&:code).should == [Braintree::ErrorCodes::MerchantAccount::Business::Address::StreetAddressIsInvalid]
|
289
|
+
result.errors.for(:merchant_account).for(:business).for(:address).on(:postal_code).map(&:code).should == [Braintree::ErrorCodes::MerchantAccount::Business::Address::PostalCodeIsInvalid]
|
290
|
+
result.errors.for(:merchant_account).for(:business).for(:address).on(:region).map(&:code).should == [Braintree::ErrorCodes::MerchantAccount::Business::Address::RegionIsInvalid]
|
291
|
+
|
292
|
+
result.errors.for(:merchant_account).for(:funding).on(:destination).map(&:code).should == [Braintree::ErrorCodes::MerchantAccount::Funding::DestinationIsInvalid]
|
293
|
+
result.errors.for(:merchant_account).for(:funding).on(:routing_number).map(&:code).should == [Braintree::ErrorCodes::MerchantAccount::Funding::RoutingNumberIsInvalid]
|
294
|
+
result.errors.for(:merchant_account).for(:funding).on(:account_number).map(&:code).should == [Braintree::ErrorCodes::MerchantAccount::Funding::AccountNumberIsInvalid]
|
295
|
+
result.errors.for(:merchant_account).for(:funding).on(:email).map(&:code).should == [Braintree::ErrorCodes::MerchantAccount::Funding::EmailIsInvalid]
|
296
|
+
result.errors.for(:merchant_account).for(:funding).on(:mobile_phone).map(&:code).should == [Braintree::ErrorCodes::MerchantAccount::Funding::MobilePhoneIsInvalid]
|
297
|
+
|
298
|
+
result.errors.for(:merchant_account).on(:base).should be_empty
|
299
|
+
end
|
300
|
+
|
301
|
+
it "handles validation errors for business fields" do
|
302
|
+
result = Braintree::MerchantAccount.update(
|
303
|
+
"sandbox_sub_merchant_account", {
|
304
|
+
:business => {
|
305
|
+
:legal_name => "",
|
306
|
+
:tax_id => "111223333",
|
307
|
+
},
|
308
|
+
}
|
309
|
+
)
|
310
|
+
|
311
|
+
result.should_not be_success
|
312
|
+
result.errors.for(:merchant_account).for(:business).on(:legal_name).map(&:code).should == [Braintree::ErrorCodes::MerchantAccount::Business::LegalNameIsRequiredWithTaxId]
|
313
|
+
result.errors.for(:merchant_account).for(:business).on(:tax_id).map(&:code).should == [Braintree::ErrorCodes::MerchantAccount::Business::TaxIdMustBeBlank]
|
314
|
+
|
315
|
+
result = Braintree::MerchantAccount.update(
|
316
|
+
"sandbox_sub_merchant_account", {
|
317
|
+
:business => {
|
318
|
+
:legal_name => "legal_name",
|
319
|
+
:tax_id => "",
|
320
|
+
},
|
321
|
+
}
|
322
|
+
)
|
323
|
+
|
324
|
+
result.should_not be_success
|
325
|
+
result.errors.for(:merchant_account).for(:business).on(:tax_id).map(&:code).should == [Braintree::ErrorCodes::MerchantAccount::Business::TaxIdIsRequiredWithLegalName]
|
326
|
+
end
|
327
|
+
|
328
|
+
it "handles validation errors for funding fields" do
|
329
|
+
result = Braintree::MerchantAccount.update(
|
330
|
+
"sandbox_sub_merchant_account", {
|
331
|
+
:funding => {
|
332
|
+
:destination => Braintree::MerchantAccount::FundingDestinations::Bank,
|
333
|
+
:routing_number => "",
|
334
|
+
:account_number => ""
|
335
|
+
},
|
336
|
+
}
|
337
|
+
)
|
338
|
+
|
339
|
+
result.should_not be_success
|
340
|
+
result.errors.for(:merchant_account).for(:funding).on(:routing_number).map(&:code).should == [Braintree::ErrorCodes::MerchantAccount::Funding::RoutingNumberIsRequired]
|
341
|
+
result.errors.for(:merchant_account).for(:funding).on(:account_number).map(&:code).should == [Braintree::ErrorCodes::MerchantAccount::Funding::AccountNumberIsRequired]
|
342
|
+
|
343
|
+
result = Braintree::MerchantAccount.update(
|
344
|
+
"sandbox_sub_merchant_account", {
|
345
|
+
:funding => {
|
346
|
+
:destination => Braintree::MerchantAccount::FundingDestinations::Email,
|
347
|
+
:email => ""
|
348
|
+
},
|
349
|
+
}
|
350
|
+
)
|
351
|
+
|
352
|
+
result.should_not be_success
|
353
|
+
result.errors.for(:merchant_account).for(:funding).on(:email).map(&:code).should == [Braintree::ErrorCodes::MerchantAccount::Funding::EmailIsRequired]
|
354
|
+
|
355
|
+
result = Braintree::MerchantAccount.update(
|
356
|
+
"sandbox_sub_merchant_account", {
|
357
|
+
:funding => {
|
358
|
+
:destination => Braintree::MerchantAccount::FundingDestinations::MobilePhone,
|
359
|
+
:mobile_phone => ""
|
360
|
+
},
|
361
|
+
}
|
362
|
+
)
|
363
|
+
|
364
|
+
result.should_not be_success
|
365
|
+
result.errors.for(:merchant_account).for(:funding).on(:mobile_phone).map(&:code).should == [Braintree::ErrorCodes::MerchantAccount::Funding::MobilePhoneIsRequired]
|
72
366
|
end
|
73
367
|
end
|
74
368
|
end
|
@@ -49,6 +49,30 @@ describe Braintree::TransparentRedirect do
|
|
49
49
|
transaction.credit_card_details.expiration_date.should == "05/2009"
|
50
50
|
end
|
51
51
|
|
52
|
+
it "allows specifying a service fee" do
|
53
|
+
params = {
|
54
|
+
:transaction => {
|
55
|
+
:amount => Braintree::Test::TransactionAmounts::Authorize,
|
56
|
+
:merchant_account_id => SpecHelper::NonDefaultSubMerchantAccountId,
|
57
|
+
:credit_card => {
|
58
|
+
:number => Braintree::Test::CreditCardNumbers::Visa,
|
59
|
+
:expiration_date => "05/2009"
|
60
|
+
},
|
61
|
+
:service_fee_amount => "1.00"
|
62
|
+
}
|
63
|
+
}
|
64
|
+
tr_data_params = {
|
65
|
+
:transaction => {
|
66
|
+
:type => "sale"
|
67
|
+
}
|
68
|
+
}
|
69
|
+
tr_data = Braintree::TransparentRedirect.transaction_data({:redirect_url => "http://example.com"}.merge(tr_data_params))
|
70
|
+
query_string_response = SpecHelper.simulate_form_post_for_tr(tr_data, params)
|
71
|
+
result = Braintree::TransparentRedirect.confirm(query_string_response)
|
72
|
+
result.success?.should == true
|
73
|
+
result.transaction.service_fee_amount.should == BigDecimal.new("1.00")
|
74
|
+
end
|
75
|
+
|
52
76
|
it "returns an error when there's an error" do
|
53
77
|
params = {
|
54
78
|
:transaction => {
|
@@ -102,7 +102,7 @@ describe Braintree::WebhookNotification do
|
|
102
102
|
notification.merchant_account.master_merchant_account.id.should == "master_ma_for_my_id"
|
103
103
|
notification.merchant_account.master_merchant_account.status.should == Braintree::MerchantAccount::Status::Suspended
|
104
104
|
notification.message.should == "Credit score is too low"
|
105
|
-
notification.errors.for(:merchant_account).on(:base).first.code.should == Braintree::ErrorCodes::MerchantAccount::
|
105
|
+
notification.errors.for(:merchant_account).on(:base).first.code.should == Braintree::ErrorCodes::MerchantAccount::DeclinedOFAC
|
106
106
|
end
|
107
107
|
end
|
108
108
|
|
metadata
CHANGED
@@ -1,18 +1,20 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: braintree
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.27.0
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Braintree
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2013-
|
12
|
+
date: 2013-12-04 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: builder
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
16
18
|
requirements:
|
17
19
|
- - ! '>='
|
18
20
|
- !ruby/object:Gem::Version
|
@@ -20,6 +22,7 @@ dependencies:
|
|
20
22
|
type: :runtime
|
21
23
|
prerelease: false
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
23
26
|
requirements:
|
24
27
|
- - ! '>='
|
25
28
|
- !ruby/object:Gem::Version
|
@@ -33,160 +36,165 @@ files:
|
|
33
36
|
- README.rdoc
|
34
37
|
- LICENSE
|
35
38
|
- lib/braintree.rb
|
36
|
-
- lib/braintree/
|
37
|
-
- lib/braintree/
|
38
|
-
- lib/braintree/
|
39
|
-
- lib/braintree/webhook_notification.rb
|
40
|
-
- lib/braintree/validation_error_collection.rb
|
41
|
-
- lib/braintree/transaction.rb
|
42
|
-
- lib/braintree/credit_card_verification_gateway.rb
|
43
|
-
- lib/braintree/webhook_notification_gateway.rb
|
44
|
-
- lib/braintree/transaction_search.rb
|
45
|
-
- lib/braintree/transaction_gateway.rb
|
46
|
-
- lib/braintree/add_on.rb
|
47
|
-
- lib/braintree/resource_collection.rb
|
48
|
-
- lib/braintree/address_gateway.rb
|
49
|
-
- lib/braintree/successful_result.rb
|
50
|
-
- lib/braintree/plan.rb
|
51
|
-
- lib/braintree/subscription_search.rb
|
52
|
-
- lib/braintree/descriptor.rb
|
53
|
-
- lib/braintree/error_codes.rb
|
39
|
+
- lib/braintree/settlement_batch_summary_gateway.rb
|
40
|
+
- lib/braintree/discount.rb
|
41
|
+
- lib/braintree/base_module.rb
|
54
42
|
- lib/braintree/xml.rb
|
55
|
-
- lib/braintree/discount_gateway.rb
|
56
|
-
- lib/braintree/xml/generator.rb
|
57
|
-
- lib/braintree/xml/parser.rb
|
58
|
-
- lib/braintree/xml/rexml.rb
|
59
|
-
- lib/braintree/xml/libxml.rb
|
60
|
-
- lib/braintree/version.rb
|
61
|
-
- lib/braintree/address.rb
|
62
|
-
- lib/braintree/modification.rb
|
63
|
-
- lib/braintree/http.rb
|
64
|
-
- lib/braintree/digest.rb
|
65
43
|
- lib/braintree/customer.rb
|
44
|
+
- lib/braintree/validation_error.rb
|
45
|
+
- lib/braintree/transaction_gateway.rb
|
66
46
|
- lib/braintree/gateway.rb
|
67
|
-
- lib/braintree/
|
68
|
-
- lib/braintree/advanced_search.rb
|
69
|
-
- lib/braintree/settlement_batch_summary.rb
|
70
|
-
- lib/braintree/errors.rb
|
47
|
+
- lib/braintree/exceptions.rb
|
71
48
|
- lib/braintree/customer_gateway.rb
|
72
|
-
- lib/braintree/
|
49
|
+
- lib/braintree/credit_card_verification.rb
|
50
|
+
- lib/braintree/digest.rb
|
73
51
|
- lib/braintree/credit_card.rb
|
74
|
-
- lib/braintree/
|
75
|
-
- lib/braintree/
|
76
|
-
- lib/braintree/address/country_names.rb
|
52
|
+
- lib/braintree/discount_gateway.rb
|
53
|
+
- lib/braintree/subscription.rb
|
77
54
|
- lib/braintree/util.rb
|
78
|
-
- lib/braintree/
|
79
|
-
- lib/braintree/
|
80
|
-
- lib/braintree/credit_card_verification.rb
|
55
|
+
- lib/braintree/configuration.rb
|
56
|
+
- lib/braintree/merchant_account.rb
|
81
57
|
- lib/braintree/credit_card_gateway.rb
|
82
|
-
- lib/braintree/
|
58
|
+
- lib/braintree/resource_collection.rb
|
83
59
|
- lib/braintree/merchant_account_gateway.rb
|
84
|
-
- lib/braintree/
|
85
|
-
- lib/braintree/
|
86
|
-
- lib/braintree/
|
87
|
-
- lib/braintree/
|
88
|
-
- lib/braintree/
|
60
|
+
- lib/braintree/address/country_names.rb
|
61
|
+
- lib/braintree/credit_card_verification_search.rb
|
62
|
+
- lib/braintree/version.rb
|
63
|
+
- lib/braintree/plan.rb
|
64
|
+
- lib/braintree/error_codes.rb
|
65
|
+
- lib/braintree/validation_error_collection.rb
|
66
|
+
- lib/braintree/address_gateway.rb
|
67
|
+
- lib/braintree/subscription_gateway.rb
|
68
|
+
- lib/braintree/webhook_notification_gateway.rb
|
69
|
+
- lib/braintree/add_on.rb
|
89
70
|
- lib/braintree/test/credit_card.rb
|
71
|
+
- lib/braintree/test/transaction_amounts.rb
|
72
|
+
- lib/braintree/test/venmo_sdk.rb
|
90
73
|
- lib/braintree/test/merchant_account.rb
|
91
|
-
- lib/braintree/
|
92
|
-
- lib/braintree/
|
74
|
+
- lib/braintree/xml/rexml.rb
|
75
|
+
- lib/braintree/xml/generator.rb
|
76
|
+
- lib/braintree/xml/libxml.rb
|
77
|
+
- lib/braintree/xml/parser.rb
|
78
|
+
- lib/braintree/transparent_redirect.rb
|
93
79
|
- lib/braintree/plan_gateway.rb
|
94
|
-
- lib/braintree/
|
80
|
+
- lib/braintree/transaction_search.rb
|
81
|
+
- lib/braintree/customer_search.rb
|
82
|
+
- lib/braintree/transparent_redirect_gateway.rb
|
83
|
+
- lib/braintree/webhook_notification.rb
|
84
|
+
- lib/braintree/webhook_testing_gateway.rb
|
85
|
+
- lib/braintree/webhook_testing.rb
|
86
|
+
- lib/braintree/credit_card_verification_gateway.rb
|
87
|
+
- lib/braintree/descriptor.rb
|
88
|
+
- lib/braintree/modification.rb
|
89
|
+
- lib/braintree/transaction.rb
|
90
|
+
- lib/braintree/merchant_account/individual_details.rb
|
91
|
+
- lib/braintree/merchant_account/address_details.rb
|
92
|
+
- lib/braintree/merchant_account/funding_details.rb
|
93
|
+
- lib/braintree/merchant_account/business_details.rb
|
94
|
+
- lib/braintree/add_on_gateway.rb
|
95
|
+
- lib/braintree/successful_result.rb
|
96
|
+
- lib/braintree/advanced_search.rb
|
97
|
+
- lib/braintree/subscription_search.rb
|
95
98
|
- lib/braintree/error_result.rb
|
96
|
-
- lib/braintree/
|
97
|
-
- lib/braintree/
|
98
|
-
- lib/braintree/
|
99
|
+
- lib/braintree/settlement_batch_summary.rb
|
100
|
+
- lib/braintree/address.rb
|
101
|
+
- lib/braintree/settlement_batch.rb
|
102
|
+
- lib/braintree/transaction/disbursement_details.rb
|
99
103
|
- lib/braintree/transaction/status_details.rb
|
104
|
+
- lib/braintree/transaction/address_details.rb
|
105
|
+
- lib/braintree/transaction/subscription_details.rb
|
100
106
|
- lib/braintree/transaction/customer_details.rb
|
101
107
|
- lib/braintree/transaction/credit_card_details.rb
|
102
|
-
- lib/braintree/
|
103
|
-
- lib/
|
104
|
-
- lib/ssl/securetrust_ca.crt
|
108
|
+
- lib/braintree/errors.rb
|
109
|
+
- lib/braintree/http.rb
|
105
110
|
- lib/ssl/api_braintreegateway_com.ca.crt
|
111
|
+
- lib/ssl/securetrust_ca.crt
|
112
|
+
- lib/ssl/www_braintreegateway_com.ca.crt
|
106
113
|
- lib/ssl/sandbox_braintreegateway_com.ca.crt
|
107
|
-
- spec/
|
108
|
-
- spec/
|
109
|
-
- spec/integration/braintree/transparent_redirect_spec.rb
|
110
|
-
- spec/integration/braintree/credit_card_verification_search_spec.rb
|
111
|
-
- spec/integration/braintree/advanced_search_spec.rb
|
112
|
-
- spec/integration/braintree/discount_spec.rb
|
113
|
-
- spec/integration/braintree/credit_card_spec.rb
|
114
|
-
- spec/integration/braintree/settlement_batch_summary_spec.rb
|
115
|
-
- spec/integration/braintree/address_spec.rb
|
116
|
-
- spec/integration/braintree/customer_search_spec.rb
|
117
|
-
- spec/integration/braintree/credit_card_verification_spec.rb
|
118
|
-
- spec/integration/braintree/plan_spec.rb
|
119
|
-
- spec/integration/braintree/http_spec.rb
|
120
|
-
- spec/integration/braintree/customer_spec.rb
|
121
|
-
- spec/integration/braintree/add_on_spec.rb
|
122
|
-
- spec/integration/braintree/transaction_spec.rb
|
123
|
-
- spec/integration/braintree/transaction_search_spec.rb
|
124
|
-
- spec/integration/braintree/subscription_spec.rb
|
125
|
-
- spec/integration/braintree/test/transaction_amounts_spec.rb
|
126
|
-
- spec/integration/braintree/merchant_account_spec.rb
|
127
|
-
- spec/spec_helper.rb
|
114
|
+
- spec/spec.opts
|
115
|
+
- spec/ssl/privateKey.key
|
128
116
|
- spec/ssl/certificate.crt
|
129
117
|
- spec/ssl/geotrust_global.crt
|
130
|
-
- spec/
|
131
|
-
- spec/httpsd.
|
118
|
+
- spec/hacks/tcp_socket.rb
|
119
|
+
- spec/script/httpsd.rb
|
132
120
|
- spec/unit/braintree_spec.rb
|
133
|
-
- spec/unit/spec_helper.rb
|
134
|
-
- spec/unit/braintree/transparent_redirect_spec.rb
|
135
|
-
- spec/unit/braintree/credit_card_verification_search_spec.rb
|
136
|
-
- spec/unit/braintree/base_module_spec.rb
|
137
121
|
- spec/unit/braintree/credit_card_spec.rb
|
138
|
-
- spec/unit/braintree/
|
139
|
-
- spec/unit/braintree/
|
140
|
-
- spec/unit/braintree/validation_error_collection_spec.rb
|
122
|
+
- spec/unit/braintree/errors_spec.rb
|
123
|
+
- spec/unit/braintree/subscription_search_spec.rb
|
141
124
|
- spec/unit/braintree/util_spec.rb
|
125
|
+
- spec/unit/braintree/address_spec.rb
|
126
|
+
- spec/unit/braintree/subscription_spec.rb
|
127
|
+
- spec/unit/braintree/webhook_notification_spec.rb
|
128
|
+
- spec/unit/braintree/transparent_redirect_spec.rb
|
129
|
+
- spec/unit/braintree/resource_collection_spec.rb
|
130
|
+
- spec/unit/braintree/http_spec.rb
|
131
|
+
- spec/unit/braintree/merchant_account_spec.rb
|
132
|
+
- spec/unit/braintree/customer_spec.rb
|
142
133
|
- spec/unit/braintree/error_result_spec.rb
|
134
|
+
- spec/unit/braintree/successful_result_spec.rb
|
143
135
|
- spec/unit/braintree/credit_card_verification_spec.rb
|
144
|
-
- spec/unit/braintree/
|
136
|
+
- spec/unit/braintree/validation_error_spec.rb
|
145
137
|
- spec/unit/braintree/xml/parser_spec.rb
|
138
|
+
- spec/unit/braintree/xml/rexml_spec.rb
|
146
139
|
- spec/unit/braintree/xml/libxml_spec.rb
|
140
|
+
- spec/unit/braintree/credit_card_verification_search_spec.rb
|
141
|
+
- spec/unit/braintree/base_module_spec.rb
|
142
|
+
- spec/unit/braintree/transaction_spec.rb
|
147
143
|
- spec/unit/braintree/configuration_spec.rb
|
148
|
-
- spec/unit/braintree/
|
149
|
-
- spec/unit/braintree/
|
150
|
-
- spec/unit/braintree/validation_error_spec.rb
|
151
|
-
- spec/unit/braintree/webhook_notification_spec.rb
|
152
|
-
- spec/unit/braintree/subscription_search_spec.rb
|
153
|
-
- spec/unit/braintree/http_spec.rb
|
154
|
-
- spec/unit/braintree/customer_spec.rb
|
144
|
+
- spec/unit/braintree/xml_spec.rb
|
145
|
+
- spec/unit/braintree/validation_error_collection_spec.rb
|
155
146
|
- spec/unit/braintree/modification_spec.rb
|
156
|
-
- spec/unit/braintree/
|
157
|
-
- spec/unit/braintree/resource_collection_spec.rb
|
158
|
-
- spec/unit/braintree/successful_result_spec.rb
|
159
|
-
- spec/unit/braintree/transaction_search_spec.rb
|
160
|
-
- spec/unit/braintree/subscription_spec.rb
|
161
|
-
- spec/unit/braintree/merchant_account_spec.rb
|
162
|
-
- spec/unit/braintree/transaction/deposit_details_spec.rb
|
147
|
+
- spec/unit/braintree/digest_spec.rb
|
163
148
|
- spec/unit/braintree/transaction/customer_details_spec.rb
|
149
|
+
- spec/unit/braintree/transaction/deposit_details_spec.rb
|
164
150
|
- spec/unit/braintree/transaction/credit_card_details_spec.rb
|
165
|
-
- spec/
|
166
|
-
- spec/
|
167
|
-
- spec/
|
151
|
+
- spec/unit/braintree/transaction_search_spec.rb
|
152
|
+
- spec/unit/spec_helper.rb
|
153
|
+
- spec/httpsd.pid
|
154
|
+
- spec/integration/braintree/credit_card_spec.rb
|
155
|
+
- spec/integration/braintree/add_on_spec.rb
|
156
|
+
- spec/integration/braintree/plan_spec.rb
|
157
|
+
- spec/integration/braintree/advanced_search_spec.rb
|
158
|
+
- spec/integration/braintree/error_codes_spec.rb
|
159
|
+
- spec/integration/braintree/address_spec.rb
|
160
|
+
- spec/integration/braintree/subscription_spec.rb
|
161
|
+
- spec/integration/braintree/transparent_redirect_spec.rb
|
162
|
+
- spec/integration/braintree/http_spec.rb
|
163
|
+
- spec/integration/braintree/merchant_account_spec.rb
|
164
|
+
- spec/integration/braintree/customer_spec.rb
|
165
|
+
- spec/integration/braintree/credit_card_verification_spec.rb
|
166
|
+
- spec/integration/braintree/test/transaction_amounts_spec.rb
|
167
|
+
- spec/integration/braintree/settlement_batch_summary_spec.rb
|
168
|
+
- spec/integration/braintree/credit_card_verification_search_spec.rb
|
169
|
+
- spec/integration/braintree/transaction_spec.rb
|
170
|
+
- spec/integration/braintree/customer_search_spec.rb
|
171
|
+
- spec/integration/braintree/discount_spec.rb
|
172
|
+
- spec/integration/braintree/transaction_search_spec.rb
|
173
|
+
- spec/integration/spec_helper.rb
|
174
|
+
- spec/spec_helper.rb
|
168
175
|
- braintree.gemspec
|
169
176
|
homepage: http://www.braintreepayments.com/
|
170
177
|
licenses: []
|
171
|
-
metadata: {}
|
172
178
|
post_install_message:
|
173
179
|
rdoc_options: []
|
174
180
|
require_paths:
|
175
181
|
- lib
|
176
182
|
required_ruby_version: !ruby/object:Gem::Requirement
|
183
|
+
none: false
|
177
184
|
requirements:
|
178
185
|
- - ! '>='
|
179
186
|
- !ruby/object:Gem::Version
|
180
187
|
version: '0'
|
181
188
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
189
|
+
none: false
|
182
190
|
requirements:
|
183
191
|
- - ! '>='
|
184
192
|
- !ruby/object:Gem::Version
|
185
193
|
version: '0'
|
186
194
|
requirements: []
|
187
195
|
rubyforge_project: braintree
|
188
|
-
rubygems_version:
|
196
|
+
rubygems_version: 1.8.24
|
189
197
|
signing_key:
|
190
|
-
specification_version:
|
198
|
+
specification_version: 3
|
191
199
|
summary: Braintree Gateway Ruby Client Library
|
192
200
|
test_files: []
|
checksums.yaml
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
---
|
2
|
-
!binary "U0hBMQ==":
|
3
|
-
metadata.gz: !binary |-
|
4
|
-
MDE4OTA4ZjI2YTY1YzEzMDFmZDg0Yzg3MjU0NmNkZDU2MTg4MDEyYQ==
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
NWRjMTBlNzk2ZjUxMTY2OGNiMTgyZjBiNzJlNmQwNzFiOTYzZTFhMQ==
|
7
|
-
!binary "U0hBNTEy":
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
NThlNjAzYmNkNDRlMDE5ZDhlMjNhYTdlYjBiMTkyNTVmNWRhNmQ3OGI5MTRk
|
10
|
-
MzU1YWMyMmI3ZjgzZGFjYzI3OTIyZWUxMzJhMjc5ODAzMjc3NDkzNWExNWM0
|
11
|
-
NzA5Y2ZkZGVkYTYxMTM1YjVkOTVlYzgzNmFhNDAzNWQ4MzNmY2Q=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
MTlkMWMzMjIzZTQ4ZGFhZTRiODgwMDQxYTlkYzhlZGZhNGEyMTk1MjM5Y2Uz
|
14
|
-
MjkxMWY2NzViZjZlOTJmNDQyZDA3OGQ3ZmIxZGUzMmZkZGE5Mjk5Y2E5Mjhk
|
15
|
-
YWE2OWFlMzlmYTQwMDAzZjMwODcxNjVmZTBkZTBjZmYwMGRlN2M=
|