tikkie-api 0.2.2 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +20 -16
- data/.travis.yml +5 -5
- data/Gemfile +3 -2
- data/Gemfile.lock +23 -24
- data/LICENSE.txt +1 -1
- data/README.md +198 -69
- 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 +3 -2
- metadata +69 -43
- data/lib/tikkie/api/access_token.rb +0 -19
- data/lib/tikkie/api/authentication.rb +0 -65
- data/lib/tikkie/api/requests/payment_requests.rb +0 -57
- 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 -67
- 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 -66
- 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 -32
- data/lib/tikkie/api/responses/user.rb +0 -41
- data/lib/tikkie/api/responses/users.rb +0 -36
- 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
|