recurly 2.18.6 → 2.18.11

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.
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