braintree 2.5.2 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -22,6 +22,7 @@ require "braintree/base_module"
22
22
  require "braintree/modification"
23
23
 
24
24
  require "braintree/add_on"
25
+ require "braintree/address/country_names"
25
26
  require "braintree/address"
26
27
  require "braintree/address_gateway"
27
28
  require "braintree/advanced_search"
@@ -43,13 +43,13 @@ module Braintree
43
43
 
44
44
  # Deprecated. Use Braintree::Address.delete
45
45
  def delete
46
- warn "[DEPRECATED] delete as an instance method is deprecated. Please use CreditCard.delete"
46
+ warn "[DEPRECATED] delete as an instance method is deprecated. Please use Address.delete"
47
47
  @gateway.address.delete(customer_id, self.id)
48
48
  end
49
49
 
50
50
  # Deprecated. Use Braintree::Address.update
51
51
  def update(attributes)
52
- warn "[DEPRECATED] update as an instance method is deprecated. Please use CreditCard.update"
52
+ warn "[DEPRECATED] update as an instance method is deprecated. Please use Address.update"
53
53
  result = @gateway.address.update(customer_id, id, attributes)
54
54
  if result.success?
55
55
  copy_instance_variables_from_object result.address
@@ -59,7 +59,7 @@ module Braintree
59
59
 
60
60
  # Deprecated. Use Braintree::Address.update!
61
61
  def update!(attributes)
62
- warn "[DEPRECATED] update! as an instance method is deprecated. Please use CreditCard.update!"
62
+ warn "[DEPRECATED] update! as an instance method is deprecated. Please use Address.update!"
63
63
  return_object_or_raise(:address) { update(attributes) }
64
64
  end
65
65
 
@@ -0,0 +1,251 @@
1
+ module Braintree
2
+ class Address
3
+ CountryNames = [
4
+ ["Afghanistan", "AF", "AFG", "004"],
5
+ ["Åland", "AX", "ALA", "248"],
6
+ ["Albania", "AL", "ALB", "008"],
7
+ ["Algeria", "DZ", "DZA", "012"],
8
+ ["American Samoa", "AS", "ASM", "016"],
9
+ ["Andorra", "AD", "AND", "020"],
10
+ ["Angola", "AO", "AGO", "024"],
11
+ ["Anguilla", "AI", "AIA", "660"],
12
+ ["Antarctica", "AQ", "ATA", "010"],
13
+ ["Antigua and Barbuda", "AG", "ATG", "028"],
14
+ ["Argentina", "AR", "ARG", "032"],
15
+ ["Armenia", "AM", "ARM", "051"],
16
+ ["Aruba", "AW", "ABW", "533"],
17
+ ["Australia", "AU", "AUS", "036"],
18
+ ["Austria", "AT", "AUT", "040"],
19
+ ["Azerbaijan", "AZ", "AZE", "031"],
20
+ ["Bahamas", "BS", "BHS", "044"],
21
+ ["Bahrain", "BH", "BHR", "048"],
22
+ ["Bangladesh", "BD", "BGD", "050"],
23
+ ["Barbados", "BB", "BRB", "052"],
24
+ ["Belarus", "BY", "BLR", "112"],
25
+ ["Belgium", "BE", "BEL", "056"],
26
+ ["Belize", "BZ", "BLZ", "084"],
27
+ ["Benin", "BJ", "BEN", "204"],
28
+ ["Bermuda", "BM", "BMU", "060"],
29
+ ["Bhutan", "BT", "BTN", "064"],
30
+ ["Bolivia", "BO", "BOL", "068"],
31
+ ["Bosnia and Herzegovina", "BA", "BIH", "070"],
32
+ ["Botswana", "BW", "BWA", "072"],
33
+ ["Bouvet Island", "BV", "BVT", "074"],
34
+ ["Brazil", "BR", "BRA", "076"],
35
+ ["British Indian Ocean Territory", "IO", "IOT", "086"],
36
+ ["Brunei Darussalam", "BN", "BRN", "096"],
37
+ ["Bulgaria", "BG", "BGR", "100"],
38
+ ["Burkina Faso", "BF", "BFA", "854"],
39
+ ["Burundi", "BI", "BDI", "108"],
40
+ ["Cambodia", "KH", "KHM", "116"],
41
+ ["Cameroon", "CM", "CMR", "120"],
42
+ ["Canada", "CA", "CAN", "124"],
43
+ ["Cape Verde", "CV", "CPV", "132"],
44
+ ["Cayman Islands", "KY", "CYM", "136"],
45
+ ["Central African Republic", "CF", "CAF", "140"],
46
+ ["Chad", "TD", "TCD", "148"],
47
+ ["Chile", "CL", "CHL", "152"],
48
+ ["China", "CN", "CHN", "156"],
49
+ ["Christmas Island", "CX", "CXR", "162"],
50
+ ["Cocos (Keeling) Islands", "CC", "CCK", "166"],
51
+ ["Colombia", "CO", "COL", "170"],
52
+ ["Comoros", "KM", "COM", "174"],
53
+ ["Congo (Brazzaville)", "CG", "COG", "178"],
54
+ ["Congo (Kinshasa)", "CD", "COD", "180"],
55
+ ["Cook Islands", "CK", "COK", "184"],
56
+ ["Costa Rica", "CR", "CRI", "188"],
57
+ ["Côte d'Ivoire", "CI", "CIV", "384"],
58
+ ["Croatia", "HR", "HRV", "191"],
59
+ ["Cuba", "CU", "CUB", "192"],
60
+ ["Cyprus", "CY", "CYP", "196"],
61
+ ["Czech Republic", "CZ", "CZE", "203"],
62
+ ["Denmark", "DK", "DNK", "208"],
63
+ ["Djibouti", "DJ", "DJI", "262"],
64
+ ["Dominica", "DM", "DMA", "212"],
65
+ ["Dominican Republic", "DO", "DOM", "214"],
66
+ ["Ecuador", "EC", "ECU", "218"],
67
+ ["Egypt", "EG", "EGY", "818"],
68
+ ["El Salvador", "SV", "SLV", "222"],
69
+ ["Equatorial Guinea", "GQ", "GNQ", "226"],
70
+ ["Eritrea", "ER", "ERI", "232"],
71
+ ["Estonia", "EE", "EST", "233"],
72
+ ["Ethiopia", "ET", "ETH", "231"],
73
+ ["Falkland Islands", "FK", "FLK", "238"],
74
+ ["Faroe Islands", "FO", "FRO", "234"],
75
+ ["Fiji", "FJ", "FJI", "242"],
76
+ ["Finland", "FI", "FIN", "246"],
77
+ ["France", "FR", "FRA", "250"],
78
+ ["French Guiana", "GF", "GUF", "254"],
79
+ ["French Polynesia", "PF", "PYF", "258"],
80
+ ["French Southern Lands", "TF", "ATF", "260"],
81
+ ["Gabon", "GA", "GAB", "266"],
82
+ ["Gambia", "GM", "GMB", "270"],
83
+ ["Georgia", "GE", "GEO", "268"],
84
+ ["Germany", "DE", "DEU", "276"],
85
+ ["Ghana", "GH", "GHA", "288"],
86
+ ["Gibraltar", "GI", "GIB", "292"],
87
+ ["Greece", "GR", "GRC", "300"],
88
+ ["Greenland", "GL", "GRL", "304"],
89
+ ["Grenada", "GD", "GRD", "308"],
90
+ ["Guadeloupe", "GP", "GLP", "312"],
91
+ ["Guam", "GU", "GUM", "316"],
92
+ ["Guatemala", "GT", "GTM", "320"],
93
+ ["Guernsey", "GG", "GGY", "831"],
94
+ ["Guinea", "GN", "GIN", "324"],
95
+ ["Guinea-Bissau", "GW", "GNB", "624"],
96
+ ["Guyana", "GY", "GUY", "328"],
97
+ ["Haiti", "HT", "HTI", "332"],
98
+ ["Heard and McDonald Islands", "HM", "HMD", "334"],
99
+ ["Honduras", "HN", "HND", "340"],
100
+ ["Hong Kong", "HK", "HKG", "344"],
101
+ ["Hungary", "HU", "HUN", "348"],
102
+ ["Iceland", "IS", "ISL", "352"],
103
+ ["India", "IN", "IND", "356"],
104
+ ["Indonesia", "ID", "IDN", "360"],
105
+ ["Iran", "IR", "IRN", "364"],
106
+ ["Iraq", "IQ", "IRQ", "368"],
107
+ ["Ireland", "IE", "IRL", "372"],
108
+ ["Isle of Man", "IM", "IMN", "833"],
109
+ ["Israel", "IL", "ISR", "376"],
110
+ ["Italy", "IT", "ITA", "380"],
111
+ ["Jamaica", "JM", "JAM", "388"],
112
+ ["Japan", "JP", "JPN", "392"],
113
+ ["Jersey", "JE", "JEY", "832"],
114
+ ["Jordan", "JO", "JOR", "400"],
115
+ ["Kazakhstan", "KZ", "KAZ", "398"],
116
+ ["Kenya", "KE", "KEN", "404"],
117
+ ["Kiribati", "KI", "KIR", "296"],
118
+ ["Korea, North", "KP", "PRK", "408"],
119
+ ["Korea, South", "KR", "KOR", "410"],
120
+ ["Kuwait", "KW", "KWT", "414"],
121
+ ["Kyrgyzstan", "KG", "KGZ", "417"],
122
+ ["Laos", "LA", "LAO", "418"],
123
+ ["Latvia", "LV", "LVA", "428"],
124
+ ["Lebanon", "LB", "LBN", "422"],
125
+ ["Lesotho", "LS", "LSO", "426"],
126
+ ["Liberia", "LR", "LBR", "430"],
127
+ ["Libya", "LY", "LBY", "434"],
128
+ ["Liechtenstein", "LI", "LIE", "438"],
129
+ ["Lithuania", "LT", "LTU", "440"],
130
+ ["Luxembourg", "LU", "LUX", "442"],
131
+ ["Macau", "MO", "MAC", "446"],
132
+ ["Macedonia", "MK", "MKD", "807"],
133
+ ["Madagascar", "MG", "MDG", "450"],
134
+ ["Malawi", "MW", "MWI", "454"],
135
+ ["Malaysia", "MY", "MYS", "458"],
136
+ ["Maldives", "MV", "MDV", "462"],
137
+ ["Mali", "ML", "MLI", "466"],
138
+ ["Malta", "MT", "MLT", "470"],
139
+ ["Marshall Islands", "MH", "MHL", "584"],
140
+ ["Martinique", "MQ", "MTQ", "474"],
141
+ ["Mauritania", "MR", "MRT", "478"],
142
+ ["Mauritius", "MU", "MUS", "480"],
143
+ ["Mayotte", "YT", "MYT", "175"],
144
+ ["Mexico", "MX", "MEX", "484"],
145
+ ["Micronesia", "FM", "FSM", "583"],
146
+ ["Moldova", "MD", "MDA", "498"],
147
+ ["Monaco", "MC", "MCO", "492"],
148
+ ["Mongolia", "MN", "MNG", "496"],
149
+ ["Montenegro", "ME", "MNE", "499"],
150
+ ["Montserrat", "MS", "MSR", "500"],
151
+ ["Morocco", "MA", "MAR", "504"],
152
+ ["Mozambique", "MZ", "MOZ", "508"],
153
+ ["Myanmar", "MM", "MMR", "104"],
154
+ ["Namibia", "NA", "NAM", "516"],
155
+ ["Nauru", "NR", "NRU", "520"],
156
+ ["Nepal", "NP", "NPL", "524"],
157
+ ["Netherlands", "NL", "NLD", "528"],
158
+ ["Netherlands Antilles", "AN", "ANT", "530"],
159
+ ["New Caledonia", "NC", "NCL", "540"],
160
+ ["New Zealand", "NZ", "NZL", "554"],
161
+ ["Nicaragua", "NI", "NIC", "558"],
162
+ ["Niger", "NE", "NER", "562"],
163
+ ["Nigeria", "NG", "NGA", "566"],
164
+ ["Niue", "NU", "NIU", "570"],
165
+ ["Norfolk Island", "NF", "NFK", "574"],
166
+ ["Northern Mariana Islands", "MP", "MNP", "580"],
167
+ ["Norway", "NO", "NOR", "578"],
168
+ ["Oman", "OM", "OMN", "512"],
169
+ ["Pakistan", "PK", "PAK", "586"],
170
+ ["Palau", "PW", "PLW", "585"],
171
+ ["Palestine", "PS", "PSE", "275"],
172
+ ["Panama", "PA", "PAN", "591"],
173
+ ["Papua New Guinea", "PG", "PNG", "598"],
174
+ ["Paraguay", "PY", "PRY", "600"],
175
+ ["Peru", "PE", "PER", "604"],
176
+ ["Philippines", "PH", "PHL", "608"],
177
+ ["Pitcairn", "PN", "PCN", "612"],
178
+ ["Poland", "PL", "POL", "616"],
179
+ ["Portugal", "PT", "PRT", "620"],
180
+ ["Puerto Rico", "PR", "PRI", "630"],
181
+ ["Qatar", "QA", "QAT", "634"],
182
+ ["Reunion", "RE", "REU", "638"],
183
+ ["Romania", "RO", "ROU", "642"],
184
+ ["Russian Federation", "RU", "RUS", "643"],
185
+ ["Rwanda", "RW", "RWA", "646"],
186
+ ["Saint Barthélemy", "BL", "BLM", "652"],
187
+ ["Saint Helena", "SH", "SHN", "654"],
188
+ ["Saint Kitts and Nevis", "KN", "KNA", "659"],
189
+ ["Saint Lucia", "LC", "LCA", "662"],
190
+ ["Saint Martin (French part)", "MF", "MAF", "663"],
191
+ ["Saint Pierre and Miquelon", "PM", "SPM", "666"],
192
+ ["Saint Vincent and the Grenadines", "VC", "VCT", "670"],
193
+ ["Samoa", "WS", "WSM", "882"],
194
+ ["San Marino", "SM", "SMR", "674"],
195
+ ["Sao Tome and Principe", "ST", "STP", "678"],
196
+ ["Saudi Arabia", "SA", "SAU", "682"],
197
+ ["Senegal", "SN", "SEN", "686"],
198
+ ["Serbia", "RS", "SRB", "688"],
199
+ ["Seychelles", "SC", "SYC", "690"],
200
+ ["Sierra Leone", "SL", "SLE", "694"],
201
+ ["Singapore", "SG", "SGP", "702"],
202
+ ["Slovakia", "SK", "SVK", "703"],
203
+ ["Slovenia", "SI", "SVN", "705"],
204
+ ["Solomon Islands", "SB", "SLB", "090"],
205
+ ["Somalia", "SO", "SOM", "706"],
206
+ ["South Africa", "ZA", "ZAF", "710"],
207
+ ["South Georgia and South Sandwich Islands", "GS", "SGS", "239"],
208
+ ["Spain", "ES", "ESP", "724"],
209
+ ["Sri Lanka", "LK", "LKA", "144"],
210
+ ["Sudan", "SD", "SDN", "736"],
211
+ ["Suriname", "SR", "SUR", "740"],
212
+ ["Svalbard and Jan Mayen Islands", "SJ", "SJM", "744"],
213
+ ["Swaziland", "SZ", "SWZ", "748"],
214
+ ["Sweden", "SE", "SWE", "752"],
215
+ ["Switzerland", "CH", "CHE", "756"],
216
+ ["Syria", "SY", "SYR", "760"],
217
+ ["Taiwan", "TW", "TWN", "158"],
218
+ ["Tajikistan", "TJ", "TJK", "762"],
219
+ ["Tanzania", "TZ", "TZA", "834"],
220
+ ["Thailand", "TH", "THA", "764"],
221
+ ["Timor-Leste", "TL", "TLS", "626"],
222
+ ["Togo", "TG", "TGO", "768"],
223
+ ["Tokelau", "TK", "TKL", "772"],
224
+ ["Tonga", "TO", "TON", "776"],
225
+ ["Trinidad and Tobago", "TT", "TTO", "780"],
226
+ ["Tunisia", "TN", "TUN", "788"],
227
+ ["Turkey", "TR", "TUR", "792"],
228
+ ["Turkmenistan", "TM", "TKM", "795"],
229
+ ["Turks and Caicos Islands", "TC", "TCA", "796"],
230
+ ["Tuvalu", "TV", "TUV", "798"],
231
+ ["Uganda", "UG", "UGA", "800"],
232
+ ["Ukraine", "UA", "UKR", "804"],
233
+ ["United Arab Emirates", "AE", "ARE", "784"],
234
+ ["United Kingdom", "GB", "GBR", "826"],
235
+ ["United States Minor Outlying Islands", "UM", "UMI", "581"],
236
+ ["United States of America", "US", "USA", "840"],
237
+ ["Uruguay", "UY", "URY", "858"],
238
+ ["Uzbekistan", "UZ", "UZB", "860"],
239
+ ["Vanuatu", "VU", "VUT", "548"],
240
+ ["Vatican City", "VA", "VAT", "336"],
241
+ ["Venezuela", "VE", "VEN", "862"],
242
+ ["Vietnam", "VN", "VNM", "704"],
243
+ ["Virgin Islands, British", "VG", "VGB", "092"],
244
+ ["Virgin Islands, U.S.", "VI", "VIR", "850"],
245
+ ["Wallis and Futuna Islands", "WF", "WLF", "876"],
246
+ ["Western Sahara", "EH", "ESH", "732"],
247
+ ["Yemen", "YE", "YEM", "887"],
248
+ ["Zambia", "ZM", "ZMB", "894"],
249
+ ["Zimbabwe", "ZW", "ZWE", "716"]]
250
+ end
251
+ end
@@ -134,7 +134,7 @@ module Braintree
134
134
  #
135
135
  # See http://www.braintreepaymentsolutions.com/docs/ruby/transactions/create_from_vault
136
136
  def sale(transaction_attributes)
137
- warn "[DEPRECATED] sale as an instance method is deprecated. Please use CreditCard.sale"
137
+ warn "[DEPRECATED] sale as an instance method is deprecated. Please use Customer.sale"
138
138
  @gateway.transaction.sale(transaction_attributes.merge(:customer_id => id))
139
139
  end
140
140
 
@@ -142,7 +142,7 @@ module Braintree
142
142
  #
143
143
  # See http://www.braintreepaymentsolutions.com/docs/ruby/transactions/create_from_vault
144
144
  def sale!(transaction_attributes)
145
- warn "[DEPRECATED] sale! as an instance method is deprecated. Please use CreditCard.sale!"
145
+ warn "[DEPRECATED] sale! as an instance method is deprecated. Please use Customer.sale!"
146
146
  return_object_or_raise(:transaction) { sale(transaction_attributes) }
147
147
  end
148
148
 
@@ -155,7 +155,7 @@ module Braintree
155
155
  #
156
156
  # See http://www.braintreepaymentsolutions.com/docs/ruby/customers/update
157
157
  def update(attributes)
158
- warn "[DEPRECATED] update as an instance method is deprecated. Please use CreditCard.update"
158
+ warn "[DEPRECATED] update as an instance method is deprecated. Please use Customer.update"
159
159
  result = @gateway.customer.update(id, attributes)
160
160
  if result.success?
161
161
  copy_instance_variables_from_object result.customer
@@ -167,7 +167,7 @@ module Braintree
167
167
  #
168
168
  # See http://www.braintreepaymentsolutions.com/docs/ruby/customers/update
169
169
  def update!(attributes)
170
- warn "[DEPRECATED] update! as an instance method is deprecated. Please use CreditCard.update!"
170
+ warn "[DEPRECATED] update! as an instance method is deprecated. Please use Customer.update!"
171
171
  return_object_or_raise(:customer) { update(attributes) }
172
172
  end
173
173
 
@@ -93,6 +93,7 @@ module Braintree
93
93
  IdIsInUse = "81902"
94
94
  InconsistentNumberOfBillingCycles = "91908"
95
95
  InconsistentStartDate = "91917"
96
+ InvalidRequestFormat = "91921"
96
97
  MerchantAccountIdIsInvalid = "91901"
97
98
  NumberOfBillingCyclesCannotBeBlank = "91912"
98
99
  NumberOfBillingCyclesIsTooSmall = "91909"
@@ -2,7 +2,7 @@ module Braintree
2
2
  # See http://www.braintreepaymentsolutions.com/docs/ruby/general/result_objects
3
3
  class ErrorResult
4
4
 
5
- attr_reader :credit_card_verification, :transaction, :errors, :params, :message
5
+ attr_reader :credit_card_verification, :transaction, :subscription, :errors, :params, :message
6
6
 
7
7
  def initialize(gateway, data) # :nodoc:
8
8
  @gateway = gateway
@@ -10,6 +10,7 @@ module Braintree
10
10
  @credit_card_verification = CreditCardVerification._new(data[:verification]) if data[:verification]
11
11
  @message = data[:message]
12
12
  @transaction = Transaction._new(gateway, data[:transaction]) if data[:transaction]
13
+ @subscription = Subscription._new(gateway, data[:subscription]) if data[:subscription]
13
14
  @errors = Errors.new(data[:errors])
14
15
  end
15
16
 
@@ -20,10 +20,11 @@ module Braintree
20
20
 
21
21
  attr_reader :days_past_due, :price, :plan_id, :id, :status, :payment_method_token, :merchant_account_id
22
22
  attr_reader :first_billing_date, :next_billing_date, :billing_period_start_date, :billing_period_end_date
23
+ attr_reader :paid_through_date, :balance
23
24
  attr_reader :trial_period, :trial_duration, :trial_duration_unit
24
25
  attr_reader :failure_count
25
26
  attr_reader :transactions
26
- attr_reader :next_bill_amount
27
+ attr_reader :next_billing_period_amount
27
28
  attr_reader :number_of_billing_cycles, :billing_day_of_month
28
29
  attr_reader :add_ons, :discounts
29
30
 
@@ -59,12 +60,18 @@ module Braintree
59
60
  def initialize(gateway, attributes) # :nodoc:
60
61
  @gateway = gateway
61
62
  set_instance_variables_from_hash(attributes)
63
+ @balance = Util.to_big_decimal(balance)
62
64
  @price = Util.to_big_decimal(price)
63
65
  transactions.map! { |attrs| Transaction._new(gateway, attrs) }
64
66
  add_ons.map! { |attrs| AddOn._new(attrs) }
65
67
  discounts.map! { |attrs| Discount._new(attrs) }
66
68
  end
67
69
 
70
+ def next_bill_amount
71
+ warn "[DEPRECATED] Subscription.next_bill_amount is deprecated. Please use Subscription.next_billing_period_amount"
72
+ @next_bill_amount
73
+ end
74
+
68
75
  def never_expires?
69
76
  @never_expires
70
77
  end
@@ -64,7 +64,7 @@ module Braintree
64
64
  :trial_duration,
65
65
  :trial_duration_unit,
66
66
  :trial_period,
67
- {:options => [:do_not_inherit_add_ons_or_discounts, :start_immediately]},
67
+ {:options => [:do_not_inherit_add_ons_or_discounts, :start_immediately]}
68
68
  ] + _add_on_discount_signature
69
69
  end
70
70
 
@@ -77,7 +77,11 @@ module Braintree
77
77
  :payment_method_token,
78
78
  :plan_id,
79
79
  :price,
80
- {:options => [:prorate_charges, :replace_all_add_ons_and_discounts]},
80
+ {:options => [
81
+ :prorate_charges,
82
+ :replace_all_add_ons_and_discounts,
83
+ :revert_subscription_on_proration_failure
84
+ ]}
81
85
  ] + _add_on_discount_signature
82
86
  end
83
87
 
@@ -55,7 +55,7 @@ module Braintree
55
55
  attr_reader :processor_response_code
56
56
  # The response text from the processor.
57
57
  attr_reader :processor_response_text
58
- attr_reader :refund_id, :refunded_transaction_id
58
+ attr_reader :refund_ids, :refunded_transaction_id
59
59
  attr_reader :settlement_batch_id
60
60
  # See Transaction::Status
61
61
  attr_reader :status
@@ -181,7 +181,7 @@ module Braintree
181
181
  #
182
182
  # See http://www.braintreepaymentsolutions.com/docs/ruby/transactions/refund
183
183
  def refund(amount = nil)
184
- warn "[DEPRECATED] refund as an instance method is deprecated. Please use CreditCard.refund"
184
+ warn "[DEPRECATED] refund as an instance method is deprecated. Please use Transaction.refund"
185
185
  result = @gateway.transaction.refund(id, amount)
186
186
 
187
187
  if result.success?
@@ -196,11 +196,16 @@ module Braintree
196
196
  !@refund_id.nil?
197
197
  end
198
198
 
199
+ def refund_id
200
+ warn "[DEPRECATED] Transaction.refund_id is deprecated. Please use TransparentRedirect.refund_ids"
201
+ @refund_id
202
+ end
203
+
199
204
  # Deprecated. Use Braintree::Transaction.submit_for_settlement
200
205
  #
201
206
  # See http://www.braintreepaymentsolutions.com/docs/ruby/transactions/submit_for_settlement
202
207
  def submit_for_settlement(amount = nil)
203
- warn "[DEPRECATED] submit_for_settlement as an instance method is deprecated. Please use CreditCard.submit_for_settlement"
208
+ warn "[DEPRECATED] submit_for_settlement as an instance method is deprecated. Please use Transaction.submit_for_settlement"
204
209
  result = @gateway.transaction.submit_for_settlement(id, amount)
205
210
  if result.success?
206
211
  copy_instance_variables_from_object result.transaction
@@ -212,7 +217,7 @@ module Braintree
212
217
  #
213
218
  # See http://www.braintreepaymentsolutions.com/docs/ruby/transactions/submit_for_settlement
214
219
  def submit_for_settlement!(amount = nil)
215
- warn "[DEPRECATED] submit_for_settlement! as an instance method is deprecated. Please use CreditCard.submit_for_settlement!"
220
+ warn "[DEPRECATED] submit_for_settlement! as an instance method is deprecated. Please use Transaction.submit_for_settlement!"
216
221
  return_object_or_raise(:transaction) { submit_for_settlement(amount) }
217
222
  end
218
223
 
@@ -256,7 +261,7 @@ module Braintree
256
261
  #
257
262
  # See http://www.braintreepaymentsolutions.com/docs/ruby/transactions/void
258
263
  def void
259
- warn "[DEPRECATED] void as an instance method is deprecated. Please use CreditCard.void"
264
+ warn "[DEPRECATED] void as an instance method is deprecated. Please use Transaction.void"
260
265
  result = @gateway.transaction.void(id)
261
266
  if result.success?
262
267
  copy_instance_variables_from_object result.transaction
@@ -268,7 +273,7 @@ module Braintree
268
273
  #
269
274
  # See http://www.braintreepaymentsolutions.com/docs/ruby/transactions/void
270
275
  def void!
271
- warn "[DEPRECATED] void! as an instance method is deprecated. Please use CreditCard.void!"
276
+ warn "[DEPRECATED] void! as an instance method is deprecated. Please use Transaction.void!"
272
277
  return_object_or_raise(:transaction) { void }
273
278
  end
274
279
 
@@ -1,8 +1,8 @@
1
1
  module Braintree
2
2
  module Version
3
3
  Major = 2
4
- Minor = 5
5
- Tiny = 2
4
+ Minor = 6
5
+ Tiny = 0
6
6
 
7
7
  String = "#{Major}.#{Minor}.#{Tiny}"
8
8
  end
@@ -28,9 +28,11 @@ describe Braintree::Subscription do
28
28
  result.subscription.next_billing_date.should match(date_format)
29
29
  result.subscription.billing_period_start_date.should match(date_format)
30
30
  result.subscription.billing_period_end_date.should match(date_format)
31
+ result.subscription.paid_through_date.should match(date_format)
31
32
 
32
33
  result.subscription.failure_count.should == 0
33
34
  result.subscription.next_bill_amount.should == "12.34"
35
+ result.subscription.next_billing_period_amount.should == "12.34"
34
36
  result.subscription.payment_method_token.should == @credit_card.token
35
37
  end
36
38
 
@@ -585,46 +587,82 @@ describe Braintree::Subscription do
585
587
  result.subscription.price.should == BigDecimal.new("9999.88")
586
588
  end
587
589
 
588
- it "prorates if there is a charge (because merchant has proration option enabled in control panel)" do
589
- result = Braintree::Subscription.update(@subscription.id,
590
- :price => @subscription.price.to_f + 1
591
- )
590
+ context "proration" do
591
+ it "prorates if there is a charge (because merchant has proration option enabled in control panel)" do
592
+ result = Braintree::Subscription.update(@subscription.id,
593
+ :price => @subscription.price.to_f + 1
594
+ )
592
595
 
593
- result.success?.should == true
594
- result.subscription.price.to_f.should == @subscription.price.to_f + 1
595
- result.subscription.transactions.size.should == @subscription.transactions.size + 1
596
- end
596
+ result.success?.should == true
597
+ result.subscription.price.to_f.should == @subscription.price.to_f + 1
598
+ result.subscription.transactions.size.should == @subscription.transactions.size + 1
599
+ end
597
600
 
598
- it "allows the user to force proration if there is a charge" do
599
- result = Braintree::Subscription.update(@subscription.id,
600
- :price => @subscription.price.to_f + 1,
601
- :options => { :prorate_charges => true }
602
- )
601
+ it "allows the user to force proration if there is a charge" do
602
+ result = Braintree::Subscription.update(@subscription.id,
603
+ :price => @subscription.price.to_f + 1,
604
+ :options => { :prorate_charges => true }
605
+ )
603
606
 
604
- result.success?.should == true
605
- result.subscription.price.to_f.should == @subscription.price.to_f + 1
606
- result.subscription.transactions.size.should == @subscription.transactions.size + 1
607
- end
607
+ result.success?.should == true
608
+ result.subscription.price.to_f.should == @subscription.price.to_f + 1
609
+ result.subscription.transactions.size.should == @subscription.transactions.size + 1
610
+ end
608
611
 
609
- it "allows the user to prevent proration if there is a charge" do
610
- result = Braintree::Subscription.update(@subscription.id,
611
- :price => @subscription.price.to_f + 1,
612
- :options => { :prorate_charges => false }
613
- )
612
+ it "allows the user to prevent proration if there is a charge" do
613
+ result = Braintree::Subscription.update(@subscription.id,
614
+ :price => @subscription.price.to_f + 1,
615
+ :options => { :prorate_charges => false }
616
+ )
614
617
 
615
- result.success?.should == true
616
- result.subscription.price.to_f.should == @subscription.price.to_f + 1
617
- result.subscription.transactions.size.should == @subscription.transactions.size
618
- end
618
+ result.success?.should == true
619
+ result.subscription.price.to_f.should == @subscription.price.to_f + 1
620
+ result.subscription.transactions.size.should == @subscription.transactions.size
621
+ end
619
622
 
620
- it "doesn't prorate if price decreases" do
621
- result = Braintree::Subscription.update(@subscription.id,
622
- :price => @subscription.price.to_f - 1
623
- )
623
+ it "doesn't prorate if price decreases" do
624
+ result = Braintree::Subscription.update(@subscription.id,
625
+ :price => @subscription.price.to_f - 1
626
+ )
624
627
 
625
- result.success?.should == true
626
- result.subscription.price.to_f.should == @subscription.price.to_f - 1
627
- result.subscription.transactions.size.should == @subscription.transactions.size
628
+ result.success?.should == true
629
+ result.subscription.price.to_f.should == @subscription.price.to_f - 1
630
+ result.subscription.transactions.size.should == @subscription.transactions.size
631
+ end
632
+
633
+ it "updates the subscription if the proration fails and revert_subscription_on_proration_failure => false" do
634
+ result = Braintree::Subscription.update(@subscription.id,
635
+ :price => @subscription.price.to_f + 2100,
636
+ :options => {
637
+ :revert_subscription_on_proration_failure => false
638
+ }
639
+ )
640
+
641
+ result.success?.should == true
642
+ result.subscription.price.to_f.should == @subscription.price.to_f + 2100
643
+
644
+ result.subscription.transactions.size.should == @subscription.transactions.size + 1
645
+ transaction = result.subscription.transactions.first
646
+ transaction.status.should == Braintree::Transaction::Status::ProcessorDeclined
647
+ result.subscription.balance.should == transaction.amount
648
+ end
649
+
650
+ it "does not update the subscription if the proration fails and revert_subscription_on_proration_failure => true" do
651
+ result = Braintree::Subscription.update(@subscription.id,
652
+ :price => @subscription.price.to_f + 2100,
653
+ :options => {
654
+ :revert_subscription_on_proration_failure => true
655
+ }
656
+ )
657
+
658
+ result.success?.should == false
659
+ result.subscription.price.to_f.should == @subscription.price.to_f
660
+
661
+ result.subscription.transactions.size.should == @subscription.transactions.size + 1
662
+ transaction = result.subscription.transactions.first
663
+ transaction.status.should == Braintree::Transaction::Status::ProcessorDeclined
664
+ result.subscription.balance.should == 0
665
+ end
628
666
  end
629
667
  end
630
668
 
@@ -1050,6 +1088,7 @@ describe Braintree::Subscription do
1050
1088
  collection.should_not include(active_subscription)
1051
1089
  collection.each do |s|
1052
1090
  s.status.should == Braintree::Subscription::Status::PastDue
1091
+ s.balance.should == BigDecimal.new("6.00")
1053
1092
  end
1054
1093
  end
1055
1094
 
@@ -562,6 +562,14 @@ describe Braintree::Transaction, "search" do
562
562
  end
563
563
 
564
564
  collection.maximum_size.should == 0
565
+
566
+ collection = Braintree::Transaction.search do |search|
567
+ search.id.is transaction.id
568
+ search.created_at.is created_at
569
+ end
570
+
571
+ collection.maximum_size.should == 1
572
+ collection.first.id.should == transaction.id
565
573
  end
566
574
 
567
575
  it "searches on created_at in local time" do
@@ -555,12 +555,13 @@ describe Braintree::Transaction do
555
555
  result.transaction.type.should == "credit"
556
556
  end
557
557
 
558
- it "does not allow multiple refunds" do
558
+ it "allows multiple partial refunds" do
559
559
  transaction = create_transaction_to_refund
560
- Braintree::Transaction.refund(transaction.id, transaction.amount / 2)
561
- result = Braintree::Transaction.refund(transaction.id, BigDecimal.new("1"))
562
- result.success?.should == false
563
- result.errors.for(:transaction).on(:base)[0].code.should == Braintree::ErrorCodes::Transaction::HasAlreadyBeenRefunded
560
+ transaction_1 = Braintree::Transaction.refund(transaction.id, transaction.amount / 2).transaction
561
+ transaction_2 = Braintree::Transaction.refund(transaction.id, transaction.amount / 2).transaction
562
+
563
+ transaction = Braintree::Transaction.find(transaction.id)
564
+ transaction.refund_ids.sort.should == [transaction_1.id, transaction_2.id].sort
564
565
  end
565
566
  end
566
567
 
@@ -1390,14 +1391,6 @@ describe Braintree::Transaction do
1390
1391
  result.success?.should == true
1391
1392
  result.new_transaction.type.should == "credit"
1392
1393
  end
1393
-
1394
- it "does not allow multiple refunds" do
1395
- transaction = create_transaction_to_refund
1396
- transaction.refund(transaction.amount / 2)
1397
- result = transaction.refund(BigDecimal.new("1"))
1398
- result.success?.should == false
1399
- result.errors.for(:transaction).on(:base)[0].code.should == Braintree::ErrorCodes::Transaction::HasAlreadyBeenRefunded
1400
- end
1401
1394
  end
1402
1395
 
1403
1396
  it "returns a successful result if successful" do
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 2
7
- - 5
8
- - 2
9
- version: 2.5.2
7
+ - 6
8
+ - 0
9
+ version: 2.6.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - Braintree Payment Solutions
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-09-03 00:00:00 -05:00
17
+ date: 2010-09-20 00:00:00 -05:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -41,6 +41,7 @@ files:
41
41
  - README.rdoc
42
42
  - LICENSE
43
43
  - lib/braintree/add_on.rb
44
+ - lib/braintree/address/country_names.rb
44
45
  - lib/braintree/address.rb
45
46
  - lib/braintree/address_gateway.rb
46
47
  - lib/braintree/advanced_search.rb