mollie-ruby 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +1 -0
- data/README.md +10 -1
- data/lib/mollie/client.rb +14 -3
- data/lib/mollie/version.rb +1 -1
- data/mollie.gemspec +2 -1
- data/spec/mollie/client_spec.rb +22 -1
- data/spec/spec_helper.rb +4 -2
- data/spec/vcr_cassettes/get_issuers_list.yml +43 -0
- data/spec/vcr_cassettes/get_status_paid.yml +2 -2
- data/spec/vcr_cassettes/invalid_key.yml +42 -0
- data/spec/vcr_cassettes/prepare_payment.yml +8 -8
- data/spec/vcr_cassettes/refund_payment.yml +2 -2
- metadata +21 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b0fddf0df04e01df0ad52f53a615bc01fc93ad9f
|
4
|
+
data.tar.gz: 5a2f2996bf5a52d6d1b2a67c601e25663fcf8a5a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 92c98f3eff7f02df5069a5ac470209490e653c74005a9c60872df877dfc834bf92a0968d98d205a7b5470f6dbf05917c72bdb57d847f65bb8c18684f7111eb90
|
7
|
+
data.tar.gz: d8487caafe1a2de0ec2467a43d454f5c128591b5e62033d0d5e2ddeda84f92d59940115a029523797edae946e05dc674d295bdadaacfca58d6145253179a2633
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
# Mollie API client for Ruby
|
2
2
|
|
3
3
|
[![wercker status](https://app.wercker.com/status/a8cb5d924bf5a477b7e7b0b971a51470/m/master "wercker status")](https://app.wercker.com/project/bykey/a8cb5d924bf5a477b7e7b0b971a51470)
|
4
|
+
[![Gem Version](https://badge.fury.io/rb/mollie-ruby.svg)](http://badge.fury.io/rb/mollie-ruby)
|
5
|
+
[![Code Climate](https://codeclimate.com/github/pero-ict-solutions/mollie-ruby/badges/gpa.svg)](https://codeclimate.com/github/pero-ict-solutions/mollie-ruby)
|
6
|
+
[![Test Coverage](https://codeclimate.com/github/pero-ict-solutions/mollie-ruby/badges/coverage.svg)](https://codeclimate.com/github/pero-ict-solutions/mollie-ruby)
|
4
7
|
|
5
8
|
Accepting [iDEAL](https://www.mollie.nl/betaaldiensten/ideal/), [Mister Cash](https://www.mollie.nl/betaaldiensten/mistercash/), [Creditcard](https://www.mollie.nl/betaaldiensten/creditcard/), and [paysafecard](https://www.mollie.nl/betaaldiensten/paysafecard/) online payments without fixed monthly costs or any punishing registration procedures. Just use the Mollie API to receive payments directly on your website.
|
6
9
|
|
@@ -16,12 +19,18 @@ To use the Mollie API client, the following things are required:
|
|
16
19
|
|
17
20
|
Add this line to your application's Gemfile:
|
18
21
|
|
19
|
-
gem 'mollie-ruby',
|
22
|
+
gem 'mollie-ruby', require: 'mollie'
|
20
23
|
|
21
24
|
And then execute:
|
22
25
|
|
23
26
|
$ bundle
|
24
27
|
|
28
|
+
### Using from github source
|
29
|
+
|
30
|
+
If you want to use the latest 'edge' code, you can use this line in your Gemfile:
|
31
|
+
|
32
|
+
gem 'mollie-ruby', github: 'pero-ict-solutions/mollie-ruby', require: 'mollie'
|
33
|
+
|
25
34
|
## Usage
|
26
35
|
|
27
36
|
the most basic way of getting paid is to prepare the payment on the Mollie server and then redirect the user to the provided `paymentUrl`. Make sure you store the payment `id` for further references. When the user makes a payment, Mollie will call the provided `redirect_url` webhook with the `id` as the POST parameter.
|
data/lib/mollie/client.rb
CHANGED
@@ -16,14 +16,15 @@ module Mollie
|
|
16
16
|
"Bearer " + self.api_key
|
17
17
|
end
|
18
18
|
|
19
|
-
def prepare_payment(amount, description, redirect_url, metadata = {})
|
19
|
+
def prepare_payment(amount, description, redirect_url, metadata = {}, method=nil, method_params = {})
|
20
20
|
response = self.class.post('/payments',
|
21
21
|
:body => {
|
22
22
|
:amount => amount,
|
23
23
|
:description => description,
|
24
24
|
:redirectUrl => redirect_url,
|
25
|
-
:metadata => metadata
|
26
|
-
|
25
|
+
:metadata => metadata,
|
26
|
+
:method => method
|
27
|
+
}.merge(method_params),
|
27
28
|
:headers => {
|
28
29
|
'Authorization' => auth_token
|
29
30
|
}
|
@@ -31,6 +32,16 @@ module Mollie
|
|
31
32
|
JSON.parse(response.body)
|
32
33
|
end
|
33
34
|
|
35
|
+
def issuers
|
36
|
+
response = self.class.get("/issuers",
|
37
|
+
:headers => {
|
38
|
+
'Authorization' => auth_token
|
39
|
+
}
|
40
|
+
)
|
41
|
+
response = JSON.parse(response.body)
|
42
|
+
response["data"].map {|issuer| {id: issuer["id"], name: issuer["name"]} }
|
43
|
+
end
|
44
|
+
|
34
45
|
def payment_status(payment_id)
|
35
46
|
response = self.class.get("/payments/#{payment_id}",
|
36
47
|
:headers => {
|
data/lib/mollie/version.rb
CHANGED
data/mollie.gemspec
CHANGED
@@ -25,5 +25,6 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.add_development_dependency 'rspec'
|
26
26
|
spec.add_development_dependency 'vcr'
|
27
27
|
spec.add_development_dependency 'webmock'
|
28
|
-
spec.add_development_dependency '
|
28
|
+
spec.add_development_dependency 'pry'
|
29
|
+
spec.add_development_dependency 'codeclimate-test-reporter'
|
29
30
|
end
|
data/spec/mollie/client_spec.rb
CHANGED
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Mollie::Client do
|
4
4
|
|
5
|
-
let(:api_key) { "
|
5
|
+
let(:api_key) { "test_4drFuX5HdjBaFxdXoaABYD8yO4HjuT" }
|
6
6
|
|
7
7
|
context '#prepare' do
|
8
8
|
|
@@ -29,6 +29,17 @@ describe Mollie::Client do
|
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
|
+
context "issuers" do
|
33
|
+
it "returns a hash with the iDeal issuers" do
|
34
|
+
VCR.use_cassette('get_issuers_list') do
|
35
|
+
client = Mollie::Client.new(api_key)
|
36
|
+
response = client.issuers
|
37
|
+
expect(response.first[:id]).to eql "ideal_TESTNL99"
|
38
|
+
expect(response.first[:name]).to eql "TBM Bank"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
32
43
|
context 'status' do
|
33
44
|
context 'when payment is paid' do
|
34
45
|
it "returns the paid status" do
|
@@ -51,4 +62,14 @@ describe Mollie::Client do
|
|
51
62
|
end
|
52
63
|
end
|
53
64
|
|
65
|
+
context "error response" do
|
66
|
+
it "will raise an Exception" do
|
67
|
+
VCR.use_cassette('invalid_key') do
|
68
|
+
client = Mollie::Client.new(api_key << "foo")
|
69
|
+
response = client.refund_payment("tr_8NQDMOE7EC")
|
70
|
+
expect(response["error"]).to_not be nil
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
54
75
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,8 +1,9 @@
|
|
1
|
-
require
|
2
|
-
|
1
|
+
require "codeclimate-test-reporter"
|
2
|
+
CodeClimate::TestReporter.start
|
3
3
|
|
4
4
|
require 'mollie'
|
5
5
|
require 'vcr'
|
6
|
+
require 'pry'
|
6
7
|
|
7
8
|
# This file was generated by the `rspec --init` command. Conventionally, all
|
8
9
|
# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
|
@@ -24,4 +25,5 @@ end
|
|
24
25
|
VCR.configure do |c|
|
25
26
|
c.cassette_library_dir = 'spec/vcr_cassettes'
|
26
27
|
c.hook_into :webmock # or :fakeweb
|
28
|
+
c.ignore_hosts 'codeclimate.com'
|
27
29
|
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://api.mollie.nl/v1/issuers
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Authorization:
|
11
|
+
- Bearer test_4drFuX5HdjBaFxdXoaABYD8yO4HjuT
|
12
|
+
response:
|
13
|
+
status:
|
14
|
+
code: 200
|
15
|
+
message: OK
|
16
|
+
headers:
|
17
|
+
Server:
|
18
|
+
- nginx
|
19
|
+
Date:
|
20
|
+
- Wed, 08 Oct 2014 20:21:37 GMT
|
21
|
+
Content-Type:
|
22
|
+
- application/json; charset=utf-8
|
23
|
+
Content-Length:
|
24
|
+
- '105'
|
25
|
+
Connection:
|
26
|
+
- keep-alive
|
27
|
+
Access-Control-Allow-Credentials:
|
28
|
+
- 'true'
|
29
|
+
Access-Control-Allow-Methods:
|
30
|
+
- GET, POST, HEAD, OPTIONS, DELETE
|
31
|
+
Access-Control-Max-Age:
|
32
|
+
- '300'
|
33
|
+
Strict-Transport-Security:
|
34
|
+
- max-age=31556926; includeSubDomains
|
35
|
+
X-Whom:
|
36
|
+
- dc1-web-1
|
37
|
+
body:
|
38
|
+
encoding: UTF-8
|
39
|
+
string: '{"totalCount":1,"offset":0,"count":1,"data":[{"id":"ideal_TESTNL99","name":"TBM
|
40
|
+
Bank","method":"ideal"}]}'
|
41
|
+
http_version:
|
42
|
+
recorded_at: Wed, 08 Oct 2014 20:21:37 GMT
|
43
|
+
recorded_with: VCR 2.9.3
|
@@ -8,7 +8,7 @@ http_interactions:
|
|
8
8
|
string: ''
|
9
9
|
headers:
|
10
10
|
Authorization:
|
11
|
-
- Bearer
|
11
|
+
- Bearer test_4drFuX5HdjBaFxdXoaABYD8yO4HjuT
|
12
12
|
response:
|
13
13
|
status:
|
14
14
|
code: 200
|
@@ -39,6 +39,6 @@ http_interactions:
|
|
39
39
|
string: '{"id":"tr_8NQDMOE7EC","mode":"test","createdDatetime":"2014-08-12T12:27:26.0Z","status":"paid","paidDatetime":"2014-08-12T12:33:23.0Z","amount":"99.99","description":"My
|
40
40
|
fantastic product","method":"ideal","metadata":null,"details":{"consumerName":"T.
|
41
41
|
TEST","consumerAccount":"NL17RABO0213698412","consumerBic":"TESTNL99"},"locale":"nl","links":{"redirectUrl":"http://localhost:3000/payments/1/update"}}'
|
42
|
-
http_version:
|
42
|
+
http_version:
|
43
43
|
recorded_at: Tue, 12 Aug 2014 12:33:39 GMT
|
44
44
|
recorded_with: VCR 2.9.2
|
@@ -0,0 +1,42 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://api.mollie.nl/v1/payments/tr_8NQDMOE7EC/refunds
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Authorization:
|
11
|
+
- Bearer test_4drFuX5HdjBaFxdXoaABYD8yO4HjuTfoo
|
12
|
+
response:
|
13
|
+
status:
|
14
|
+
code: 401
|
15
|
+
message: Authorization Required
|
16
|
+
headers:
|
17
|
+
Server:
|
18
|
+
- nginx
|
19
|
+
Date:
|
20
|
+
- Wed, 08 Oct 2014 20:27:36 GMT
|
21
|
+
Content-Type:
|
22
|
+
- application/json; charset=utf-8
|
23
|
+
Content-Length:
|
24
|
+
- '121'
|
25
|
+
Connection:
|
26
|
+
- keep-alive
|
27
|
+
Access-Control-Allow-Credentials:
|
28
|
+
- 'true'
|
29
|
+
Access-Control-Allow-Methods:
|
30
|
+
- GET, POST, HEAD, OPTIONS, DELETE
|
31
|
+
Access-Control-Max-Age:
|
32
|
+
- '300'
|
33
|
+
Strict-Transport-Security:
|
34
|
+
- max-age=31556926; includeSubDomains
|
35
|
+
Www-Authenticate:
|
36
|
+
- Basic realm="Mollie API Key"
|
37
|
+
body:
|
38
|
+
encoding: UTF-8
|
39
|
+
string: '{"error":{"type":"request","message":"Unauthorized request","links":{"documentation":"https://www.mollie.nl/api/docs/"}}}'
|
40
|
+
http_version:
|
41
|
+
recorded_at: Wed, 08 Oct 2014 20:27:36 GMT
|
42
|
+
recorded_with: VCR 2.9.3
|
@@ -5,10 +5,10 @@ http_interactions:
|
|
5
5
|
uri: https://api.mollie.nl/v1/payments
|
6
6
|
body:
|
7
7
|
encoding: UTF-8
|
8
|
-
string: amount=99.99&description=My%20fantastic%20product&redirectUrl=http%3A%2F%2Flocalhost%3A3000%2Fpayments%2F1%2Fupdate&metadata[order_id]=R232454365
|
8
|
+
string: amount=99.99&description=My%20fantastic%20product&redirectUrl=http%3A%2F%2Flocalhost%3A3000%2Fpayments%2F1%2Fupdate&metadata[order_id]=R232454365&method=
|
9
9
|
headers:
|
10
10
|
Authorization:
|
11
|
-
- Bearer
|
11
|
+
- Bearer test_4drFuX5HdjBaFxdXoaABYD8yO4HjuT
|
12
12
|
response:
|
13
13
|
status:
|
14
14
|
code: 201
|
@@ -17,7 +17,7 @@ http_interactions:
|
|
17
17
|
Server:
|
18
18
|
- nginx
|
19
19
|
Date:
|
20
|
-
-
|
20
|
+
- Wed, 08 Oct 2014 08:40:18 GMT
|
21
21
|
Content-Type:
|
22
22
|
- application/json; charset=utf-8
|
23
23
|
Content-Length:
|
@@ -33,11 +33,11 @@ http_interactions:
|
|
33
33
|
Strict-Transport-Security:
|
34
34
|
- max-age=31556926; includeSubDomains
|
35
35
|
X-Whom:
|
36
|
-
- dc1-web-
|
36
|
+
- dc1-web-2
|
37
37
|
body:
|
38
38
|
encoding: UTF-8
|
39
|
-
string: '{"id":"tr_ALc7B2h9UM","mode":"test","createdDatetime":"2014-
|
39
|
+
string: '{"id":"tr_ALc7B2h9UM","mode":"test","createdDatetime":"2014-10-08T08:40:18.0Z","status":"open","expiryPeriod":"PT15M","amount":"99.99","description":"My
|
40
40
|
fantastic product","method":null,"metadata":{"order_id":"R232454365"},"details":null,"links":{"paymentUrl":"https://www.mollie.nl/payscreen/pay/ALc7B2h9UM","redirectUrl":"http://localhost:3000/payments/1/update"}}'
|
41
|
-
http_version:
|
42
|
-
recorded_at:
|
43
|
-
recorded_with: VCR 2.9.
|
41
|
+
http_version:
|
42
|
+
recorded_at: Wed, 08 Oct 2014 08:40:17 GMT
|
43
|
+
recorded_with: VCR 2.9.3
|
@@ -8,7 +8,7 @@ http_interactions:
|
|
8
8
|
string: ''
|
9
9
|
headers:
|
10
10
|
Authorization:
|
11
|
-
- Bearer
|
11
|
+
- Bearer test_4drFuX5HdjBaFxdXoaABYD8yO4HjuT
|
12
12
|
response:
|
13
13
|
status:
|
14
14
|
code: 201
|
@@ -39,6 +39,6 @@ http_interactions:
|
|
39
39
|
string: '{"id":"re_O5sCpw4kwb","payment":{"id":"tr_8NQDMOE7EC","mode":"test","createdDatetime":"2014-08-12T12:27:26.0Z","status":"refunded","expiryPeriod":"PT","amount":"99.99","description":"My
|
40
40
|
fantastic product","method":"ideal","metadata":null,"details":{"consumerName":"T.
|
41
41
|
TEST","consumerAccount":"NL17RABO0213698412","consumerBic":"TESTNL99"},"locale":"nl","links":{"redirectUrl":"http://localhost:3000/payments/1/update"}},"amountRefunded":"99.99","amountRemaining":"0.00","refundedDatetime":"2014-08-12T14:11:32.0Z"}'
|
42
|
-
http_version:
|
42
|
+
http_version:
|
43
43
|
recorded_at: Tue, 12 Aug 2014 14:11:32 GMT
|
44
44
|
recorded_with: VCR 2.9.2
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mollie-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Berkenbosch
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-10-
|
11
|
+
date: 2014-10-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -95,7 +95,21 @@ dependencies:
|
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: pry
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: codeclimate-test-reporter
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
100
114
|
requirements:
|
101
115
|
- - ">="
|
@@ -127,7 +141,9 @@ files:
|
|
127
141
|
- mollie.gemspec
|
128
142
|
- spec/mollie/client_spec.rb
|
129
143
|
- spec/spec_helper.rb
|
144
|
+
- spec/vcr_cassettes/get_issuers_list.yml
|
130
145
|
- spec/vcr_cassettes/get_status_paid.yml
|
146
|
+
- spec/vcr_cassettes/invalid_key.yml
|
131
147
|
- spec/vcr_cassettes/prepare_payment.yml
|
132
148
|
- spec/vcr_cassettes/refund_payment.yml
|
133
149
|
- wercker.yml
|
@@ -158,6 +174,8 @@ summary: Ruby API Client for Mollie
|
|
158
174
|
test_files:
|
159
175
|
- spec/mollie/client_spec.rb
|
160
176
|
- spec/spec_helper.rb
|
177
|
+
- spec/vcr_cassettes/get_issuers_list.yml
|
161
178
|
- spec/vcr_cassettes/get_status_paid.yml
|
179
|
+
- spec/vcr_cassettes/invalid_key.yml
|
162
180
|
- spec/vcr_cassettes/prepare_payment.yml
|
163
181
|
- spec/vcr_cassettes/refund_payment.yml
|