mollie-api-ruby 2.1.0 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +0 -2
- data/CHANGELOG.md +4 -0
- data/{README.mdown → README.md} +8 -8
- data/examples/1-new-payment.rb +4 -2
- data/examples/4-ideal-payment.rb +4 -2
- data/lib/mollie/api/client.rb +32 -13
- data/lib/mollie/api/client/version.rb +1 -1
- data/lib/mollie/api/object/customer/mandate.rb +37 -0
- data/lib/mollie/api/object/customer/subscription.rb +69 -0
- data/lib/mollie/api/object/organization.rb +28 -0
- data/lib/mollie/api/object/permission.rb +12 -0
- data/lib/mollie/api/object/profile.rb +78 -0
- data/lib/mollie/api/object/profile/apikey.rb +23 -0
- data/lib/mollie/api/object/settlement.rb +32 -0
- data/lib/mollie/api/resource/customers/mandates.rb +1 -1
- data/lib/mollie/api/resource/customers/subscriptions.rb +1 -1
- data/lib/mollie/api/resource/organizations.rb +11 -0
- data/lib/mollie/api/resource/permissions.rb +11 -0
- data/lib/mollie/api/resource/profiles.rb +11 -0
- data/lib/mollie/api/resource/profiles/apikeys.rb +27 -0
- data/lib/mollie/api/resource/settlements.rb +11 -0
- data/lib/mollie/api/util.rb +46 -30
- data/test/mollie/api/client_test.rb +9 -4
- data/test/mollie/api/object/customer/mandate_test.rb +47 -0
- data/test/mollie/api/object/customer/subscription_test.rb +70 -0
- data/test/mollie/api/object/organization_test.rb +51 -0
- data/test/mollie/api/object/permission_test.rb +25 -0
- data/test/mollie/api/object/profile/apikey_test.rb +35 -0
- data/test/mollie/api/object/profile_test.rb +72 -0
- data/test/mollie/api/object/settlement_test.rb +140 -0
- data/test/mollie/api/resource/customers/mandates_test.rb +1 -1
- data/test/mollie/api/resource/customers/subscriptions_test.rb +1 -1
- data/test/mollie/api/resource/organizations_test.rb +13 -0
- data/test/mollie/api/resource/permissions_test.rb +13 -0
- data/test/mollie/api/resource/profiles/apikeys_test.rb +23 -0
- data/test/mollie/api/resource/profiles_test.rb +13 -0
- data/test/mollie/api/resource/settlements_test.rb +13 -0
- data/test/mollie/api/util_test.rb +47 -0
- metadata +42 -10
- data/lib/mollie/api/object/mandate.rb +0 -35
- data/lib/mollie/api/object/subscription.rb +0 -67
- data/test/mollie/api/object/mandate_test.rb +0 -45
- data/test/mollie/api/object/subscription_test.rb +0 -68
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 719ea9fd2cb5e56072dc35c2f66efdd2c87e278b
|
4
|
+
data.tar.gz: 3c460d1338c55e3fb80449da019ad5702e65b0a7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6035c6b84b160788f7f9ea14259bcc8ac1fe64e71e676e5227b8bf45f7dd0cad717b1fc7ed04a2a98b7655977e1c8d32863bcdf579beaeb312f0c5dc991b4665
|
7
|
+
data.tar.gz: d69710e8d191ed705a3b391f3d08bb29868d38d30e67f7e77741d1f329546605772b8da1de98c944e11404d1d3182e6ca49cbac6e2b1b95de015c3f6bd140621
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,10 @@
|
|
4
4
|
|
5
5
|
All notable changes to this project will be documented in this file.
|
6
6
|
|
7
|
+
#### 2.2.0 - 2017-04-21
|
8
|
+
- Add support for organizations, permissions, profiles, settlement and profiles/apikeys resources ([#54](https://github.com/mollie/mollie-api-ruby/issues/54)).
|
9
|
+
- Remove `jruby` from the build.
|
10
|
+
|
7
11
|
#### 2.1.0 - 2017-02-06
|
8
12
|
- Add pagination support to resources ([#25](https://github.com/mollie/mollie-api-ruby/issues/25)).
|
9
13
|
|
data/{README.mdown → README.md}
RENAMED
@@ -1,7 +1,8 @@
|
|
1
|
-
![Mollie](
|
1
|
+
![Mollie](https://www.mollie.nl/files/Mollie-Logo-Style-Small.png)
|
2
2
|
|
3
3
|
# Mollie API client for Ruby #
|
4
4
|
|
5
|
+
[![Gem Version](https://badge.fury.io/rb/mollie-api-ruby.svg)](https://badge.fury.io/rb/mollie-api-ruby)
|
5
6
|
[![](https://travis-ci.org/mollie/mollie-api-ruby.png)](https://travis-ci.org/mollie/mollie-api-ruby)
|
6
7
|
|
7
8
|
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.
|
@@ -52,9 +53,10 @@ Creating a new payment.
|
|
52
53
|
|
53
54
|
```ruby
|
54
55
|
payment = mollie.payments.create(
|
55
|
-
amount:
|
56
|
-
description:
|
57
|
-
redirect_url: 'https://webshop.example.org/order/12345/'
|
56
|
+
amount: 10.00,
|
57
|
+
description: 'My first API payment',
|
58
|
+
redirect_url: 'https://webshop.example.org/order/12345/',
|
59
|
+
webhook_url: 'https://webshop.example.org/mollie-webhook/'
|
58
60
|
)
|
59
61
|
```
|
60
62
|
|
@@ -92,8 +94,8 @@ $ ruby examples/app.rb
|
|
92
94
|
If you wish to learn more about our API, please visit the [Mollie Developer Portal](https://www.mollie.com/developer/). API Documentation is available in both Dutch and English.
|
93
95
|
|
94
96
|
## License ##
|
95
|
-
[BSD (Berkeley Software Distribution) License](
|
96
|
-
Copyright (c) 2014-
|
97
|
+
[BSD (Berkeley Software Distribution) License](https://opensource.org/licenses/bsd-license.php).
|
98
|
+
Copyright (c) 2014-2017, Mollie B.V.
|
97
99
|
|
98
100
|
## Support ##
|
99
101
|
Contact: [www.mollie.com](https://www.mollie.com) — info@mollie.com — +31 20-612 88 55
|
@@ -109,5 +111,3 @@ Contact: [www.mollie.com](https://www.mollie.com) — info@mollie.com — +31 20
|
|
109
111
|
+ [More information about KBC/CBC Payment Button via Mollie](https://www.mollie.com/kbccbc/)
|
110
112
|
+ [More information about Belfius Direct Net via Mollie](https://www.mollie.com/belfiusdirectnet/)
|
111
113
|
+ [More information about paysafecard via Mollie](https://www.mollie.com/paysafecard/)
|
112
|
-
|
113
|
-
![Powered By Mollie](https://www.mollie.com/images/badge-betaling-medium.png)
|
data/examples/1-new-payment.rb
CHANGED
@@ -30,13 +30,15 @@ begin
|
|
30
30
|
# Payment parameters:
|
31
31
|
# amount Amount in EUROs. This example creates a € 10,- payment.
|
32
32
|
# description Description of the payment.
|
33
|
-
#
|
33
|
+
# redirect_url Redirect location. The customer will be redirected there after the payment.
|
34
|
+
# webhook_url Webhook location, used to report when the payment changes state.
|
34
35
|
# metadata Custom metadata that is stored with the payment.
|
35
36
|
#
|
36
37
|
payment = mollie.payments.create \
|
37
38
|
:amount => 10.00,
|
38
39
|
:description => "My first API payment",
|
39
|
-
:redirect_url
|
40
|
+
:redirect_url => "#{protocol}://#{hostname}:#{port}#{path}/3-return-page?order_id=#{order_id}",
|
41
|
+
:webhook_url => "#{protocol}://#{hostname}:#{port}#{path}/2-webhook-verification",
|
40
42
|
:metadata => {
|
41
43
|
:order_id => order_id
|
42
44
|
}
|
data/examples/4-ideal-payment.rb
CHANGED
@@ -47,7 +47,8 @@ begin
|
|
47
47
|
# Payment parameters:
|
48
48
|
# amount Amount in EUROs. This example creates a € 27,50 payment.
|
49
49
|
# description Description of the payment.
|
50
|
-
#
|
50
|
+
# redirect_url Redirect location. The customer will be redirected there after the payment.
|
51
|
+
# webhook_url Webhook location, used to report when the payment changes state.
|
51
52
|
# metadata Custom metadata that is stored with the payment.
|
52
53
|
# method Payment method "ideal".
|
53
54
|
# issuer The customer's bank. If empty the customer can select it later.
|
@@ -55,7 +56,8 @@ begin
|
|
55
56
|
payment = mollie.payments.create \
|
56
57
|
:amount => 27.50,
|
57
58
|
:description => "My first API payment",
|
58
|
-
:
|
59
|
+
:redirect_url => "#{protocol}://#{hostname}:#{port}#{path}/3-return-page?order_id=#{order_id}",
|
60
|
+
:webhook_url => "#{protocol}://#{hostname}:#{port}#{path}/2-webhook-verification",
|
59
61
|
:metadata => {
|
60
62
|
:order_id => order_id
|
61
63
|
},
|
data/lib/mollie/api/client.rb
CHANGED
@@ -8,22 +8,32 @@ require "bigdecimal"
|
|
8
8
|
"client/version",
|
9
9
|
"resource/base",
|
10
10
|
"resource/customers",
|
11
|
-
"resource/customers/payments",
|
12
11
|
"resource/customers/mandates",
|
12
|
+
"resource/customers/payments",
|
13
13
|
"resource/customers/subscriptions",
|
14
|
-
"resource/payments",
|
15
|
-
"resource/payments/refunds",
|
16
14
|
"resource/issuers",
|
17
15
|
"resource/methods",
|
16
|
+
"resource/organizations",
|
17
|
+
"resource/payments",
|
18
|
+
"resource/payments/refunds",
|
19
|
+
"resource/permissions",
|
20
|
+
"resource/profiles",
|
21
|
+
"resource/profiles/apikeys",
|
22
|
+
"resource/settlements",
|
18
23
|
"object/base",
|
19
24
|
"object/list",
|
20
25
|
"object/customer",
|
21
|
-
"object/mandate",
|
22
|
-
"object/subscription",
|
26
|
+
"object/customer/mandate",
|
27
|
+
"object/customer/subscription",
|
28
|
+
"object/issuer",
|
29
|
+
"object/method",
|
30
|
+
"object/organization",
|
23
31
|
"object/payment",
|
24
32
|
"object/payment/refund",
|
25
|
-
"object/
|
26
|
-
"object/
|
33
|
+
"object/permission",
|
34
|
+
"object/profile",
|
35
|
+
"object/profile/apikey",
|
36
|
+
"object/settlement"].each { |file| require File.expand_path file, File.dirname(__FILE__) }
|
27
37
|
|
28
38
|
module Mollie
|
29
39
|
module API
|
@@ -31,20 +41,29 @@ module Mollie
|
|
31
41
|
API_ENDPOINT = "https://api.mollie.nl"
|
32
42
|
API_VERSION = "v1"
|
33
43
|
|
44
|
+
MODE_TEST = "test"
|
45
|
+
MODE_LIVE = "live"
|
46
|
+
|
34
47
|
attr_accessor :api_key
|
35
|
-
attr_reader :
|
36
|
-
:
|
48
|
+
attr_reader :customers, :customers_payments, :customers_mandates, :customers_subscriptions,
|
49
|
+
:issuers, :methods, :organizations, :payments, :payments_refunds,
|
50
|
+
:permissions, :profiles, :profiles_api_keys, :settlements,
|
37
51
|
:api_endpoint
|
38
52
|
|
39
53
|
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
54
|
@customers = Mollie::API::Resource::Customers.new self
|
45
55
|
@customers_payments = Mollie::API::Resource::Customers::Payments.new self
|
46
56
|
@customers_mandates = Mollie::API::Resource::Customers::Mandates.new self
|
47
57
|
@customers_subscriptions = Mollie::API::Resource::Customers::Subscriptions.new self
|
58
|
+
@issuers = Mollie::API::Resource::Issuers.new self
|
59
|
+
@methods = Mollie::API::Resource::Methods.new self
|
60
|
+
@organizations = Mollie::API::Resource::Organizations.new self
|
61
|
+
@payments = Mollie::API::Resource::Payments.new self
|
62
|
+
@payments_refunds = Mollie::API::Resource::Payments::Refunds.new self
|
63
|
+
@permissions = Mollie::API::Resource::Permissions.new self
|
64
|
+
@profiles = Mollie::API::Resource::Profiles.new self
|
65
|
+
@profiles_api_keys = Mollie::API::Resource::Profiles::ApiKeys.new self
|
66
|
+
@settlements = Mollie::API::Resource::Settlements.new self
|
48
67
|
|
49
68
|
@api_endpoint = API_ENDPOINT
|
50
69
|
@api_key = api_key
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Mollie
|
2
|
+
module API
|
3
|
+
module Object
|
4
|
+
class Customer
|
5
|
+
class Mandate < Base
|
6
|
+
STATUS_VALID = "valid"
|
7
|
+
STATUS_INVALID = "invalid"
|
8
|
+
|
9
|
+
attr_accessor :id,
|
10
|
+
:status,
|
11
|
+
:method,
|
12
|
+
:customer_id,
|
13
|
+
:details,
|
14
|
+
:created_datetime,
|
15
|
+
:mandate_reference
|
16
|
+
|
17
|
+
|
18
|
+
def details=(details)
|
19
|
+
@details = OpenStruct.new(details) if details.is_a?(Hash)
|
20
|
+
end
|
21
|
+
|
22
|
+
def created_datetime=(created_datetime)
|
23
|
+
@created_datetime = Time.parse(created_datetime.to_s) rescue nil
|
24
|
+
end
|
25
|
+
|
26
|
+
def valid?
|
27
|
+
status == STATUS_VALID
|
28
|
+
end
|
29
|
+
|
30
|
+
def invalid?
|
31
|
+
status == STATUS_INVALID
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
module Mollie
|
2
|
+
module API
|
3
|
+
module Object
|
4
|
+
class Customer
|
5
|
+
class Subscription < Base
|
6
|
+
STATUS_ACTIVE = "active"
|
7
|
+
STATUS_PENDING = "pending" # Waiting for a valid mandate.
|
8
|
+
STATUS_CANCELLED = "cancelled"
|
9
|
+
STATUS_SUSPENDED = "suspended" # Active, but mandate became invalid.
|
10
|
+
STATUS_COMPLETED = "completed"
|
11
|
+
|
12
|
+
attr_accessor :resource,
|
13
|
+
:id,
|
14
|
+
:customer_id,
|
15
|
+
:mode,
|
16
|
+
:created_datetime,
|
17
|
+
:status,
|
18
|
+
:amount,
|
19
|
+
:times,
|
20
|
+
:interval,
|
21
|
+
:description,
|
22
|
+
:method,
|
23
|
+
:cancelled_datetime,
|
24
|
+
:links
|
25
|
+
|
26
|
+
def active?
|
27
|
+
status == STATUS_ACTIVE
|
28
|
+
end
|
29
|
+
|
30
|
+
def pending?
|
31
|
+
status == STATUS_PENDING
|
32
|
+
end
|
33
|
+
|
34
|
+
def suspended?
|
35
|
+
status == STATUS_SUSPENDED
|
36
|
+
end
|
37
|
+
|
38
|
+
def cancelled?
|
39
|
+
status == STATUS_CANCELLED
|
40
|
+
end
|
41
|
+
|
42
|
+
def completed?
|
43
|
+
status == STATUS_COMPLETED
|
44
|
+
end
|
45
|
+
|
46
|
+
def created_datetime=(created_datetime)
|
47
|
+
@created_datetime = Time.parse(created_datetime.to_s) rescue nil
|
48
|
+
end
|
49
|
+
|
50
|
+
def cancelled_datetime=(cancelled_datetime)
|
51
|
+
@cancelled_datetime = Time.parse(cancelled_datetime.to_s) rescue nil
|
52
|
+
end
|
53
|
+
|
54
|
+
def amount=(amount)
|
55
|
+
@amount = BigDecimal.new(amount.to_s)
|
56
|
+
end
|
57
|
+
|
58
|
+
def times=(times)
|
59
|
+
@times = times.to_i
|
60
|
+
end
|
61
|
+
|
62
|
+
def webhook_url
|
63
|
+
links && links['webhook_url']
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Mollie
|
2
|
+
module API
|
3
|
+
module Object
|
4
|
+
class Organization < Base
|
5
|
+
attr_accessor :id,
|
6
|
+
:name,
|
7
|
+
:email,
|
8
|
+
:address,
|
9
|
+
:postal_code,
|
10
|
+
:city,
|
11
|
+
:country,
|
12
|
+
:country_code,
|
13
|
+
:registration_type,
|
14
|
+
:registration_number,
|
15
|
+
:registration_datetime,
|
16
|
+
:verified_datetime
|
17
|
+
|
18
|
+
def registration_datetime=(registration_datetime)
|
19
|
+
@registration_datetime = Time.parse(registration_datetime.to_s)
|
20
|
+
end
|
21
|
+
|
22
|
+
def verified_datetime=(verified_datetime)
|
23
|
+
@verified_datetime = Time.parse(verified_datetime.to_s) rescue nil
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
module Mollie
|
2
|
+
module API
|
3
|
+
module Object
|
4
|
+
class Profile < Base
|
5
|
+
CATEGORY_CODE_GENERAL_MERCHANDISE = 5399
|
6
|
+
CATEGORY_CODE_ELECTRONICS_COMPUTERS_AND_SOFTWARE = 5732
|
7
|
+
CATEGORY_CODE_TRAVEL_RENTAL_AND_TRANSPORTATION = 4121
|
8
|
+
CATEGORY_CODE_FINANCIAL_SERVICES = 6012
|
9
|
+
CATEGORY_CODE_FOOD_AND_DRINKS = 5499
|
10
|
+
CATEGORY_CODE_EVENTS_FESTIVALS_AND_RECREATION = 7999
|
11
|
+
CATEGORY_CODE_BOOKS_MAGAZINES_AND_NEWSPAPERS = 5192
|
12
|
+
CATEGORY_CODE_PERSONAL_SERVICES = 7299
|
13
|
+
CATEGORY_CODE_CHARITY_AND_DONATIONS = 8398
|
14
|
+
CATEGORY_CODE_OTHER = 0
|
15
|
+
|
16
|
+
STATUS_UNVERIFIED = "unverified"
|
17
|
+
STATUS_VERIFIED = "verified"
|
18
|
+
STATUS_BLOCKED = "blocked"
|
19
|
+
|
20
|
+
REVIEW_STATUS_PENDING = "pending"
|
21
|
+
REVIEW_STATUS_REJECTED = "rejected"
|
22
|
+
|
23
|
+
attr_accessor :id,
|
24
|
+
:mode,
|
25
|
+
:name,
|
26
|
+
:website,
|
27
|
+
:email,
|
28
|
+
:phone,
|
29
|
+
:category_code,
|
30
|
+
:status,
|
31
|
+
:review,
|
32
|
+
:created_datetime,
|
33
|
+
:updated_datetime,
|
34
|
+
:links
|
35
|
+
|
36
|
+
def unverified?
|
37
|
+
status == STATUS_UNVERIFIED
|
38
|
+
end
|
39
|
+
|
40
|
+
def verified?
|
41
|
+
status == STATUS_VERIFIED
|
42
|
+
end
|
43
|
+
|
44
|
+
def blocked?
|
45
|
+
status == STATUS_BLOCKED
|
46
|
+
end
|
47
|
+
|
48
|
+
def review=(review)
|
49
|
+
@review = OpenStruct.new(review) if review.is_a?(Hash)
|
50
|
+
end
|
51
|
+
|
52
|
+
def review_pending?
|
53
|
+
@review && @review.status == REVIEW_STATUS_PENDING
|
54
|
+
end
|
55
|
+
|
56
|
+
def review_rejected?
|
57
|
+
@review && @review.status == REVIEW_STATUS_REJECTED
|
58
|
+
end
|
59
|
+
|
60
|
+
def created_datetime=(created_datetime)
|
61
|
+
@created_datetime = Time.parse(created_datetime.to_s) rescue nil
|
62
|
+
end
|
63
|
+
|
64
|
+
def updated_datetime=(updated_datetime)
|
65
|
+
@updated_datetime = Time.parse(updated_datetime.to_s) rescue nil
|
66
|
+
end
|
67
|
+
|
68
|
+
def apikeys
|
69
|
+
links && links['apikeys']
|
70
|
+
end
|
71
|
+
|
72
|
+
def checkout_preview_url
|
73
|
+
links && links['checkout_preview_url']
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Mollie
|
2
|
+
module API
|
3
|
+
module Object
|
4
|
+
class Profile
|
5
|
+
class ApiKey < Base
|
6
|
+
attr_accessor :id, :key, :created_datetime
|
7
|
+
|
8
|
+
def testmode?
|
9
|
+
id == Mollie::API::Client::MODE_TEST
|
10
|
+
end
|
11
|
+
|
12
|
+
def livemode?
|
13
|
+
id == Mollie::API::Client::MODE_LIVE
|
14
|
+
end
|
15
|
+
|
16
|
+
def created_datetime=(created_datetime)
|
17
|
+
@created_datetime = Time.parse(created_datetime)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|