mollie-api-ruby 1.4.2 → 2.0.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.
- checksums.yaml +4 -4
- data/.travis.yml +12 -0
- data/CHANGELOG.md +6 -0
- data/README.mdown +5 -5
- data/Rakefile +6 -0
- data/examples/1-new-payment.rb +4 -5
- data/examples/2-webhook-verification.rb +2 -2
- data/examples/4-ideal-payment.rb +3 -3
- data/examples/5-payments-history.rb +3 -3
- data/examples/6-list-activated-methods.rb +3 -3
- data/examples/7-refund-payment.rb +5 -5
- data/lib/{Mollie/API → mollie/api}/cacert.pem +0 -0
- data/lib/mollie/api/client.rb +120 -0
- data/lib/{Mollie/API/Client/Version.rb → mollie/api/client/version.rb} +1 -1
- data/lib/{Mollie/API/Exception.rb → mollie/api/exception.rb} +0 -0
- data/lib/mollie/api/object/base.rb +18 -0
- data/lib/mollie/api/object/customer.rb +28 -0
- data/lib/{Mollie/API/Object/Issuer.rb → mollie/api/object/issuer.rb} +1 -3
- data/lib/mollie/api/object/list.rb +44 -0
- data/lib/mollie/api/object/mandate.rb +35 -0
- data/lib/{Mollie/API/Object/Method.rb → mollie/api/object/method.rb} +12 -4
- data/lib/mollie/api/object/payment.rb +123 -0
- data/lib/mollie/api/object/payment/refund.rb +43 -0
- data/lib/mollie/api/object/subscription.rb +67 -0
- data/lib/{Mollie/API/Resource/Base.rb → mollie/api/resource/base.rb} +8 -8
- data/lib/{Mollie/API/Resource/Customers.rb → mollie/api/resource/customers.rb} +2 -2
- data/lib/{Mollie/API/Resource/Customers/Mandates.rb → mollie/api/resource/customers/mandates.rb} +5 -5
- data/lib/{Mollie/API/Resource/Customers/Payments.rb → mollie/api/resource/customers/payments.rb} +5 -5
- data/lib/mollie/api/resource/customers/subscriptions.rb +27 -0
- data/lib/{Mollie/API/Resource/Issuers.rb → mollie/api/resource/issuers.rb} +2 -2
- data/lib/{Mollie/API/Resource/Methods.rb → mollie/api/resource/methods.rb} +2 -2
- data/lib/{Mollie/API/Resource/Payments.rb → mollie/api/resource/payments.rb} +2 -2
- data/lib/{Mollie/API/Resource/Payments/Refunds.rb → mollie/api/resource/payments/refunds.rb} +5 -5
- data/lib/mollie/api/util.rb +37 -0
- data/mollie.gemspec +16 -14
- data/test/helper.rb +4 -0
- data/test/mollie/api/client_test.rb +99 -0
- data/test/mollie/api/object/base_test.rb +21 -0
- data/test/mollie/api/object/customer_test.rb +35 -0
- data/test/mollie/api/object/issuer_test.rb +23 -0
- data/test/mollie/api/object/list_test.rb +44 -0
- data/test/mollie/api/object/mandate_test.rb +45 -0
- data/test/mollie/api/object/method_test.rb +33 -0
- data/test/mollie/api/object/payment/refund_test.rb +46 -0
- data/test/mollie/api/object/payment_test.rb +91 -0
- data/test/mollie/api/object/subscription_test.rb +68 -0
- data/test/mollie/api/resource/base_test.rb +83 -0
- data/test/mollie/api/resource/customers/mandates_test.rb +23 -0
- data/test/mollie/api/resource/customers/payments_test.rb +23 -0
- data/test/mollie/api/resource/customers/subscriptions_test.rb +23 -0
- data/test/mollie/api/resource/customers_test.rb +13 -0
- data/test/mollie/api/resource/issuers_test.rb +13 -0
- data/test/mollie/api/resource/methods_test.rb +13 -0
- data/test/mollie/api/resource/payments/refunds_test.rb +23 -0
- data/test/mollie/api/resource/payments_test.rb +13 -0
- data/test/run-test.rb +15 -0
- metadata +99 -52
- data/lib/Mollie/API/Client.rb +0 -130
- data/lib/Mollie/API/Object/Base.rb +0 -18
- data/lib/Mollie/API/Object/Customer.rb +0 -16
- data/lib/Mollie/API/Object/List.rb +0 -35
- data/lib/Mollie/API/Object/Mandate.rb +0 -22
- data/lib/Mollie/API/Object/Payment.rb +0 -68
- data/lib/Mollie/API/Object/Payment/Refund.rb +0 -15
- data/lib/Mollie/API/Object/Subscription.rb +0 -26
- data/lib/Mollie/API/Resource/Customers/Subscriptions.rb +0 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7d5c227d854ac6e5a402fbd2b908c74498c99d00
|
4
|
+
data.tar.gz: 9d15b18d8eb8602b290ac72df24715347caab492
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 608d8337e5de29059eb38e6b612873c98f937b361655e7fe803a9c14e35ca43d6091ba563661cc11110e879a7ce45e5364348aeedc5ec6bd77e696d93cc7b30c
|
7
|
+
data.tar.gz: 33ec2a635718181ce1c8dc9ab89145253c82308d4cd5c376f115d18cb1e1d795d6eaf6a0d99f14b51ed3f1bb7d5aa81455c3963352b7bbb678017af47db79db3
|
data/.travis.yml
ADDED
data/CHANGELOG.md
CHANGED
@@ -5,6 +5,12 @@
|
|
5
5
|
All notable changes to this project will be documented in this file.
|
6
6
|
|
7
7
|
|
8
|
+
#### 2.0.0 - 2016-11-10
|
9
|
+
- Refactor to a more ruby like library.
|
10
|
+
- all methods use underscores
|
11
|
+
- payloads to call api functions will be camel cased before sending
|
12
|
+
- getters and setters are now just attr_accessors and omit get and set
|
13
|
+
|
8
14
|
#### v1.4.2 - 2016-10-19
|
9
15
|
- Added payment method KBC/CBC Payment Button
|
10
16
|
- Fixed an issue where the required `mime-types` dependency did not work correctly ([#32](https://github.com/mollie/mollie-api-ruby/pull/32)).
|
data/README.mdown
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
|
3
3
|
# Mollie API client for Ruby #
|
4
4
|
|
5
|
+
[](https://travis-ci.org/mollie/mollie-api-ruby)
|
6
|
+
|
5
7
|
Accepting [iDEAL](https://www.mollie.com/ideal/), [Bancontact/Mister Cash](https://www.mollie.com/mistercash/), [SOFORT Banking](https://www.mollie.com/sofort/), [Creditcard](https://www.mollie.com/creditcard/), [SEPA Bank transfer](https://www.mollie.com/overboeking/), [SEPA Direct debit](https://www.mollie.com/directdebit/), [Bitcoin](https://www.mollie.com/bitcoin/), [PayPal](https://www.mollie.com/paypal/), [KBC/CBC Payment Button](https://www.mollie.com/kbccbc/), [Belfius Direct Net](https://www.mollie.com/belfiusdirectnet/) and [paysafecard](https://www.mollie.com/paysafecard/) online payments without fixed monthly costs or any punishing registration procedures. Just use the Mollie API to receive payments directly on your website or easily refund transactions to your customers.
|
6
8
|
|
7
9
|
## Requirements ##
|
@@ -11,7 +13,6 @@ To use the Mollie API client, the following things are required:
|
|
11
13
|
+ Create a new [Website profile](https://www.mollie.nl/beheer/account/profielen/) to generate API keys (live and test mode) and setup your webhook.
|
12
14
|
+ Now you're ready to use the Mollie API client in test mode.
|
13
15
|
+ In order to accept payments in live mode, payment methods must be activated in your account. Follow [a few of steps](https://www.mollie.nl/beheer/diensten), and let us handle the rest.
|
14
|
-
+ This API client requires the [REST Client](https://github.com/rest-client/rest-client) (with [mime-types](https://github.com/mime-types/ruby-mime-types/) version <3) and [JSON](https://rubygems.org/gems/json) gems.
|
15
16
|
|
16
17
|
## Installation ##
|
17
18
|
|
@@ -38,14 +39,13 @@ To successfully receive a payment, these steps should be implemented:
|
|
38
39
|
Requiring the Mollie API Client.
|
39
40
|
|
40
41
|
```ruby
|
41
|
-
require '
|
42
|
+
require 'mollie/api/client'
|
42
43
|
```
|
43
44
|
|
44
45
|
Initializing the Mollie API client, and setting your API key.
|
45
46
|
|
46
47
|
```ruby
|
47
|
-
mollie = Mollie::API::Client.new
|
48
|
-
mollie.api_key = 'test_dHar4XY7LxsDOtmnkVtjNVWXLSlXsM'
|
48
|
+
mollie = Mollie::API::Client.new('test_dHar4XY7LxsDOtmnkVtjNVWXLSlXsM')
|
49
49
|
```
|
50
50
|
|
51
51
|
Creating a new payment.
|
@@ -54,7 +54,7 @@ Creating a new payment.
|
|
54
54
|
payment = mollie.payments.create(
|
55
55
|
amount: 10.00,
|
56
56
|
description: 'My first API payment',
|
57
|
-
|
57
|
+
redirect_url: 'https://webshop.example.org/order/12345/'
|
58
58
|
)
|
59
59
|
```
|
60
60
|
|
data/Rakefile
ADDED
data/examples/1-new-payment.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#
|
2
2
|
# Example 1 - How to prepare a new payment with the Mollie API.
|
3
3
|
#
|
4
|
-
require File.expand_path "../lib/
|
4
|
+
require File.expand_path "../lib/mollie/api/client", File.dirname(__FILE__)
|
5
5
|
|
6
6
|
begin
|
7
7
|
#
|
@@ -10,7 +10,7 @@ begin
|
|
10
10
|
# See: https://www.mollie.nl/beheer/account/profielen/
|
11
11
|
#
|
12
12
|
mollie = Mollie::API::Client.new
|
13
|
-
mollie.
|
13
|
+
mollie.api_key = "test_dHar4XY7LxsDOtmnkVtjNVWXLSlXsM"
|
14
14
|
|
15
15
|
#
|
16
16
|
# Generate a unique order id for this example. It is important to include this unique attribute
|
@@ -36,11 +36,10 @@ begin
|
|
36
36
|
payment = mollie.payments.create \
|
37
37
|
:amount => 10.00,
|
38
38
|
:description => "My first API payment",
|
39
|
-
:
|
39
|
+
:redirect_url => "#{protocol}://#{hostname}:#{port}#{path}/3-return-page?order_id=#{order_id}",
|
40
40
|
:metadata => {
|
41
41
|
:order_id => order_id
|
42
42
|
}
|
43
|
-
|
44
43
|
#
|
45
44
|
# In this example we store the order with its payment status in a database.
|
46
45
|
#
|
@@ -49,7 +48,7 @@ begin
|
|
49
48
|
#
|
50
49
|
# Send the customer off to complete the payment.
|
51
50
|
#
|
52
|
-
$response.redirect payment.
|
51
|
+
$response.redirect payment.payment_url
|
53
52
|
rescue Mollie::API::Exception => e
|
54
53
|
$response.body << "API call failed: " << (CGI.escapeHTML e.message)
|
55
54
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
#
|
2
2
|
# Example 2 - How to verify Mollie API Payments in a webhook.
|
3
3
|
#
|
4
|
-
require File.expand_path "../lib/
|
4
|
+
require File.expand_path "../lib/mollie/api/client", File.dirname(__FILE__)
|
5
5
|
|
6
6
|
begin
|
7
7
|
#
|
@@ -10,7 +10,7 @@ begin
|
|
10
10
|
# See: https://www.mollie.nl/beheer/account/profielen/
|
11
11
|
#
|
12
12
|
mollie = Mollie::API::Client.new
|
13
|
-
mollie.
|
13
|
+
mollie.api_key = "test_dHar4XY7LxsDOtmnkVtjNVWXLSlXsM"
|
14
14
|
|
15
15
|
#
|
16
16
|
# Retrieve the payment's current state.
|
data/examples/4-ideal-payment.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#
|
2
2
|
# Example 4 - How to prepare an iDEAL payment with the Mollie API.
|
3
3
|
#
|
4
|
-
require File.expand_path "../lib/
|
4
|
+
require File.expand_path "../lib/mollie/api/client", File.dirname(__FILE__)
|
5
5
|
|
6
6
|
begin
|
7
7
|
#
|
@@ -10,7 +10,7 @@ begin
|
|
10
10
|
# See: https://www.mollie.nl/beheer/account/profielen/
|
11
11
|
#
|
12
12
|
mollie = Mollie::API::Client.new
|
13
|
-
mollie.
|
13
|
+
mollie.api_key = "test_dHar4XY7LxsDOtmnkVtjNVWXLSlXsM"
|
14
14
|
|
15
15
|
#
|
16
16
|
# First, let the customer pick the bank in a simple HTML form. This step is actually optional.
|
@@ -70,7 +70,7 @@ begin
|
|
70
70
|
#
|
71
71
|
# Send the customer off to complete the payment.
|
72
72
|
#
|
73
|
-
$response.redirect payment.
|
73
|
+
$response.redirect payment.payment_url
|
74
74
|
end
|
75
75
|
rescue Mollie::API::Exception => e
|
76
76
|
$response.body << "API call failed: " << (CGI.escapeHTML e.message)
|
@@ -1,7 +1,7 @@
|
|
1
1
|
#
|
2
2
|
# Example 5 - How to retrieve your payments history.
|
3
3
|
#
|
4
|
-
require File.expand_path "../lib/
|
4
|
+
require File.expand_path "../lib/mollie/api/client", File.dirname(__FILE__)
|
5
5
|
|
6
6
|
begin
|
7
7
|
#
|
@@ -10,14 +10,14 @@ begin
|
|
10
10
|
# See: https://www.mollie.nl/beheer/account/profielen/
|
11
11
|
#
|
12
12
|
mollie = Mollie::API::Client.new
|
13
|
-
mollie.
|
13
|
+
mollie.api_key = "test_dHar4XY7LxsDOtmnkVtjNVWXLSlXsM"
|
14
14
|
|
15
15
|
#
|
16
16
|
# Get the all payments for this API key ordered by newest.
|
17
17
|
#
|
18
18
|
payments = mollie.payments.all
|
19
19
|
|
20
|
-
$response.body = "Your API key has #{payments.
|
20
|
+
$response.body = "Your API key has #{payments.total_count} payments, last #{payments.count}:<br>"
|
21
21
|
|
22
22
|
payments.each { |payment|
|
23
23
|
$response.body << "€ #{payment.amount}, status: #{CGI.escapeHTML payment.status} (#{CGI.escapeHTML payment.id})<br>"
|
@@ -1,7 +1,7 @@
|
|
1
1
|
#
|
2
2
|
# Example 6 - How to get the currently activated payment methods.
|
3
3
|
#
|
4
|
-
require File.expand_path "../lib/
|
4
|
+
require File.expand_path "../lib/mollie/api/client", File.dirname(__FILE__)
|
5
5
|
|
6
6
|
begin
|
7
7
|
#
|
@@ -10,14 +10,14 @@ begin
|
|
10
10
|
# See: https://www.mollie.nl/beheer/account/profielen/
|
11
11
|
#
|
12
12
|
mollie = Mollie::API::Client.new
|
13
|
-
mollie.
|
13
|
+
mollie.api_key = "test_dHar4XY7LxsDOtmnkVtjNVWXLSlXsM"
|
14
14
|
|
15
15
|
#
|
16
16
|
# Get the all the activated methods for this API key.
|
17
17
|
#
|
18
18
|
methods = mollie.methods.all
|
19
19
|
|
20
|
-
$response.body << "Your API key has #{methods.
|
20
|
+
$response.body << "Your API key has #{methods.total_count} activated payment methods:<br>"
|
21
21
|
|
22
22
|
methods.each { |method|
|
23
23
|
$response.body << '<div style="line-height:40px; vertical-align:top">'
|
@@ -1,7 +1,7 @@
|
|
1
1
|
#
|
2
2
|
# Example 7 - How to refund a payment programmatically.
|
3
3
|
#
|
4
|
-
require File.expand_path "../lib/
|
4
|
+
require File.expand_path "../lib/mollie/api/client", File.dirname(__FILE__)
|
5
5
|
|
6
6
|
begin
|
7
7
|
#
|
@@ -10,7 +10,7 @@ begin
|
|
10
10
|
# See: https://www.mollie.nl/beheer/account/profielen/
|
11
11
|
#
|
12
12
|
mollie = Mollie::API::Client.new
|
13
|
-
mollie.
|
13
|
+
mollie.api_key = "test_dHar4XY7LxsDOtmnkVtjNVWXLSlXsM"
|
14
14
|
|
15
15
|
#
|
16
16
|
# Retrieve the payment you want to refund from the API.
|
@@ -30,9 +30,9 @@ begin
|
|
30
30
|
refunds = mollie.payments_refunds.with(payment).all
|
31
31
|
|
32
32
|
refunds.each { |refund|
|
33
|
-
$response.body << '<br> Refund date: ' << (CGI.escapeHTML refund.
|
34
|
-
$response.body << '<br> Refunded: € ' << (CGI.escapeHTML refund.
|
35
|
-
$response.body << '<br> Remaining: € ' << (CGI.escapeHTML refund.
|
33
|
+
$response.body << '<br> Refund date: ' << (CGI.escapeHTML refund.refunded_datetime)
|
34
|
+
$response.body << '<br> Refunded: € ' << (CGI.escapeHTML refund.amount_refunded)
|
35
|
+
$response.body << '<br> Remaining: € ' << (CGI.escapeHTML refund.amount_remaining)
|
36
36
|
$response.body << '<br>'
|
37
37
|
}
|
38
38
|
rescue Mollie::API::Exception => e
|
File without changes
|
@@ -0,0 +1,120 @@
|
|
1
|
+
require "json"
|
2
|
+
require "time"
|
3
|
+
require "ostruct"
|
4
|
+
require "bigdecimal"
|
5
|
+
|
6
|
+
["exception",
|
7
|
+
"util",
|
8
|
+
"client/version",
|
9
|
+
"resource/base",
|
10
|
+
"resource/customers",
|
11
|
+
"resource/customers/payments",
|
12
|
+
"resource/customers/mandates",
|
13
|
+
"resource/customers/subscriptions",
|
14
|
+
"resource/payments",
|
15
|
+
"resource/payments/refunds",
|
16
|
+
"resource/issuers",
|
17
|
+
"resource/methods",
|
18
|
+
"object/base",
|
19
|
+
"object/list",
|
20
|
+
"object/customer",
|
21
|
+
"object/mandate",
|
22
|
+
"object/subscription",
|
23
|
+
"object/payment",
|
24
|
+
"object/payment/refund",
|
25
|
+
"object/issuer",
|
26
|
+
"object/method"].each { |file| require File.expand_path file, File.dirname(__FILE__) }
|
27
|
+
|
28
|
+
module Mollie
|
29
|
+
module API
|
30
|
+
class Client
|
31
|
+
API_ENDPOINT = "https://api.mollie.nl"
|
32
|
+
API_VERSION = "v1"
|
33
|
+
|
34
|
+
attr_accessor :api_key
|
35
|
+
attr_reader :payments, :issuers, :methods, :payments_refunds,
|
36
|
+
:customers, :customers_payments, :customers_mandates, :customers_subscriptions,
|
37
|
+
:api_endpoint
|
38
|
+
|
39
|
+
def initialize(api_key)
|
40
|
+
@payments = Mollie::API::Resource::Payments.new self
|
41
|
+
@issuers = Mollie::API::Resource::Issuers.new self
|
42
|
+
@methods = Mollie::API::Resource::Methods.new self
|
43
|
+
@payments_refunds = Mollie::API::Resource::Payments::Refunds.new self
|
44
|
+
@customers = Mollie::API::Resource::Customers.new self
|
45
|
+
@customers_payments = Mollie::API::Resource::Customers::Payments.new self
|
46
|
+
@customers_mandates = Mollie::API::Resource::Customers::Mandates.new self
|
47
|
+
@customers_subscriptions = Mollie::API::Resource::Customers::Subscriptions.new self
|
48
|
+
|
49
|
+
@api_endpoint = API_ENDPOINT
|
50
|
+
@api_key = api_key
|
51
|
+
@version_strings = []
|
52
|
+
|
53
|
+
add_version_string "Mollie/" << VERSION
|
54
|
+
add_version_string "Ruby/" << RUBY_VERSION
|
55
|
+
add_version_string OpenSSL::OPENSSL_VERSION.split(" ").slice(0, 2).join "/"
|
56
|
+
end
|
57
|
+
|
58
|
+
def api_endpoint=(api_endpoint)
|
59
|
+
@api_endpoint = api_endpoint.chomp "/"
|
60
|
+
end
|
61
|
+
|
62
|
+
def add_version_string(version_string)
|
63
|
+
@version_strings << (version_string.gsub /\s+/, "-")
|
64
|
+
end
|
65
|
+
|
66
|
+
def perform_http_call(http_method, api_method, id = nil, http_body = {})
|
67
|
+
path = "/#{API_VERSION}/#{api_method}/#{id}".chomp('/')
|
68
|
+
case http_method
|
69
|
+
when 'GET'
|
70
|
+
request = Net::HTTP::Get.new(path)
|
71
|
+
when 'POST'
|
72
|
+
http_body.delete_if { |k, v| v.nil? }
|
73
|
+
request = Net::HTTP::Post.new(path)
|
74
|
+
request.body = Util.camelize_keys(http_body).to_json
|
75
|
+
when 'DELETE'
|
76
|
+
request = Net::HTTP::Delete.new(path)
|
77
|
+
else
|
78
|
+
raise Mollie::API::Exception.new("Invalid HTTP Method: #{http_method}")
|
79
|
+
end
|
80
|
+
|
81
|
+
request['Accept'] = 'application/json'
|
82
|
+
request['Authorization'] = "Bearer #{@api_key}"
|
83
|
+
request['User-Agent'] = @version_strings.join(" ")
|
84
|
+
|
85
|
+
begin
|
86
|
+
response = client.request(request)
|
87
|
+
rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError,
|
88
|
+
Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => e
|
89
|
+
raise Mollie::API::Exception.new(e.message)
|
90
|
+
end
|
91
|
+
|
92
|
+
http_code = response.code.to_i
|
93
|
+
case http_code
|
94
|
+
when 200, 201
|
95
|
+
Util.nested_underscore_keys(JSON.parse(response.body))
|
96
|
+
when 204
|
97
|
+
{} # No Content
|
98
|
+
else
|
99
|
+
response = JSON.parse(response.body)
|
100
|
+
exception = Mollie::API::Exception.new response['error']['message']
|
101
|
+
exception.code = http_code
|
102
|
+
exception.field = response['error']['field'] unless response['error']['field'].nil?
|
103
|
+
raise exception
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
private
|
108
|
+
|
109
|
+
def client
|
110
|
+
return @client if defined? @client
|
111
|
+
uri = URI.parse(@api_endpoint)
|
112
|
+
@client = Net::HTTP.new(uri.host, uri.port)
|
113
|
+
@client.use_ssl = true
|
114
|
+
@client.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
115
|
+
@client.ca_file = (File.expand_path "cacert.pem", File.dirname(__FILE__))
|
116
|
+
@client
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
File without changes
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Mollie
|
2
|
+
module API
|
3
|
+
module Object
|
4
|
+
class Base
|
5
|
+
attr_reader :attributes
|
6
|
+
|
7
|
+
def initialize(attributes)
|
8
|
+
@attributes = attributes
|
9
|
+
attributes.each do |key, value|
|
10
|
+
if self.respond_to?("#{key}=")
|
11
|
+
public_send("#{key}=", value)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Mollie
|
2
|
+
module API
|
3
|
+
module Object
|
4
|
+
class Customer < Base
|
5
|
+
attr_accessor :id,
|
6
|
+
:mode,
|
7
|
+
:name,
|
8
|
+
:email,
|
9
|
+
:locale,
|
10
|
+
:metadata,
|
11
|
+
:recently_used_methods,
|
12
|
+
:created_datetime
|
13
|
+
|
14
|
+
def created_datetime=(created_datetime)
|
15
|
+
@created_datetime = Time.parse(created_datetime.to_s)
|
16
|
+
end
|
17
|
+
|
18
|
+
def recently_used_methods=(methods)
|
19
|
+
@recently_used_methods = Array(methods).map(&:to_s)
|
20
|
+
end
|
21
|
+
|
22
|
+
def metadata=(metadata)
|
23
|
+
@metadata = OpenStruct.new(metadata) if metadata.is_a?(Hash)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|