mollie-api-ruby 4.6.2 → 4.7.0

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: 239cb83379085baf41a992d159a0d9d04d14ad98b4420f369fbb4a661c3d98a7
4
- data.tar.gz: e7eb83f458608cefa2d2637372ddaf1382a667ce26dcdc6b17fc9cc9ccb53257
3
+ metadata.gz: 199d37cfa91ad1e3132c095248ea54a26e7a25dddb748b02b2fa17b7d58334a3
4
+ data.tar.gz: 30ad0213bd7ed35038eecac7c48e4c3b965ca56b9f445c2ff6d723d2f223b741
5
5
  SHA512:
6
- metadata.gz: 4fb66ad436eddf5711ff2a3a5be4d1d77a27e3e41138e51af8deee84993418f1d7355abca6c79f1b1e31886ac4bf07b5faf60743288d7abf98f4cc1a520e76f2
7
- data.tar.gz: 5f0ecba60b5e49674bb1bf8b06663f62c7c1e515ff0d8e652176bd41dd36c70b133f09852d10e3ab730ba0fe34bc4755da69f9ff0b8eb1335f278d03fd377392
6
+ metadata.gz: 3bee04cf11e085a6886ded95949e996f66d78d4a5a5479b96fb6c4d74d8ef588ae2de6040966df27432c147062988370667c0ef601b908feeeca55b7cadb4eb5
7
+ data.tar.gz: '080873b112c5878455a65faad416ce9e5fa6af4c8acf0f3784986c5a2c8ea52895740c3d55a2fd84dff672ad83031d08b85d7a1a86c1b58aeffe7deaf2d21bb6'
@@ -4,6 +4,18 @@
4
4
 
5
5
  All notable changes to this project will be documented in this file.
6
6
 
7
+ ## 4.7.0 - 2020-02-03
8
+
9
+ - Implemented various API features from the changelog up to and including Tuesday, September 24th, 2019.
10
+
11
+ ## 4.6.2 - 2019-11-21
12
+
13
+ - Added timeouts configuration for Net::HTTP
14
+
15
+ ## 4.6.1 - 2019-11-20
16
+
17
+ - Update root certificates
18
+
7
19
  ## 4.6.0 - 2019-10-01
8
20
 
9
21
  - Add Onboarding APIs (Get onboarding status, Submit onboarding data)
@@ -1,4 +1,11 @@
1
1
  method = Mollie::Method.get('ideal')
2
2
 
3
- # Include iDEAL issuers
3
+ # Include issuers available for the payment method (e.g. for
4
+ # iDEAL, KBC/CBC payment button or gift cards).
4
5
  method = Mollie::Method.get('ideal', include: 'issuers')
6
+
7
+ # Include pricing for each payment method
8
+ method = Mollie::Method.get('ideal', include: 'pricing')
9
+
10
+ # Include both issuers and pricing
11
+ method = Mollie::Method.get('ideal', include: 'issuers,pricing')
@@ -0,0 +1,7 @@
1
+ payment = Mollie::Payment.update(
2
+ 'tr_7UhSN1zuXS',
3
+ description: 'Order #98765',
4
+ metadata: {
5
+ order_id: '98765'
6
+ }
7
+ )
@@ -1 +1,5 @@
1
+ # List all subscriptions
2
+ subscriptions = Mollie::Subscription.all
3
+
4
+ # List all subscriptions for a customer
1
5
  subscriptions = Mollie::Customer::Subscription.all(customer_id: 'cst_5a2pPrwaWy')
@@ -16,8 +16,6 @@ require 'mollie/amount'
16
16
  require 'mollie/chargeback'
17
17
  require 'mollie/client'
18
18
  require 'mollie/customer'
19
- require 'mollie/customer/mandate'
20
- require 'mollie/customer/subscription'
21
19
  require 'mollie/invoice'
22
20
  require 'mollie/list'
23
21
  require 'mollie/method'
@@ -28,8 +26,11 @@ require 'mollie/permission'
28
26
  require 'mollie/profile'
29
27
  require 'mollie/refund'
30
28
  require 'mollie/settlement'
29
+ require 'mollie/subscription'
31
30
 
31
+ require 'mollie/customer/mandate'
32
32
  require 'mollie/customer/payment'
33
+ require 'mollie/customer/subscription'
33
34
  require 'mollie/onboarding'
34
35
  require 'mollie/order/line'
35
36
  require 'mollie/order/refund'
@@ -123,6 +123,10 @@ module Mollie
123
123
  Util.nested_underscore_keys(JSON.parse(response.body))
124
124
  when 204
125
125
  {} # No Content
126
+ when 404
127
+ json = JSON.parse(response.body)
128
+ exception = ResourceNotFoundError.new(json)
129
+ raise exception
126
130
  else
127
131
  json = JSON.parse(response.body)
128
132
  exception = Mollie::RequestError.new(json)
@@ -1,109 +1,6 @@
1
1
  module Mollie
2
2
  class Customer
3
- class Subscription < Base
4
- STATUS_ACTIVE = 'active'.freeze
5
- STATUS_PENDING = 'pending'.freeze # Waiting for a valid mandate.
6
- STATUS_CANCELED = 'canceled'.freeze
7
- STATUS_SUSPENDED = 'suspended'.freeze # Active, but mandate became invalid.
8
- STATUS_COMPLETED = 'completed'.freeze
9
-
10
- attr_accessor :id,
11
- :customer_id,
12
- :mode,
13
- :created_at,
14
- :status,
15
- :amount,
16
- :times,
17
- :times_remaining,
18
- :interval,
19
- :next_payment_date,
20
- :description,
21
- :method,
22
- :mandate_id,
23
- :canceled_at,
24
- :webhook_url,
25
- :metadata,
26
- :application_fee,
27
- :_links
28
-
29
- alias links _links
30
-
31
- def active?
32
- status == STATUS_ACTIVE
33
- end
34
-
35
- def pending?
36
- status == STATUS_PENDING
37
- end
38
-
39
- def suspended?
40
- status == STATUS_SUSPENDED
41
- end
42
-
43
- def canceled?
44
- status == STATUS_CANCELED
45
- end
46
-
47
- def completed?
48
- status == STATUS_COMPLETED
49
- end
50
-
51
- def created_at=(created_at)
52
- @created_at = begin
53
- Time.parse(created_at.to_s)
54
- rescue StandardError
55
- nil
56
- end
57
- end
58
-
59
- def canceled_at=(canceled_at)
60
- @canceled_at = begin
61
- Time.parse(canceled_at.to_s)
62
- rescue StandardError
63
- nil
64
- end
65
- end
66
-
67
- def amount=(amount)
68
- @amount = Mollie::Amount.new(amount)
69
- end
70
-
71
- def times=(times)
72
- @times = times.to_i
73
- end
74
-
75
- def next_payment_date=(next_payment_date)
76
- @next_payment_date = begin
77
- Date.parse(next_payment_date)
78
- rescue StandardError
79
- nil
80
- end
81
- end
82
-
83
- def customer(options = {})
84
- Customer.get(customer_id, options)
85
- end
86
-
87
- def payments(options = {})
88
- resource_url = Util.extract_url(links, 'payments')
89
- return if resource_url.nil?
90
- response = Mollie::Client.instance.perform_http_call('GET', resource_url, nil, {}, options)
91
- Mollie::List.new(response, Payment)
92
- end
93
-
94
- def metadata=(metadata)
95
- @metadata = OpenStruct.new(metadata) if metadata.is_a?(Hash)
96
- end
97
-
98
- def application_fee=(application_fee)
99
- amount = Amount.new(application_fee['amount'])
100
- description = application_fee['description']
101
-
102
- @application_fee = OpenStruct.new(
103
- amount: amount,
104
- description: description
105
- )
106
- end
3
+ class Subscription < Mollie::Subscription
107
4
  end
108
5
  end
109
6
  end
@@ -17,4 +17,7 @@ module Mollie
17
17
  "#{status} #{title}: #{detail}"
18
18
  end
19
19
  end
20
+
21
+ class ResourceNotFoundError < RequestError
22
+ end
20
23
  end
@@ -7,6 +7,7 @@ module Mollie
7
7
  :address,
8
8
  :registration_number,
9
9
  :vat_number,
10
+ :vat_regulation,
10
11
  :_links
11
12
 
12
13
  alias links _links
@@ -8,12 +8,14 @@ module Mollie
8
8
 
9
9
  attr_accessor :id,
10
10
  :amount,
11
+ :settlement_id,
11
12
  :settlement_amount,
12
13
  :status,
13
14
  :lines,
14
15
  :payment_id,
15
16
  :order_id,
16
17
  :description,
18
+ :metadata,
17
19
  :created_at,
18
20
  :_links
19
21
 
@@ -47,6 +49,10 @@ module Mollie
47
49
  @settlement_amount = Amount.new(settlement_amount)
48
50
  end
49
51
 
52
+ def metadata=(metadata)
53
+ @metadata = OpenStruct.new(metadata) if metadata.is_a?(Hash)
54
+ end
55
+
50
56
  def lines=(lines)
51
57
  @lines = lines.map { |line| Order::Line.new(line) }
52
58
  end
@@ -64,7 +70,6 @@ module Mollie
64
70
  end
65
71
 
66
72
  def settlement(options = {})
67
- settlement_id = Util.extract_id(links, 'settlement')
68
73
  return if settlement_id.nil?
69
74
  Settlement.get(settlement_id, options)
70
75
  end
@@ -0,0 +1,107 @@
1
+ module Mollie
2
+ class Subscription < Base
3
+ STATUS_ACTIVE = 'active'.freeze
4
+ STATUS_PENDING = 'pending'.freeze # Waiting for a valid mandate.
5
+ STATUS_CANCELED = 'canceled'.freeze
6
+ STATUS_SUSPENDED = 'suspended'.freeze # Active, but mandate became invalid.
7
+ STATUS_COMPLETED = 'completed'.freeze
8
+
9
+ attr_accessor :id,
10
+ :customer_id,
11
+ :mode,
12
+ :created_at,
13
+ :status,
14
+ :amount,
15
+ :times,
16
+ :times_remaining,
17
+ :interval,
18
+ :next_payment_date,
19
+ :description,
20
+ :method,
21
+ :mandate_id,
22
+ :canceled_at,
23
+ :webhook_url,
24
+ :metadata,
25
+ :application_fee,
26
+ :_links
27
+
28
+ alias links _links
29
+
30
+ def active?
31
+ status == STATUS_ACTIVE
32
+ end
33
+
34
+ def pending?
35
+ status == STATUS_PENDING
36
+ end
37
+
38
+ def suspended?
39
+ status == STATUS_SUSPENDED
40
+ end
41
+
42
+ def canceled?
43
+ status == STATUS_CANCELED
44
+ end
45
+
46
+ def completed?
47
+ status == STATUS_COMPLETED
48
+ end
49
+
50
+ def created_at=(created_at)
51
+ @created_at = begin
52
+ Time.parse(created_at.to_s)
53
+ rescue StandardError
54
+ nil
55
+ end
56
+ end
57
+
58
+ def canceled_at=(canceled_at)
59
+ @canceled_at = begin
60
+ Time.parse(canceled_at.to_s)
61
+ rescue StandardError
62
+ nil
63
+ end
64
+ end
65
+
66
+ def amount=(amount)
67
+ @amount = Mollie::Amount.new(amount)
68
+ end
69
+
70
+ def times=(times)
71
+ @times = times.to_i
72
+ end
73
+
74
+ def next_payment_date=(next_payment_date)
75
+ @next_payment_date = begin
76
+ Date.parse(next_payment_date)
77
+ rescue StandardError
78
+ nil
79
+ end
80
+ end
81
+
82
+ def customer(options = {})
83
+ Customer.get(customer_id, options)
84
+ end
85
+
86
+ def payments(options = {})
87
+ resource_url = Util.extract_url(links, 'payments')
88
+ return if resource_url.nil?
89
+ response = Mollie::Client.instance.perform_http_call('GET', resource_url, nil, {}, options)
90
+ Mollie::List.new(response, Mollie::Payment)
91
+ end
92
+
93
+ def metadata=(metadata)
94
+ @metadata = OpenStruct.new(metadata) if metadata.is_a?(Hash)
95
+ end
96
+
97
+ def application_fee=(application_fee)
98
+ amount = Amount.new(application_fee['amount'])
99
+ description = application_fee['description']
100
+
101
+ @application_fee = OpenStruct.new(
102
+ amount: amount,
103
+ description: description
104
+ )
105
+ end
106
+ end
107
+ end
@@ -1,3 +1,3 @@
1
1
  module Mollie
2
- VERSION = '4.6.2'.freeze
2
+ VERSION = '4.7.0'.freeze
3
3
  end
@@ -8,6 +8,9 @@
8
8
  "status": "pending",
9
9
  "createdAt": "2018-09-25T17:40:23+00:00",
10
10
  "description": "Required quantity not in stock, refunding one photo book.",
11
+ "metadata": {
12
+ "bookkeeping_id": 12345
13
+ },
11
14
  "orderId": "ord_stTC2WHAuS",
12
15
  "paymentId": "tr_WDqYK6vllg",
13
16
  "settlementAmount": {
@@ -135,5 +135,35 @@ module Mollie
135
135
  assert_equal(json['field'], e.field)
136
136
  assert_equal(json['_links'], e.links)
137
137
  end
138
+
139
+ def test_404_response
140
+ response = <<-JSON
141
+ {
142
+ "status": 404,
143
+ "title": "Not Found",
144
+ "detail": "No payment exists with token tr_WDqYK6vllg.",
145
+ "_links": {
146
+ "documentation": {
147
+ "href": "https://docs.mollie.com/guides/handling-errors",
148
+ "type": "text/html"
149
+ }
150
+ }
151
+ }
152
+ JSON
153
+
154
+ json = JSON.parse(response)
155
+ stub_request(:post, 'https://api.mollie.com/v2/my-method')
156
+ .to_return(status: 404, body: response, headers: {})
157
+
158
+ e = assert_raise ResourceNotFoundError.new(JSON.parse(response)) do
159
+ client.perform_http_call('POST', 'my-method', nil, {})
160
+ end
161
+
162
+ assert_equal(json['status'], e.status)
163
+ assert_equal(json['title'], e.title)
164
+ assert_equal(json['detail'], e.detail)
165
+ assert_equal(json['field'], e.field)
166
+ assert_equal(json['_links'], e.links)
167
+ end
138
168
  end
139
169
  end
@@ -154,8 +154,8 @@ module Mollie
154
154
  subscription = Customer::Subscription.get('sub_8JfGzs6v3K', customer_id: 'cst_8wmqcHMN4U')
155
155
  payments = subscription.payments
156
156
 
157
- assert_equal payments.klass, Payment
158
- assert_equal payments.first.id, 'tr_DtKxVP2AgW'
157
+ assert_equal Mollie::Payment, payments.klass
158
+ assert_equal 'tr_DtKxVP2AgW', payments.first.id
159
159
  end
160
160
  end
161
161
  end
@@ -16,6 +16,7 @@ module Mollie
16
16
  },
17
17
  registration_number: '30204462',
18
18
  vat_number: 'NL815839091B01',
19
+ vat_regulation: 'dutch',
19
20
  _links: {
20
21
  'self' => {
21
22
  'href' => 'https://api.mollie.com/v2/organizations/org_12345678',
@@ -40,6 +41,7 @@ module Mollie
40
41
  assert_equal 'NL', organization.address.country
41
42
  assert_equal '30204462', organization.registration_number
42
43
  assert_equal 'NL815839091B01', organization.vat_number
44
+ assert_equal 'dutch', organization.vat_regulation
43
45
  assert_equal 'https://api.mollie.com/v2/organizations/org_12345678', organization.links['self']['href']
44
46
  end
45
47
 
@@ -126,13 +126,7 @@ module Mollie
126
126
  {
127
127
  "resource": "refund",
128
128
  "id": "re_4qqhO89gsT",
129
- "paymentId": "tr_WDqYK6vllg",
130
- "_links": {
131
- "settlement": {
132
- "href": "https://api.mollie.com/v2/settlements/stl_jDk30akdN",
133
- "type": "application/hal+json"
134
- }
135
- }
129
+ "settlementId": "stl_jDk30akdN"
136
130
  }
137
131
  ), headers: {})
138
132
 
@@ -180,5 +174,13 @@ module Mollie
180
174
  refund = Payment::Refund.new(id: 're_4qqhO89gsT')
181
175
  assert refund.order.nil?
182
176
  end
177
+
178
+ def test_metadata_struct
179
+ stub_request(:get, 'https://api.mollie.com/v2/payments/tr_WDqYK6vllg/refunds/re_4qqhO89gsT')
180
+ .to_return(status: 200, body: read_fixture('refunds/get.json'), headers: {})
181
+
182
+ refund = Payment::Refund.get('re_4qqhO89gsT', payment_id: 'tr_WDqYK6vllg')
183
+ assert_equal 12345, refund.metadata.bookkeeping_id
184
+ end
183
185
  end
184
186
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mollie-api-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.6.2
4
+ version: 4.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mollie B.V.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-11-21 00:00:00.000000000 Z
11
+ date: 2020-02-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -138,6 +138,7 @@ files:
138
138
  - examples/payments/get-subscription.rb
139
139
  - examples/payments/get.rb
140
140
  - examples/payments/list.rb
141
+ - examples/payments/update.rb
141
142
  - examples/payments/webhook.rb
142
143
  - examples/permissions/get.rb
143
144
  - examples/permissions/list.rb
@@ -205,6 +206,7 @@ files:
205
206
  - lib/mollie/settlement/chargeback.rb
206
207
  - lib/mollie/settlement/payment.rb
207
208
  - lib/mollie/settlement/refund.rb
209
+ - lib/mollie/subscription.rb
208
210
  - lib/mollie/util.rb
209
211
  - lib/mollie/version.rb
210
212
  - mollie-api-ruby.gemspec