Skip to content

Commit 53499e3

Browse files
authored
Merge pull request #177 from mollie/payment-links-api
Add Payment Links API
2 parents 9ab5e1b + 0876f2b commit 53499e3

File tree

16 files changed

+294
-1
lines changed

16 files changed

+294
-1
lines changed

examples/payment-links/create.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
payment_link = Mollie::PaymentLink.create(
2+
description: "Bicycle tires",
3+
amount: { currency: "EUR", value: "24.95" }
4+
)
5+

examples/payment-links/delete.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Mollie::PaymentLink.delete("pl_4Y0eZitmBnQ6IDoMqZQKh")

examples/payment-links/get.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
payment_link = Mollie::PaymentLink.get("pl_4Y0eZitmBnQ6IDoMqZQKh")
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
payment_link = Mollie::PaymentLink.get("pl_4Y0eZitmBnQ6IDoMqZQKh")
2+
payments = payment_link.payments

examples/payment-links/list.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
payment_links = Mollie::PaymentLink.all

examples/payment-links/update.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
payment_link = Mollie::PaymentLink.update(
2+
"pl_4Y0eZitmBnQ6IDoMqZQKh",
3+
description: "Bicycle tires",
4+
archived: true
5+
)

lib/mollie.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ module Mollie
2323
require 'mollie/organization'
2424
require 'mollie/partner'
2525
require 'mollie/payment'
26+
require 'mollie/payment_link'
2627
require 'mollie/permission'
2728
require 'mollie/profile'
2829
require 'mollie/refund'

lib/mollie/base.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@ def resource_name(parent_id = nil)
7171
path.last
7272
end
7373
end
74+
75+
alias_method :embedded_resource_name, :resource_name
7476
end
7577

7678
def update(data = {})

lib/mollie/list.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ def initialize(list_attributes, klass)
99
@klass = klass
1010

1111
list_attributes['items'] ||= if list_attributes['_embedded']
12-
list_attributes['_embedded'].fetch(klass.resource_name, [])
12+
list_attributes['_embedded'].fetch(klass.embedded_resource_name, [])
1313
else
1414
[]
1515
end

lib/mollie/payment_link.rb

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
module Mollie
2+
class PaymentLink < Base
3+
attr_accessor :id,
4+
:mode,
5+
:description,
6+
:archived,
7+
:redirect_url,
8+
:webhook_url,
9+
:profile_id,
10+
:_links
11+
12+
attr_reader :amount,
13+
:created_at,
14+
:paid_at,
15+
:updated_at,
16+
:expires_at
17+
18+
alias_method :links, :_links
19+
20+
def self.embedded_resource_name(_parent_id = nil)
21+
"payment_links"
22+
end
23+
24+
def self.resource_name(_parent_id = nil)
25+
"payment-links"
26+
end
27+
28+
def amount=(amount)
29+
@amount = Mollie::Amount.new(amount)
30+
end
31+
32+
def archived?
33+
archived
34+
end
35+
36+
def created_at=(created_at)
37+
@created_at = Time.parse(created_at.to_s)
38+
end
39+
40+
def paid_at=(paid_at)
41+
@paid_at = Time.parse(paid_at.to_s)
42+
rescue
43+
nil
44+
end
45+
46+
def updated_at=(updated_at)
47+
@updated_at = Time.parse(updated_at.to_s)
48+
rescue
49+
nil
50+
end
51+
52+
def expires_at=(expires_at)
53+
@expires_at = Time.parse(expires_at.to_s)
54+
rescue
55+
nil
56+
end
57+
58+
def payment_link
59+
Util.extract_url(links, "payment_link")
60+
end
61+
62+
def payments(options = {})
63+
resource_url = Util.extract_url(links, "self")
64+
payments_url = File.join(resource_url, "/payments")
65+
66+
response = Mollie::Client.instance.perform_http_call("GET", payments_url, nil, {}, options)
67+
Mollie::List.new(response, Mollie::Payment)
68+
end
69+
end
70+
end

0 commit comments

Comments
 (0)