tikkie-api 0.1.0 → 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 +5 -5
- data/.rubocop.yml +31 -7
- data/.travis.yml +8 -4
- data/Gemfile +3 -1
- data/Gemfile.lock +39 -33
- data/LICENSE.txt +1 -1
- data/README.md +211 -61
- data/lib/tikkie/api.rb +52 -25
- data/lib/tikkie/api/amount.rb +35 -0
- data/lib/tikkie/api/client.rb +16 -8
- data/lib/tikkie/api/clients/base.rb +16 -0
- data/lib/tikkie/api/clients/payment_requests.rb +25 -0
- data/lib/tikkie/api/clients/payment_requests_subscription.rb +20 -0
- data/lib/tikkie/api/clients/payments.rb +20 -0
- data/lib/tikkie/api/clients/refunds.rb +20 -0
- data/lib/tikkie/api/clients/sandbox_apps.rb +15 -0
- data/lib/tikkie/api/configuration.rb +8 -47
- data/lib/tikkie/api/exception.rb +28 -8
- data/lib/tikkie/api/request.rb +51 -27
- data/lib/tikkie/api/resources/base.rb +66 -0
- data/lib/tikkie/api/{responses → resources}/error.rb +11 -9
- data/lib/tikkie/api/resources/list.rb +52 -0
- data/lib/tikkie/api/resources/payment.rb +68 -0
- data/lib/tikkie/api/resources/payment_request.rb +97 -0
- data/lib/tikkie/api/resources/payment_requests.rb +40 -0
- data/lib/tikkie/api/resources/payment_requests_subscription.rb +24 -0
- data/lib/tikkie/api/resources/payments.rb +48 -0
- data/lib/tikkie/api/resources/refund.rb +71 -0
- data/lib/tikkie/api/resources/sandbox_app.rb +20 -0
- data/lib/tikkie/api/response.rb +64 -0
- data/lib/tikkie/api/v1/access_token.rb +21 -0
- data/lib/tikkie/api/v1/authentication.rb +67 -0
- data/lib/tikkie/api/v1/client.rb +26 -0
- data/lib/tikkie/api/v1/configuration.rb +64 -0
- data/lib/tikkie/api/v1/exception.rb +24 -0
- data/lib/tikkie/api/v1/request.rb +59 -0
- data/lib/tikkie/api/v1/requests/payment_requests.rb +59 -0
- data/lib/tikkie/api/v1/requests/platforms.rb +34 -0
- data/lib/tikkie/api/v1/requests/users.rb +33 -0
- data/lib/tikkie/api/v1/responses/bank_account.rb +24 -0
- data/lib/tikkie/api/v1/responses/base.rb +69 -0
- data/lib/tikkie/api/v1/responses/error.rb +36 -0
- data/lib/tikkie/api/v1/responses/pagination.rb +22 -0
- data/lib/tikkie/api/v1/responses/payment.rb +50 -0
- data/lib/tikkie/api/v1/responses/payment_request.rb +68 -0
- data/lib/tikkie/api/v1/responses/payment_request_created.rb +24 -0
- data/lib/tikkie/api/v1/responses/payment_requests.rb +44 -0
- data/lib/tikkie/api/v1/responses/platform.rb +46 -0
- data/lib/tikkie/api/v1/responses/platforms.rb +34 -0
- data/lib/tikkie/api/v1/responses/user.rb +43 -0
- data/lib/tikkie/api/v1/responses/users.rb +38 -0
- data/lib/tikkie/api/v1/types/payment_request_status.rb +17 -0
- data/lib/tikkie/api/v1/types/payment_status.rb +16 -0
- data/lib/tikkie/api/v1/types/platform_status.rb +14 -0
- data/lib/tikkie/api/v1/types/platform_usage.rb +14 -0
- data/lib/tikkie/api/v1/types/user_status.rb +14 -0
- data/lib/tikkie/api/version.rb +1 -1
- data/lib/tikkie/notification.rb +23 -0
- data/lib/tikkie/notifications/bundle_notification.rb +28 -0
- data/lib/tikkie/notifications/payment_notification.rb +32 -0
- data/lib/tikkie/notifications/refund_notification.rb +36 -0
- data/tikkie-api.gemspec +4 -3
- metadata +69 -44
- data/lib/tikkie/api/access_token.rb +0 -19
- data/lib/tikkie/api/authentication.rb +0 -60
- data/lib/tikkie/api/requests/payment_requests.rb +0 -56
- data/lib/tikkie/api/requests/platforms.rb +0 -32
- data/lib/tikkie/api/requests/users.rb +0 -31
- data/lib/tikkie/api/responses/bank_account.rb +0 -22
- data/lib/tikkie/api/responses/base.rb +0 -53
- data/lib/tikkie/api/responses/pagination.rb +0 -20
- data/lib/tikkie/api/responses/payment.rb +0 -48
- data/lib/tikkie/api/responses/payment_request.rb +0 -64
- data/lib/tikkie/api/responses/payment_request_created.rb +0 -22
- data/lib/tikkie/api/responses/payment_requests.rb +0 -42
- data/lib/tikkie/api/responses/platform.rb +0 -44
- data/lib/tikkie/api/responses/platforms.rb +0 -30
- data/lib/tikkie/api/responses/user.rb +0 -39
- data/lib/tikkie/api/responses/users.rb +0 -34
- data/lib/tikkie/api/types/payment_request_status.rb +0 -15
- data/lib/tikkie/api/types/payment_status.rb +0 -14
- data/lib/tikkie/api/types/platform_status.rb +0 -12
- data/lib/tikkie/api/types/platform_usage.rb +0 -12
- data/lib/tikkie/api/types/user_status.rb +0 -12
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Tikkie
|
4
|
+
module Api
|
5
|
+
module V1
|
6
|
+
module Requests
|
7
|
+
# Users operations at Tikkie.
|
8
|
+
class Users
|
9
|
+
def initialize(request)
|
10
|
+
@request = request
|
11
|
+
end
|
12
|
+
|
13
|
+
def list(platform_token)
|
14
|
+
response = @request.get("/tikkie/platforms/#{platform_token}/users")
|
15
|
+
Tikkie::Api::V1::Responses::Users.new(response)
|
16
|
+
end
|
17
|
+
|
18
|
+
def create(platform_token, options = {})
|
19
|
+
params = {
|
20
|
+
name: options.fetch(:name),
|
21
|
+
phoneNumber: options.fetch(:phone_number),
|
22
|
+
iban: options.fetch(:iban),
|
23
|
+
bankAccountLabel: options.fetch(:bank_account_label)
|
24
|
+
}
|
25
|
+
response = @request.post("/tikkie/platforms/#{platform_token}/users", params)
|
26
|
+
|
27
|
+
Tikkie::Api::V1::Responses::User.new(response)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Tikkie
|
4
|
+
module Api
|
5
|
+
module V1
|
6
|
+
module Responses
|
7
|
+
# Bank account of a user.
|
8
|
+
class BankAccount < Base
|
9
|
+
def bank_account_token
|
10
|
+
data[:bankAccountToken]
|
11
|
+
end
|
12
|
+
|
13
|
+
def bank_account_label
|
14
|
+
data[:bankAccountLabel]
|
15
|
+
end
|
16
|
+
|
17
|
+
def iban
|
18
|
+
data[:iban]
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
module Tikkie
|
6
|
+
module Api
|
7
|
+
module V1
|
8
|
+
module Responses
|
9
|
+
# Base class for all responses.
|
10
|
+
class Base
|
11
|
+
attr_reader :response, :data
|
12
|
+
|
13
|
+
def initialize(response)
|
14
|
+
if response.respond_to?(:body)
|
15
|
+
@response = response
|
16
|
+
@data = parse_body(response.body)
|
17
|
+
else
|
18
|
+
@data = response
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def response_code
|
23
|
+
response.code.to_i if response
|
24
|
+
end
|
25
|
+
|
26
|
+
def success?
|
27
|
+
(response_code == 200 || response_code == 201) && !@invalid
|
28
|
+
end
|
29
|
+
|
30
|
+
def error?
|
31
|
+
!success?
|
32
|
+
end
|
33
|
+
|
34
|
+
def trace_id
|
35
|
+
response["Trace-Id"] if response
|
36
|
+
end
|
37
|
+
|
38
|
+
def errors
|
39
|
+
@errors ||= begin
|
40
|
+
errors = []
|
41
|
+
|
42
|
+
if data[:errors]
|
43
|
+
data[:errors].each do |error|
|
44
|
+
errors << Tikkie::Api::V1::Responses::Error.new(error)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
errors
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
private
|
53
|
+
|
54
|
+
def parse_body(body)
|
55
|
+
body = body.respond_to?(:read) ? body.read : body
|
56
|
+
|
57
|
+
JSON.parse(body, symbolize_names: true)
|
58
|
+
rescue JSON::ParserError => ex
|
59
|
+
@invalid = true
|
60
|
+
|
61
|
+
{
|
62
|
+
message: "Unable to parse JSON: #{ex.message}"
|
63
|
+
}
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Tikkie
|
4
|
+
module Api
|
5
|
+
module V1
|
6
|
+
module Responses
|
7
|
+
# Error response from Tikkie.
|
8
|
+
class Error < Base
|
9
|
+
def code
|
10
|
+
data[:code]
|
11
|
+
end
|
12
|
+
|
13
|
+
def message
|
14
|
+
data[:message]
|
15
|
+
end
|
16
|
+
|
17
|
+
def reference
|
18
|
+
data[:reference]
|
19
|
+
end
|
20
|
+
|
21
|
+
def trace_id
|
22
|
+
data[:traceId]
|
23
|
+
end
|
24
|
+
|
25
|
+
def status
|
26
|
+
data[:status]
|
27
|
+
end
|
28
|
+
|
29
|
+
def category
|
30
|
+
data[:category]
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Tikkie
|
4
|
+
module Api
|
5
|
+
module V1
|
6
|
+
module Responses
|
7
|
+
# Helper for paginated responses.
|
8
|
+
module Pagination
|
9
|
+
attr_accessor :offset, :limit, :elements, :total_elements
|
10
|
+
|
11
|
+
def more_elements?
|
12
|
+
@total_elements && @total_elements > @offset + @elements
|
13
|
+
end
|
14
|
+
|
15
|
+
def next_offset
|
16
|
+
@offset + @limit if more_elements?
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'bigdecimal'
|
4
|
+
require 'time'
|
5
|
+
|
6
|
+
module Tikkie
|
7
|
+
module Api
|
8
|
+
module V1
|
9
|
+
module Responses
|
10
|
+
# Payment that is associated with a payment request.
|
11
|
+
class Payment < Base
|
12
|
+
def payment_token
|
13
|
+
data[:paymentToken]
|
14
|
+
end
|
15
|
+
|
16
|
+
def counter_party_name
|
17
|
+
data[:counterPartyName]
|
18
|
+
end
|
19
|
+
|
20
|
+
def amount
|
21
|
+
decimal = BigDecimal(data[:amountInCents])
|
22
|
+
decimal /= 100.0
|
23
|
+
decimal
|
24
|
+
end
|
25
|
+
|
26
|
+
def currency
|
27
|
+
data[:amountCurrency]
|
28
|
+
end
|
29
|
+
|
30
|
+
def description
|
31
|
+
data[:description]
|
32
|
+
end
|
33
|
+
|
34
|
+
def created_at
|
35
|
+
Time.parse(data[:created]) if data[:created]
|
36
|
+
end
|
37
|
+
|
38
|
+
# See PaymentStatus
|
39
|
+
def online_payment_status
|
40
|
+
data[:onlinePaymentStatus]
|
41
|
+
end
|
42
|
+
|
43
|
+
def paid?
|
44
|
+
online_payment_status == Tikkie::Api::V1::Types::PaymentStatus::PAID
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'bigdecimal'
|
4
|
+
require 'time'
|
5
|
+
|
6
|
+
module Tikkie
|
7
|
+
module Api
|
8
|
+
module V1
|
9
|
+
module Responses
|
10
|
+
# Response for a payment request.
|
11
|
+
class PaymentRequest < Base
|
12
|
+
def payment_request_token
|
13
|
+
data[:paymentRequestToken]
|
14
|
+
end
|
15
|
+
|
16
|
+
def amount
|
17
|
+
decimal = BigDecimal(data[:amountInCents])
|
18
|
+
decimal /= 100.0
|
19
|
+
decimal
|
20
|
+
end
|
21
|
+
|
22
|
+
def currency
|
23
|
+
data[:currency]
|
24
|
+
end
|
25
|
+
|
26
|
+
def created_at
|
27
|
+
Time.parse(data[:created]) if data[:created]
|
28
|
+
end
|
29
|
+
|
30
|
+
def expired_at
|
31
|
+
Time.parse(data[:expired]) if data[:expired]
|
32
|
+
end
|
33
|
+
|
34
|
+
# see PaymentRequestStatus
|
35
|
+
def status
|
36
|
+
data[:status]
|
37
|
+
end
|
38
|
+
|
39
|
+
def expired?
|
40
|
+
status == Tikkie::Api::V1::Types::PaymentRequestStatus::EXPIRED
|
41
|
+
end
|
42
|
+
|
43
|
+
def bank_account_yielded_too_fast?
|
44
|
+
data[:bankAccountYieldedTooFast]
|
45
|
+
end
|
46
|
+
|
47
|
+
def external_id
|
48
|
+
data[:externalId]
|
49
|
+
end
|
50
|
+
|
51
|
+
def payments
|
52
|
+
@payments ||= begin
|
53
|
+
payments = []
|
54
|
+
|
55
|
+
if data[:payments]
|
56
|
+
data[:payments].each do |data|
|
57
|
+
payments << Tikkie::Api::V1::Responses::Payment.new(data)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
payments
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Tikkie
|
4
|
+
module Api
|
5
|
+
module V1
|
6
|
+
module Responses
|
7
|
+
# Response when creating a payment request.
|
8
|
+
class PaymentRequestCreated < Base
|
9
|
+
def payment_request_url
|
10
|
+
data[:paymentRequestUrl]
|
11
|
+
end
|
12
|
+
|
13
|
+
def payment_request_token
|
14
|
+
data[:paymentRequestToken]
|
15
|
+
end
|
16
|
+
|
17
|
+
def external_id
|
18
|
+
data[:externalId]
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Tikkie
|
4
|
+
module Api
|
5
|
+
module V1
|
6
|
+
module Responses
|
7
|
+
# Response when requesting payment requests (list).
|
8
|
+
class PaymentRequests < Base
|
9
|
+
include Enumerable
|
10
|
+
include Tikkie::Api::V1::Responses::Pagination
|
11
|
+
|
12
|
+
def initialize(response, options = {})
|
13
|
+
super(response)
|
14
|
+
|
15
|
+
@offset = options[:offset]
|
16
|
+
@limit = options[:limit]
|
17
|
+
@total_elements = data[:totalElements]
|
18
|
+
@elements = payment_requests.count
|
19
|
+
end
|
20
|
+
|
21
|
+
def each(&block)
|
22
|
+
payment_requests.each(&block)
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def payment_requests
|
28
|
+
@payment_requests ||= begin
|
29
|
+
payment_requests = []
|
30
|
+
|
31
|
+
if data[:paymentRequests]
|
32
|
+
data[:paymentRequests].each do |payment_request|
|
33
|
+
payment_requests << Tikkie::Api::V1::Responses::PaymentRequest.new(payment_request)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
payment_requests
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Tikkie
|
4
|
+
module Api
|
5
|
+
module V1
|
6
|
+
module Responses
|
7
|
+
# Response when requesting a platform.
|
8
|
+
class Platform < Base
|
9
|
+
def platform_token
|
10
|
+
data[:platformToken]
|
11
|
+
end
|
12
|
+
|
13
|
+
def name
|
14
|
+
data[:name]
|
15
|
+
end
|
16
|
+
|
17
|
+
def phone_number
|
18
|
+
data[:phoneNumber]
|
19
|
+
end
|
20
|
+
|
21
|
+
def email
|
22
|
+
data[:email]
|
23
|
+
end
|
24
|
+
|
25
|
+
def notification_url
|
26
|
+
data[:notificationUrl]
|
27
|
+
end
|
28
|
+
|
29
|
+
# see PlatformStatus
|
30
|
+
def status
|
31
|
+
data[:status]
|
32
|
+
end
|
33
|
+
|
34
|
+
def active?
|
35
|
+
status == Tikkie::Api::V1::Types::PlatformStatus::ACTIVE
|
36
|
+
end
|
37
|
+
|
38
|
+
# see PlatformUsage
|
39
|
+
def platform_usage
|
40
|
+
data[:platformUsage]
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Tikkie
|
4
|
+
module Api
|
5
|
+
module V1
|
6
|
+
module Responses
|
7
|
+
# Response when requesting platforms (list).
|
8
|
+
class Platforms < Base
|
9
|
+
include Enumerable
|
10
|
+
|
11
|
+
def each(&block)
|
12
|
+
platforms.each(&block)
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def platforms
|
18
|
+
@platforms ||= begin
|
19
|
+
platforms = []
|
20
|
+
|
21
|
+
unless error?
|
22
|
+
data.each do |platform|
|
23
|
+
platforms << Tikkie::Api::V1::Responses::Platform.new(platform)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
platforms
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|