recurly 2.18.5 → 2.18.10
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 +4 -4
- data/README.md +1 -1
- data/lib/recurly.rb +1 -0
- data/lib/recurly/add_on.rb +11 -0
- data/lib/recurly/adjustment.rb +1 -0
- data/lib/recurly/api.rb +1 -1
- data/lib/recurly/billing_info.rb +20 -9
- data/lib/recurly/item.rb +2 -5
- data/lib/recurly/plan.rb +1 -0
- data/lib/recurly/subscription.rb +29 -0
- data/lib/recurly/subscription/add_ons.rb +6 -1
- data/lib/recurly/subscription_add_on.rb +2 -0
- data/lib/recurly/tier.rb +17 -0
- data/lib/recurly/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9385debc236700bed1b93ee013313ab4c70a7dfdea8c42e7d48a8d0dd755d26e
|
4
|
+
data.tar.gz: f8b0ee42838c58896a4c6c58b86795d75b2b952ba9abcf96424d751c93f24b75
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9ec2b05f194f44f727bd6ad3c553be37559a3a40735d7b1408eb151ee242f79f3e6368418c76dcec8d60156ae7724c2943549031fa4587679b67bcbc3a2c6ec7
|
7
|
+
data.tar.gz: 0b4277c3af336d565b7d2797f22f1897a4827e790dffd6dc6455ebd0f3b383bbc86392e6c6931e2272dc0e434db2fbcd9031f5b619b039b4cd92deeb32d84f24
|
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.
|
17
|
+
gem 'recurly', '~> 2.18.10'
|
18
18
|
```
|
19
19
|
|
20
20
|
Recurly will automatically use [Nokogiri](http://nokogiri.org/) (for a nice
|
data/lib/recurly.rb
CHANGED
data/lib/recurly/add_on.rb
CHANGED
@@ -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,19 @@ module Recurly
|
|
19
21
|
revenue_schedule_type
|
20
22
|
created_at
|
21
23
|
updated_at
|
24
|
+
tier_type
|
22
25
|
)
|
23
26
|
alias to_param add_on_code
|
24
27
|
alias quantity default_quantity
|
25
28
|
|
29
|
+
def changed_attributes
|
30
|
+
attrs = super
|
31
|
+
if tiers.any?(&:changed?)
|
32
|
+
attrs['tiers'] = tiers.select(&:changed?)
|
33
|
+
end
|
34
|
+
attrs
|
35
|
+
end
|
36
|
+
|
26
37
|
# Add-ons are only writeable and readable through {Plan} instances.
|
27
38
|
embedded!
|
28
39
|
private_class_method :find
|
data/lib/recurly/adjustment.rb
CHANGED
data/lib/recurly/api.rb
CHANGED
data/lib/recurly/billing_info.rb
CHANGED
@@ -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
|
-
|
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.
|
data/lib/recurly/item.rb
CHANGED
@@ -24,12 +24,9 @@ module Recurly
|
|
24
24
|
attrs
|
25
25
|
end
|
26
26
|
|
27
|
-
# method should be changed to use a link once it is added to api
|
28
|
-
# example:
|
29
|
-
# return false unless link? :reactivate
|
30
|
-
# reload follow_link :reactivate
|
31
27
|
def reactivate
|
32
|
-
|
28
|
+
return false unless link? :reactivate
|
29
|
+
reload follow_link :reactivate
|
33
30
|
true
|
34
31
|
end
|
35
32
|
|
data/lib/recurly/plan.rb
CHANGED
data/lib/recurly/subscription.rb
CHANGED
@@ -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
|
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
|
data/lib/recurly/tier.rb
ADDED
data/lib/recurly/version.rb
CHANGED
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.
|
4
|
+
version: 2.18.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Recurly
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-06-30 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
|