recurly 2.18.6 → 2.18.11

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 563a9d23c833485fee920156d0e90b15cc0362903dde2a031b82b12cfa90e786
4
- data.tar.gz: 3a1b2dc09ccb086265a6d5704b784351f589f13fb46cb27f69c859f00d293243
3
+ metadata.gz: 3c689b0c52f5605dec02135ba9f3cfd670e519c379e9b1e3d05b99949ccfa294
4
+ data.tar.gz: 2c4d074aedac025339691373b19a03ab2e618cfde673111178a796fb413a47b8
5
5
  SHA512:
6
- metadata.gz: cbd240d3e3339a15d648d311297a0d97720a46ea502f24d19ce653e498e985f0a56daf1121fa08f2360f25febe9f1ac8db9255b7f5ae2a5cb1b48b0f4fc4ec03
7
- data.tar.gz: 49b7b8e22287d32f20164d0099e5e2c1a95a14aff590bdd6360d14be65dda8955013e1c1c1d38b21273e4526cbe42a2b78c6b8b599f715d604e894b7bc5819d0
6
+ metadata.gz: 68a15832e3afcbf690f3266068caa8a85c5a3f5ab684ea900ce0f7d9f5af0705e3a540c276e1aeaf00c8935abd7c91be7f361414743e009fb1df7c33fd701029
7
+ data.tar.gz: 41517c9c71fa214786e084329f4c9f75b9ac033b280c8c9a92b0d4f3400030f91d6a8fd956570b187bff0e40c9f86b0371c528661707f3896caebdb2e7f69272
data/README.md CHANGED
@@ -14,7 +14,7 @@ Recurly is packaged as a Ruby gem. We recommend you install it with
14
14
  [Bundler](http://gembundler.com/) by adding the following line to your Gemfile:
15
15
 
16
16
  ``` ruby
17
- gem 'recurly', '~> 2.18.6'
17
+ gem 'recurly', '~> 2.18.11'
18
18
  ```
19
19
 
20
20
  Recurly will automatically use [Nokogiri](http://nokogiri.org/) (for a nice
@@ -40,6 +40,7 @@ module Recurly
40
40
  require 'recurly/gift_card'
41
41
  require 'recurly/purchase'
42
42
  require 'recurly/webhook'
43
+ require 'recurly/tier'
43
44
 
44
45
  @subdomain = nil
45
46
 
@@ -2,9 +2,11 @@ module Recurly
2
2
  class AddOn < Resource
3
3
  # @return [Plan]
4
4
  belongs_to :plan
5
+ has_many :tiers, class_name: :Tier, readonly: false
5
6
 
6
7
  define_attribute_methods %w(
7
8
  add_on_code
9
+ item_code
8
10
  name
9
11
  accounting_code
10
12
  default_quantity
@@ -19,10 +21,21 @@ module Recurly
19
21
  revenue_schedule_type
20
22
  created_at
21
23
  updated_at
24
+ tier_type
25
+ avalara_service_type
26
+ avalara_transaction_type
22
27
  )
23
28
  alias to_param add_on_code
24
29
  alias quantity default_quantity
25
30
 
31
+ def changed_attributes
32
+ attrs = super
33
+ if tiers.any?(&:changed?)
34
+ attrs['tiers'] = tiers.select(&:changed?)
35
+ end
36
+ attrs
37
+ end
38
+
26
39
  # Add-ons are only writeable and readable through {Plan} instances.
27
40
  embedded!
28
41
  private_class_method :find
@@ -37,6 +37,7 @@ module Recurly
37
37
  currency
38
38
  product_code
39
39
  item_code
40
+ external_sku
40
41
  start_date
41
42
  end_date
42
43
  created_at
@@ -56,6 +57,8 @@ module Recurly
56
57
  original_adjustment_uuid
57
58
  shipping_address_id
58
59
  surcharge_in_cents
60
+ avalara_transaction_type
61
+ avalara_service_type
59
62
  )
60
63
  alias to_param uuid
61
64
 
@@ -18,7 +18,7 @@ module Recurly
18
18
  @@base_uri = "https://api.recurly.com/v2/"
19
19
  @@valid_domains = [".recurly.com"]
20
20
 
21
- RECURLY_API_VERSION = '2.24'
21
+ RECURLY_API_VERSION = '2.28'
22
22
 
23
23
  FORMATS = Helper.hash_with_indifferent_read_access(
24
24
  'pdf' => 'application/pdf',
@@ -8,6 +8,8 @@ module Recurly
8
8
  AMAZON_ATTRIBUTES = %w(amazon_billing_agreement_id amazon_region).freeze
9
9
  PAYPAL_ATTRIBUTES = %w(paypal_billing_agreement_id).freeze
10
10
  ROKU_ATTRIBUTES = %w(roku_billing_agreement_id last_four).freeze
11
+ SEPA_ATTRIBUTES = %w(iban).freeze
12
+ BACS_ATTRIBUTES = %w(account_number sort_code type).freeze
11
13
 
12
14
  # @return [Account]
13
15
  belongs_to :account
@@ -36,32 +38,41 @@ module Recurly
36
38
  fraud_session_id
37
39
  three_d_secure_action_result_token_id
38
40
  transaction_type
39
- ) | CREDIT_CARD_ATTRIBUTES | BANK_ACCOUNT_ATTRIBUTES | AMAZON_ATTRIBUTES | PAYPAL_ATTRIBUTES | ROKU_ATTRIBUTES
40
-
41
- # @return ["credit_card", "paypal", "amazon", "bank_account", "roku", nil] The type of billing info.
42
- attr_reader :type
41
+ mandate_reference
42
+ ) | CREDIT_CARD_ATTRIBUTES | BANK_ACCOUNT_ATTRIBUTES | AMAZON_ATTRIBUTES | PAYPAL_ATTRIBUTES | ROKU_ATTRIBUTES | SEPA_ATTRIBUTES | BACS_ATTRIBUTES
43
43
 
44
44
  # @return [String]
45
45
  def inspect
46
46
  attributes = self.class.attribute_names
47
47
  case type
48
48
  when 'credit_card'
49
- attributes -= (AMAZON_ATTRIBUTES + PAYPAL_ATTRIBUTES + BANK_ACCOUNT_ATTRIBUTES + ROKU_ATTRIBUTES)
49
+ attributes -= (AMAZON_ATTRIBUTES + PAYPAL_ATTRIBUTES + BANK_ACCOUNT_ATTRIBUTES + ROKU_ATTRIBUTES + SEPA_ATTRIBUTES + BACS_ATTRIBUTES)
50
50
  attributes |= CREDIT_CARD_ATTRIBUTES
51
51
  when 'paypal'
52
- attributes -= (CREDIT_CARD_ATTRIBUTES | BANK_ACCOUNT_ATTRIBUTES + AMAZON_ATTRIBUTES + ROKU_ATTRIBUTES)
52
+ attributes -= (CREDIT_CARD_ATTRIBUTES | BANK_ACCOUNT_ATTRIBUTES + AMAZON_ATTRIBUTES + ROKU_ATTRIBUTES + SEPA_ATTRIBUTES + BACS_ATTRIBUTES)
53
53
  when 'amazon'
54
- attributes -= (CREDIT_CARD_ATTRIBUTES | BANK_ACCOUNT_ATTRIBUTES + PAYPAL_ATTRIBUTES + ROKU_ATTRIBUTES)
54
+ attributes -= (CREDIT_CARD_ATTRIBUTES | BANK_ACCOUNT_ATTRIBUTES + PAYPAL_ATTRIBUTES + ROKU_ATTRIBUTES + SEPA_ATTRIBUTES + BACS_ATTRIBUTES)
55
55
  when 'bank_account'
56
- attributes -= (CREDIT_CARD_ATTRIBUTES + PAYPAL_ATTRIBUTES + AMAZON_ATTRIBUTES + ROKU_ATTRIBUTES)
56
+ attributes -= (CREDIT_CARD_ATTRIBUTES + PAYPAL_ATTRIBUTES + AMAZON_ATTRIBUTES + ROKU_ATTRIBUTES + SEPA_ATTRIBUTES + BACS_ATTRIBUTES)
57
57
  attributes |= BANK_ACCOUNT_ATTRIBUTES
58
58
  when 'roku'
59
- attributes -= (CREDIT_CARD_ATTRIBUTES + PAYPAL_ATTRIBUTES + AMAZON_ATTRIBUTES + BANK_ACCOUNT_ATTRIBUTES)
59
+ attributes -= (CREDIT_CARD_ATTRIBUTES + PAYPAL_ATTRIBUTES + AMAZON_ATTRIBUTES + BANK_ACCOUNT_ATTRIBUTES + SEPA_ATTRIBUTES + BACS_ATTRIBUTES)
60
60
  attributes |= ROKU_ATTRIBUTES
61
+ when 'sepa'
62
+ attributes -= (CREDIT_CARD_ATTRIBUTES + PAYPAL_ATTRIBUTES + AMAZON_ATTRIBUTES + BANK_ACCOUNT_ATTRIBUTES + ROKU_ATTRIBUTES + BACS_ATTRIBUTES)
63
+ attributes |= SEPA_ATTRIBUTES
64
+ when 'bacs'
65
+ attributes -= (CREDIT_CARD_ATTRIBUTES + PAYPAL_ATTRIBUTES + AMAZON_ATTRIBUTES + BANK_ACCOUNT_ATTRIBUTES + ROKU_ATTRIBUTES + SEPA_ATTRIBUTES)
66
+ attributes |= BACS_ATTRIBUTES
61
67
  end
62
68
  super attributes
63
69
  end
64
70
 
71
+ # @return ["credit_card", "paypal", "amazon", "bank_account", "roku", "sepa", "bacs", nil] The type of billing info.
72
+ def type
73
+ self[:type] || @type
74
+ end
75
+
65
76
  class << self
66
77
  # Overrides the inherited member_path method to allow for billing info's
67
78
  # irregular URL structure.
@@ -110,6 +110,7 @@ module Recurly
110
110
  final_dunning_event
111
111
  gateway_code
112
112
  surcharge_in_cents
113
+ tax_details
113
114
  )
114
115
  alias to_param invoice_number_with_prefix
115
116
 
@@ -11,6 +11,8 @@ module Recurly
11
11
  accounting_code
12
12
  revenue_schedule_type
13
13
  state
14
+ avalara_transaction_type
15
+ avalara_service_type
14
16
  created_at
15
17
  updated_at
16
18
  deleted_at
@@ -32,6 +32,9 @@ module Recurly
32
32
  tax_code
33
33
  trial_requires_billing_info
34
34
  auto_renew
35
+ allow_any_item_on_subscriptions
36
+ avalara_transaction_type
37
+ avalara_service_type
35
38
  created_at
36
39
  updated_at
37
40
  )
@@ -174,6 +174,35 @@ module Recurly
174
174
  sub.tap {|e| e.currency = currency} if sub.is_a? Subscription
175
175
  end
176
176
 
177
+ # Convert free trial to paid subscription when transaction_type is "moto"
178
+ # which stands for "Mail Order Telephone Order".
179
+ #
180
+ # @return true
181
+ def convert_trial_moto()
182
+ builder = XML.new("<subscription/>")
183
+ builder.add_element('transaction_type', "moto")
184
+ reload API.put("#{uri}/convert_trial", builder.to_s)
185
+ true
186
+ end
187
+
188
+ # Convert free trial to paid subscription. Optionally uses a 3ds token.
189
+ #
190
+ # @param three_d_secure_action_result_token_id [String] three_d_secure_action_result_token_id
191
+ # returned by Recurly.js referencing the result of the 3DS authentication for PSD2
192
+ # @return true when payment is accepted
193
+ def convert_trial(three_d_secure_action_result_token_id = nil)
194
+ body = if three_d_secure_action_result_token_id != nil
195
+ builder = Recurly::XML.new("<subscription/>")
196
+ account = builder.add_element('account')
197
+ billing_info = account.add_element('billing_info')
198
+ billing_info.add_element('three_d_secure_action_result_token_id', three_d_secure_action_result_token_id)
199
+ builder.to_s
200
+ end
201
+
202
+ reload API.put("#{uri}/convert_trial", body)
203
+ true
204
+ end
205
+
177
206
  # Cancel a subscription so that it will not renew.
178
207
  #
179
208
  # @param [String] optional timeframe. Choose one of "bill_date" or "term_end"
@@ -25,7 +25,12 @@ module Recurly
25
25
  def << add_on
26
26
  add_on = SubscriptionAddOn.new(add_on, @subscription)
27
27
 
28
- exist = @add_ons.find { |a| a.add_on_code == add_on.add_on_code }
28
+ exist = @add_ons.find do |a|
29
+ source1 = a.add_on_source || "plan_add_on"
30
+ source2 = add_on.add_on_source || "plan_add_on"
31
+ a.add_on_code == add_on.add_on_code && source1 == source2
32
+ end
33
+
29
34
  if exist
30
35
  exist.quantity ||= 1
31
36
  exist.quantity += add_on.quantity || 1
@@ -13,6 +13,7 @@ module Recurly
13
13
  add_on_type
14
14
  usage_type
15
15
  usage_percentage
16
+ add_on_source
16
17
  )
17
18
 
18
19
  attr_reader :subscription
@@ -28,6 +29,7 @@ module Recurly
28
29
  if add_on.unit_amount_in_cents
29
30
  self.unit_amount_in_cents = add_on.unit_amount_in_cents.to_i
30
31
  end
32
+ self.add_on_source = add_on.add_on_source
31
33
  when Hash
32
34
  self.attributes = add_on
33
35
  when String, Symbol
@@ -7,6 +7,9 @@ module Recurly
7
7
  type
8
8
  tax_rate
9
9
  tax_in_cents
10
+ level
11
+ surcharge
12
+ billable
10
13
  )
11
14
 
12
15
  embedded! true
@@ -0,0 +1,17 @@
1
+ module Recurly
2
+ class Tier < Resource
3
+
4
+ belongs_to :add_on
5
+
6
+ define_attribute_methods %w(
7
+ ending_quantity
8
+ unit_amount_in_cents
9
+ )
10
+
11
+ def xml_keys
12
+ attributes.keys
13
+ end
14
+
15
+ embedded! true
16
+ end
17
+ end
@@ -70,6 +70,8 @@ module Recurly
70
70
  billing_country
71
71
  subscription_id
72
72
  manually_entered
73
+ avalara_transaction_type
74
+ avalara_service_type
73
75
  )
74
76
  alias to_param uuid
75
77
  alias fraud_info fraud
@@ -1,6 +1,6 @@
1
1
  module Recurly
2
2
  module Version
3
- VERSION = "2.18.6"
3
+ VERSION = "2.18.11"
4
4
 
5
5
  class << self
6
6
  def inspect
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: recurly
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.18.6
4
+ version: 2.18.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Recurly
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-12-18 00:00:00.000000000 Z
11
+ date: 2020-07-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -249,6 +249,7 @@ files:
249
249
  - lib/recurly/subscription_add_on.rb
250
250
  - lib/recurly/tax_detail.rb
251
251
  - lib/recurly/tax_type.rb
252
+ - lib/recurly/tier.rb
252
253
  - lib/recurly/transaction.rb
253
254
  - lib/recurly/transaction/errors.rb
254
255
  - lib/recurly/usage.rb