dpay 0.1.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.
Files changed (137) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +29 -0
  3. data/LICENSE +201 -0
  4. data/README.md +191 -0
  5. data/lib/dpay/bank/bank.rb +28 -0
  6. data/lib/dpay/bank/bank_service.rb +28 -0
  7. data/lib/dpay/blik/blik_alias.rb +27 -0
  8. data/lib/dpay/blik/blik_alias_registration.rb +21 -0
  9. data/lib/dpay/blik/blik_alias_type.rb +18 -0
  10. data/lib/dpay/blik/blik_app.rb +17 -0
  11. data/lib/dpay/blik/blik_recurring_registration.rb +74 -0
  12. data/lib/dpay/blik/blik_recurring_registration_info.rb +26 -0
  13. data/lib/dpay/blik/blik_recurring_status.rb +28 -0
  14. data/lib/dpay/blik/blik_service.rb +51 -0
  15. data/lib/dpay/card/apple_pay_request.rb +38 -0
  16. data/lib/dpay/card/card_data.rb +30 -0
  17. data/lib/dpay/card/card_encryptor.rb +27 -0
  18. data/lib/dpay/card/card_payment_request.rb +59 -0
  19. data/lib/dpay/card/card_payment_result.rb +58 -0
  20. data/lib/dpay/card/card_recurring_frequency.rb +23 -0
  21. data/lib/dpay/card/card_recurring_operation.rb +19 -0
  22. data/lib/dpay/card/card_recurring_registration.rb +69 -0
  23. data/lib/dpay/card/card_service.rb +47 -0
  24. data/lib/dpay/card/dcc_decision.rb +18 -0
  25. data/lib/dpay/card/dcc_markup.rb +18 -0
  26. data/lib/dpay/card/dcc_offer.rb +36 -0
  27. data/lib/dpay/card/google_pay_request.rb +35 -0
  28. data/lib/dpay/card/redirect_type.rb +20 -0
  29. data/lib/dpay/client.rb +26 -0
  30. data/lib/dpay/config.rb +39 -0
  31. data/lib/dpay/currency.rb +19 -0
  32. data/lib/dpay/errors.rb +77 -0
  33. data/lib/dpay/http/client.rb +11 -0
  34. data/lib/dpay/http/net_http_client.rb +52 -0
  35. data/lib/dpay/http/request.rb +17 -0
  36. data/lib/dpay/http/response.rb +29 -0
  37. data/lib/dpay/internal/api_requestor.rb +65 -0
  38. data/lib/dpay/internal/base_urls.rb +38 -0
  39. data/lib/dpay/internal/checksum_calculator.rb +26 -0
  40. data/lib/dpay/internal/coerce.rb +46 -0
  41. data/lib/dpay/internal/error_mapper.rb +90 -0
  42. data/lib/dpay/internal/php.rb +71 -0
  43. data/lib/dpay/ipn/ipn_event.rb +84 -0
  44. data/lib/dpay/ipn/ipn_type.rb +19 -0
  45. data/lib/dpay/ipn/ipn_verifier.rb +57 -0
  46. data/lib/dpay/money.rb +85 -0
  47. data/lib/dpay/payment/device_info.rb +42 -0
  48. data/lib/dpay/payment/invoice_details.rb +48 -0
  49. data/lib/dpay/payment/payer.rb +26 -0
  50. data/lib/dpay/payment/payment_service.rb +35 -0
  51. data/lib/dpay/payment/payout_fee_mode.rb +18 -0
  52. data/lib/dpay/payment/payout_instruction.rb +26 -0
  53. data/lib/dpay/payment/payout_position.rb +23 -0
  54. data/lib/dpay/payment/register_payment_request.rb +246 -0
  55. data/lib/dpay/payment/registered_payment.rb +42 -0
  56. data/lib/dpay/payment/return_urls.rb +20 -0
  57. data/lib/dpay/payment/transaction.rb +54 -0
  58. data/lib/dpay/payment/transaction_refund.rb +21 -0
  59. data/lib/dpay/payment/transaction_status.rb +21 -0
  60. data/lib/dpay/payment/transaction_type.rb +23 -0
  61. data/lib/dpay/payout/payout_details.rb +50 -0
  62. data/lib/dpay/payout/payout_receiver.rb +22 -0
  63. data/lib/dpay/payout/payout_service.rb +23 -0
  64. data/lib/dpay/refund/refund.rb +22 -0
  65. data/lib/dpay/refund/refund_availability.rb +23 -0
  66. data/lib/dpay/refund/refund_service.rb +46 -0
  67. data/lib/dpay/testing/mock_http_client.rb +51 -0
  68. data/lib/dpay/testing.rb +4 -0
  69. data/lib/dpay/version.rb +5 -0
  70. data/lib/dpay.rb +68 -0
  71. data/sig/dpay/bank/bank.rbs +17 -0
  72. data/sig/dpay/bank/bank_service.rbs +13 -0
  73. data/sig/dpay/blik/blik_alias.rbs +17 -0
  74. data/sig/dpay/blik/blik_alias_registration.rbs +6 -0
  75. data/sig/dpay/blik/blik_alias_type.rbs +11 -0
  76. data/sig/dpay/blik/blik_app.rbs +10 -0
  77. data/sig/dpay/blik/blik_recurring_registration.rbs +24 -0
  78. data/sig/dpay/blik/blik_recurring_registration_info.rbs +17 -0
  79. data/sig/dpay/blik/blik_recurring_status.rbs +17 -0
  80. data/sig/dpay/blik/blik_service.rbs +13 -0
  81. data/sig/dpay/card/apple_pay_request.rbs +13 -0
  82. data/sig/dpay/card/card_data.rbs +15 -0
  83. data/sig/dpay/card/card_encryptor.rbs +9 -0
  84. data/sig/dpay/card/card_payment_request.rbs +17 -0
  85. data/sig/dpay/card/card_payment_result.rbs +22 -0
  86. data/sig/dpay/card/card_recurring_frequency.rbs +16 -0
  87. data/sig/dpay/card/card_recurring_operation.rbs +12 -0
  88. data/sig/dpay/card/card_recurring_registration.rbs +22 -0
  89. data/sig/dpay/card/card_service.rbs +16 -0
  90. data/sig/dpay/card/dcc_decision.rbs +11 -0
  91. data/sig/dpay/card/dcc_markup.rbs +10 -0
  92. data/sig/dpay/card/dcc_offer.rbs +21 -0
  93. data/sig/dpay/card/google_pay_request.rbs +12 -0
  94. data/sig/dpay/card/redirect_type.rbs +13 -0
  95. data/sig/dpay/client.rbs +21 -0
  96. data/sig/dpay/config.rbs +25 -0
  97. data/sig/dpay/currency.rbs +11 -0
  98. data/sig/dpay/errors.rbs +86 -0
  99. data/sig/dpay/http/client.rbs +7 -0
  100. data/sig/dpay/http/net_http_client.rbs +15 -0
  101. data/sig/dpay/http/request.rbs +12 -0
  102. data/sig/dpay/http/response.rbs +15 -0
  103. data/sig/dpay/internal/api_requestor.rbs +23 -0
  104. data/sig/dpay/internal/base_urls.rbs +13 -0
  105. data/sig/dpay/internal/checksum_calculator.rbs +9 -0
  106. data/sig/dpay/internal/coerce.rbs +12 -0
  107. data/sig/dpay/internal/error_mapper.rbs +16 -0
  108. data/sig/dpay/internal/php.rbs +16 -0
  109. data/sig/dpay/ipn/ipn_event.rbs +28 -0
  110. data/sig/dpay/ipn/ipn_type.rbs +12 -0
  111. data/sig/dpay/ipn/ipn_verifier.rbs +11 -0
  112. data/sig/dpay/money.rbs +25 -0
  113. data/sig/dpay/payment/device_info.rbs +25 -0
  114. data/sig/dpay/payment/invoice_details.rbs +17 -0
  115. data/sig/dpay/payment/payer.rbs +14 -0
  116. data/sig/dpay/payment/payment_service.rbs +11 -0
  117. data/sig/dpay/payment/payout_fee_mode.rbs +11 -0
  118. data/sig/dpay/payment/payout_instruction.rbs +8 -0
  119. data/sig/dpay/payment/payout_position.rbs +10 -0
  120. data/sig/dpay/payment/register_payment_request.rbs +56 -0
  121. data/sig/dpay/payment/registered_payment.rbs +20 -0
  122. data/sig/dpay/payment/return_urls.rbs +11 -0
  123. data/sig/dpay/payment/transaction.rbs +25 -0
  124. data/sig/dpay/payment/transaction_refund.rbs +14 -0
  125. data/sig/dpay/payment/transaction_status.rbs +14 -0
  126. data/sig/dpay/payment/transaction_type.rbs +16 -0
  127. data/sig/dpay/payout/payout_details.rbs +24 -0
  128. data/sig/dpay/payout/payout_receiver.rbs +15 -0
  129. data/sig/dpay/payout/payout_service.rbs +6 -0
  130. data/sig/dpay/refund/refund.rbs +11 -0
  131. data/sig/dpay/refund/refund_availability.rbs +12 -0
  132. data/sig/dpay/refund/refund_service.rbs +14 -0
  133. data/sig/dpay/testing/mock_http_client.rbs +16 -0
  134. data/sig/dpay/testing.rbs +4 -0
  135. data/sig/dpay/version.rbs +3 -0
  136. data/sig/dpay.rbs +2 -0
  137. metadata +180 -0
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DPay
4
+ module TransactionStatus
5
+ PAID = "paid"
6
+ CREATED = "created"
7
+ PROCESSING = "processing"
8
+ EXPIRED = "expired"
9
+ CAPTURED = "captured"
10
+
11
+ ALL = [PAID, CREATED, PROCESSING, EXPIRED, CAPTURED].freeze
12
+
13
+ def self.valid?(value)
14
+ ALL.include?(value)
15
+ end
16
+
17
+ def self.assert_valid(value)
18
+ raise InvalidArgumentError, %(Invalid transaction status "#{value}") unless valid?(value)
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DPay
4
+ module TransactionType
5
+ TRANSFERS = "transfers"
6
+ DCB_GATEWAY = "dcb_gateway"
7
+ CARD_AUTH = "card_auth"
8
+ MB_WAY_DIRECT = "mb_way_direct"
9
+ BIZUM_DIRECT = "bizum_direct"
10
+ BLIK_RECURRING = "blik_recurring"
11
+ CARD_RECURRING = "card_recurring"
12
+
13
+ ALL = [TRANSFERS, DCB_GATEWAY, CARD_AUTH, MB_WAY_DIRECT, BIZUM_DIRECT, BLIK_RECURRING, CARD_RECURRING].freeze
14
+
15
+ def self.valid?(value)
16
+ ALL.include?(value)
17
+ end
18
+
19
+ def self.assert_valid(value)
20
+ raise InvalidArgumentError, %(Invalid transaction type "#{value}") unless valid?(value)
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DPay
4
+ class PayoutDetails
5
+ attr_reader :id, :state, :net, :fee, :gross, :creation_date, :nrb, :decline_reason, :decline_status,
6
+ :receiver, :raw
7
+
8
+ def self.from_api(data)
9
+ new(data)
10
+ end
11
+
12
+ def initialize(data)
13
+ @raw = data
14
+ @id = Internal::Coerce.integer(data["id"])
15
+ @state = Internal::Coerce.optional_integer(data["state"])
16
+ @net = Internal::Coerce.money(data["net"])
17
+ @fee = Internal::Coerce.money(data["fee"])
18
+ @gross = Internal::Coerce.money(data["gross"])
19
+ @creation_date = data["creation_date"].is_a?(String) ? data["creation_date"] : nil
20
+ @direct_settlement = Internal::Coerce.integer(data["direct_settlement"]) == 1
21
+ @nrb = data["nrb"].is_a?(String) ? data["nrb"] : nil
22
+ @declined = Internal::Coerce.integer(data["declined"]) == 1
23
+ @decline_reason = data["decline_reason"].is_a?(String) ? data["decline_reason"] : nil
24
+ @decline_status = data["decline_status"].is_a?(String) ? data["decline_status"] : nil
25
+ @receiver = data["receiver"].is_a?(Hash) ? PayoutReceiver.from_api(data["receiver"]) : nil
26
+ freeze
27
+ end
28
+
29
+ def waiting?
30
+ state = @state
31
+ !state.nil? && state.zero?
32
+ end
33
+
34
+ def processed?
35
+ @state == 1
36
+ end
37
+
38
+ def failed?
39
+ @state == -1
40
+ end
41
+
42
+ def direct_settlement?
43
+ @direct_settlement
44
+ end
45
+
46
+ def declined?
47
+ @declined
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DPay
4
+ class PayoutReceiver
5
+ attr_reader :nrb, :title, :amount, :service, :receiver_name, :receiver_address, :raw
6
+
7
+ def self.from_api(data)
8
+ new(data)
9
+ end
10
+
11
+ def initialize(data)
12
+ @raw = data
13
+ @nrb = data["nrb"].is_a?(String) ? data["nrb"] : nil
14
+ @title = data["title"].is_a?(String) ? data["title"] : nil
15
+ @amount = Money.try_from_api_number(data["amount"], Currency::PLN)
16
+ @service = data["service"].is_a?(String) ? data["service"] : nil
17
+ @receiver_name = data["receiverName"].is_a?(String) ? data["receiverName"] : nil
18
+ @receiver_address = data["receiverAddress"].is_a?(String) ? data["receiverAddress"] : nil
19
+ freeze
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DPay
4
+ class PayoutService
5
+ def initialize(api)
6
+ @api = api
7
+ end
8
+
9
+ def details(withdraw_id, timestamp = nil)
10
+ body = { "service" => @api.service }
11
+ body["timestamp"] = timestamp unless timestamp.nil?
12
+ body["withdraw_id"] = withdraw_id
13
+ body["checksum"] = @api.checksum.ordered_body(body.values)
14
+
15
+ data = @api.post_json(Internal::BaseUrls::PANEL, "/api/v1/pbl/withdraws/details", body)
16
+ unless data.is_a?(Hash) && Internal::Coerce.integer(data["id"]).positive?
17
+ raise ApiServerError.new("API response carries no payout details", 200, nil, {}, Internal::PHP.json_encode(data))
18
+ end
19
+
20
+ PayoutDetails.from_api(data)
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DPay
4
+ class Refund
5
+ attr_reader :message, :raw
6
+
7
+ def self.from_api(data)
8
+ new(data)
9
+ end
10
+
11
+ def initialize(data)
12
+ @raw = data
13
+ @accepted = data["status"] == "success" && data["refund"] == true
14
+ @message = Internal::Coerce.string(data["message"])
15
+ freeze
16
+ end
17
+
18
+ def accepted?
19
+ @accepted
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DPay
4
+ class RefundAvailability
5
+ attr_reader :message, :http_status, :raw
6
+
7
+ def self.from_api(data, http_status = nil)
8
+ new(data, http_status)
9
+ end
10
+
11
+ def initialize(data, http_status = nil)
12
+ @raw = data
13
+ @available = data["refund"] == true
14
+ @message = Internal::Coerce.string(data["message"])
15
+ @http_status = http_status
16
+ freeze
17
+ end
18
+
19
+ def available?
20
+ @available
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DPay
4
+ class RefundService
5
+ AVAILABILITY_STATUSES = [200, 400, 402, 406, 409, 410, 411].freeze
6
+
7
+ def initialize(api)
8
+ @api = api
9
+ end
10
+
11
+ def create(transaction_id, amount = nil, reason = nil)
12
+ body = signed_body(transaction_id, amount, reason)
13
+
14
+ Refund.from_api(@api.post_json(Internal::BaseUrls::PANEL, "/api/v1/pbl/refund", body))
15
+ end
16
+
17
+ def check_availability(transaction_id, amount = nil, reason = nil)
18
+ body = signed_body(transaction_id, amount, reason)
19
+ response = @api.send_raw("POST", Internal::BaseUrls::PANEL, "/api/v1/pbl/check-refund-availability", body)
20
+ data = response.decode_json
21
+
22
+ if data.is_a?(Hash) && data.key?("refund") && availability_outcome?(response.status, data)
23
+ return RefundAvailability.from_api(data, response.status)
24
+ end
25
+
26
+ raise @api.map_error(response)
27
+ end
28
+
29
+ private
30
+
31
+ def availability_outcome?(status, data)
32
+ return true if AVAILABILITY_STATUSES.include?(status)
33
+
34
+ status == 401 && data["message"] != "Unauthorized request"
35
+ end
36
+
37
+ def signed_body(transaction_id, amount, reason)
38
+ body = { "service" => @api.service, "transaction_id" => transaction_id }
39
+ body["value"] = amount.to_decimal unless amount.nil?
40
+ body["reason"] = reason unless reason.nil?
41
+ body["checksum"] = @api.checksum.ordered_body(body.values)
42
+
43
+ body
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "json"
4
+
5
+ module DPay
6
+ module Testing
7
+ class MockHttpClient < HTTP::Client
8
+ attr_reader :queued, :requests
9
+
10
+ def initialize
11
+ super
12
+ @queued = []
13
+ @requests = []
14
+ end
15
+
16
+ def queue(response)
17
+ @queued << response
18
+ self
19
+ end
20
+
21
+ def queue_json(status, body, headers = {})
22
+ queue(HTTP::Response.new(status, { "content-type" => "application/json" }.merge(headers),
23
+ Internal::PHP.json_encode(body)))
24
+ end
25
+
26
+ def queue_text(status, body, headers = {})
27
+ queue(HTTP::Response.new(status, headers, body))
28
+ end
29
+
30
+ def request(api_request)
31
+ @requests << api_request
32
+ raise "MockHttpClient queue is empty" if @queued.empty?
33
+
34
+ @queued.shift
35
+ end
36
+
37
+ def last_request
38
+ raise "MockHttpClient recorded no requests" if @requests.empty?
39
+
40
+ @requests.last
41
+ end
42
+
43
+ def last_request_body
44
+ body = last_request.body
45
+ raise "MockHttpClient last request has no body" if body.nil?
46
+
47
+ JSON.parse(body)
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../dpay"
4
+ require_relative "testing/mock_http_client"
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DPay
4
+ VERSION = "0.1.0"
5
+ end
data/lib/dpay.rb ADDED
@@ -0,0 +1,68 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "dpay/version"
4
+ require_relative "dpay/internal/php"
5
+ require_relative "dpay/internal/coerce"
6
+ require_relative "dpay/internal/checksum_calculator"
7
+ require_relative "dpay/errors"
8
+ require_relative "dpay/http/request"
9
+ require_relative "dpay/http/response"
10
+ require_relative "dpay/http/client"
11
+ require_relative "dpay/http/net_http_client"
12
+ require_relative "dpay/internal/base_urls"
13
+ require_relative "dpay/internal/error_mapper"
14
+ require_relative "dpay/internal/api_requestor"
15
+ require_relative "dpay/config"
16
+ require_relative "dpay/currency"
17
+ require_relative "dpay/money"
18
+ require_relative "dpay/payment/transaction_type"
19
+ require_relative "dpay/payment/transaction_status"
20
+ require_relative "dpay/payment/payout_fee_mode"
21
+ require_relative "dpay/card/redirect_type"
22
+ require_relative "dpay/card/dcc_decision"
23
+ require_relative "dpay/card/card_recurring_operation"
24
+ require_relative "dpay/card/card_recurring_frequency"
25
+ require_relative "dpay/card/card_data"
26
+ require_relative "dpay/card/card_encryptor"
27
+ require_relative "dpay/card/card_recurring_registration"
28
+ require_relative "dpay/card/card_payment_request"
29
+ require_relative "dpay/card/google_pay_request"
30
+ require_relative "dpay/card/apple_pay_request"
31
+ require_relative "dpay/card/dcc_markup"
32
+ require_relative "dpay/card/dcc_offer"
33
+ require_relative "dpay/card/card_payment_result"
34
+ require_relative "dpay/card/card_service"
35
+ require_relative "dpay/blik/blik_alias_type"
36
+ require_relative "dpay/blik/blik_app"
37
+ require_relative "dpay/blik/blik_alias"
38
+ require_relative "dpay/blik/blik_recurring_registration_info"
39
+ require_relative "dpay/blik/blik_recurring_status"
40
+ require_relative "dpay/blik/blik_alias_registration"
41
+ require_relative "dpay/blik/blik_recurring_registration"
42
+ require_relative "dpay/blik/blik_service"
43
+ require_relative "dpay/ipn/ipn_type"
44
+ require_relative "dpay/ipn/ipn_event"
45
+ require_relative "dpay/ipn/ipn_verifier"
46
+ require_relative "dpay/payment/return_urls"
47
+ require_relative "dpay/payment/payer"
48
+ require_relative "dpay/payment/device_info"
49
+ require_relative "dpay/payment/invoice_details"
50
+ require_relative "dpay/payment/payout_position"
51
+ require_relative "dpay/payment/payout_instruction"
52
+ require_relative "dpay/payment/register_payment_request"
53
+ require_relative "dpay/payment/registered_payment"
54
+ require_relative "dpay/payment/transaction_refund"
55
+ require_relative "dpay/payment/transaction"
56
+ require_relative "dpay/payment/payment_service"
57
+ require_relative "dpay/refund/refund"
58
+ require_relative "dpay/refund/refund_availability"
59
+ require_relative "dpay/refund/refund_service"
60
+ require_relative "dpay/bank/bank"
61
+ require_relative "dpay/bank/bank_service"
62
+ require_relative "dpay/payout/payout_receiver"
63
+ require_relative "dpay/payout/payout_details"
64
+ require_relative "dpay/payout/payout_service"
65
+ require_relative "dpay/client"
66
+
67
+ module DPay
68
+ end
@@ -0,0 +1,17 @@
1
+ module DPay
2
+ class Bank
3
+ attr_reader id: String
4
+ attr_reader name: String
5
+ attr_reader image: String?
6
+ attr_reader on_from: Integer
7
+ attr_reader on_to: Integer
8
+ attr_reader iterator: Integer?
9
+ attr_reader type: String?
10
+ attr_reader raw: Hash[String, untyped]
11
+
12
+ def self.from_api: (Hash[String, untyped] data) -> Bank
13
+
14
+ def initialize: (Hash[String, untyped] data) -> void
15
+ def test?: () -> bool
16
+ end
17
+ end
@@ -0,0 +1,13 @@
1
+ module DPay
2
+ class BankService
3
+ PATH: String
4
+
5
+ def initialize: (Internal::ApiRequestor api) -> void
6
+ def all: () -> Array[Bank]
7
+ def for_service: (?Integer? timestamp) -> Array[Bank]
8
+
9
+ private
10
+
11
+ def map_banks: (untyped data) -> Array[Bank]
12
+ end
13
+ end
@@ -0,0 +1,17 @@
1
+ module DPay
2
+ class BlikAlias
3
+ ACTIVE: String
4
+
5
+ attr_reader alias_value: String
6
+ attr_reader alias_type: String
7
+ attr_reader status: String?
8
+ attr_reader expiration_date: String?
9
+ attr_reader apps: Array[BlikApp]
10
+ attr_reader raw: Hash[String, untyped]
11
+
12
+ def self.from_api: (Hash[String, untyped] data) -> BlikAlias
13
+
14
+ def initialize: (Hash[String, untyped] data) -> void
15
+ def active?: () -> bool
16
+ end
17
+ end
@@ -0,0 +1,6 @@
1
+ module DPay
2
+ class BlikAliasRegistration
3
+ def initialize: (String label, ?String type) -> void
4
+ def to_h: () -> Hash[String, untyped]
5
+ end
6
+ end
@@ -0,0 +1,11 @@
1
+ module DPay
2
+ module BlikAliasType
3
+ UID: String
4
+ PAYID: String
5
+
6
+ ALL: Array[String]
7
+
8
+ def self.valid?: (untyped value) -> bool
9
+ def self.assert_valid: (untyped value) -> void
10
+ end
11
+ end
@@ -0,0 +1,10 @@
1
+ module DPay
2
+ class BlikApp
3
+ attr_reader key: String?
4
+ attr_reader label: String?
5
+
6
+ def self.from_api: (Hash[String, untyped] data) -> BlikApp
7
+
8
+ def initialize: (Hash[String, untyped] data) -> void
9
+ end
10
+ end
@@ -0,0 +1,24 @@
1
+ module DPay
2
+ class BlikRecurringRegistration
3
+ MODELS: Array[String]
4
+ FREQUENCY: Regexp
5
+ DATE: Regexp
6
+
7
+ @optional: Hash[String, untyped]
8
+
9
+ def self.create: (String label, String model, String frequency) -> BlikRecurringRegistration
10
+
11
+ def initialize: (String label, String model, String frequency) -> void
12
+ def with_value: (Money value) -> self
13
+ def with_limit_amt: (Integer limit_amt) -> self
14
+ def with_tot_limit_amt: (Integer tot_limit_amt) -> self
15
+ def with_limit_amt_fixed: (bool fixed) -> self
16
+ def with_expiration_date: (String expiration_date) -> self
17
+ def with_init_date: (String init_date) -> self
18
+ def to_h: () -> Hash[String, untyped]
19
+
20
+ private
21
+
22
+ def assert_date: (untyped date) -> String
23
+ end
24
+ end
@@ -0,0 +1,17 @@
1
+ module DPay
2
+ class BlikRecurringRegistrationInfo
3
+ attr_reader model: String?
4
+ attr_reader frequency: String?
5
+ attr_reader limit_amt: Integer?
6
+ attr_reader tot_limit_amt: Integer?
7
+ attr_reader limit_amt_fixed: bool?
8
+ attr_reader init_date: String?
9
+ attr_reader label: String?
10
+ attr_reader registered_at: String?
11
+ attr_reader raw: Hash[String, untyped]
12
+
13
+ def self.from_api: (Hash[String, untyped] data) -> BlikRecurringRegistrationInfo
14
+
15
+ def initialize: (Hash[String, untyped] data) -> void
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ module DPay
2
+ class BlikRecurringStatus
3
+ ACTIVE: String
4
+
5
+ attr_reader alias_value: String
6
+ attr_reader alias_type: String
7
+ attr_reader status: String?
8
+ attr_reader expiration_date: String?
9
+ attr_reader registration: BlikRecurringRegistrationInfo?
10
+ attr_reader raw: Hash[String, untyped]
11
+
12
+ def self.from_api: (Hash[String, untyped] data) -> BlikRecurringStatus
13
+
14
+ def initialize: (Hash[String, untyped] data) -> void
15
+ def active?: () -> bool
16
+ end
17
+ end
@@ -0,0 +1,13 @@
1
+ module DPay
2
+ class BlikService
3
+ def initialize: (Internal::ApiRequestor api) -> void
4
+ def alias: (String alias_value, ?String alias_type) -> BlikAlias
5
+ def unregister_alias: (String alias_value, ?String alias_type, ?String? reason) -> nil
6
+ def recurring_status: (String alias_value) -> BlikRecurringStatus
7
+
8
+ private
9
+
10
+ def alias_body: (String alias_value, String alias_type, ?String? reason) -> Hash[String, untyped]
11
+ def payload: (Hash[String, untyped] data) -> Hash[String, untyped]
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ module DPay
2
+ class ApplePayRequest
3
+ INIT: String
4
+ PAY: String
5
+
6
+ def self.init: (DeviceInfo device_info) -> ApplePayRequest
7
+ def self.pay: (String token, DeviceInfo device_info) -> ApplePayRequest
8
+
9
+ def initialize: (String x_pay_type, String? token, DeviceInfo device_info) -> void
10
+ def with_channel_id: (Integer channel_id) -> self
11
+ def to_body: () -> Hash[String, untyped]
12
+ end
13
+ end
@@ -0,0 +1,15 @@
1
+ module DPay
2
+ class CardData
3
+ PAN: Regexp
4
+ CVV: Regexp
5
+ EXPIRY: Regexp
6
+
7
+ attr_reader pan: String
8
+ attr_reader cvv: String
9
+ attr_reader expiry: String
10
+
11
+ def initialize: (String pan, String cvv, String expiry) -> void
12
+ def inspect: () -> String
13
+ def to_s: () -> String
14
+ end
15
+ end
@@ -0,0 +1,9 @@
1
+ module DPay
2
+ class CardEncryptor
3
+ def encrypt: (CardData card, String transaction_id, String public_key_pem, ?timestamp: Integer) -> String
4
+
5
+ private
6
+
7
+ def load_key: (String public_key_pem) -> OpenSSL::PKey::RSA
8
+ end
9
+ end
@@ -0,0 +1,17 @@
1
+ module DPay
2
+ class CardPaymentRequest
3
+ @leading: Hash[String, untyped]
4
+ @trailing: Hash[String, untyped]
5
+
6
+ def self.create: (DeviceInfo device_info) -> CardPaymentRequest
7
+
8
+ def initialize: (DeviceInfo device_info) -> void
9
+ def with_email: (String email) -> self
10
+ def with_channel_id: (Integer channel_id) -> self
11
+ def with_card_holder: (String first_name, String last_name) -> self
12
+ def with_encrypted_card_data: (String encrypted_card_data) -> self
13
+ def with_three_ds_confirmed: (bool confirmed) -> self
14
+ def with_dcc_decision: (String decision) -> self
15
+ def to_body: () -> Hash[String, untyped]
16
+ end
17
+ end
@@ -0,0 +1,22 @@
1
+ module DPay
2
+ class CardPaymentResult
3
+ attr_reader redirect_type: String?
4
+ attr_reader redirect_text: String?
5
+ attr_reader dcc_offer: DccOffer?
6
+ attr_reader raw: Hash[String, untyped]
7
+
8
+ def self.from_api: (Hash[String, untyped] data) -> CardPaymentResult
9
+
10
+ def initialize: (Hash[String, untyped] data) -> void
11
+ def success?: () -> bool
12
+ def three_ds_form?: () -> bool
13
+ def requires_redirect?: () -> bool
14
+ def dcc_offer?: () -> bool
15
+ def three_ds_form_html: () -> String?
16
+ def redirect_url: () -> String?
17
+
18
+ private
19
+
20
+ def decode: () -> String?
21
+ end
22
+ end
@@ -0,0 +1,16 @@
1
+ module DPay
2
+ module CardRecurringFrequency
3
+ DAILY: String
4
+ WEEKLY: String
5
+ BIWEEKLY: String
6
+ MONTHLY: String
7
+ QUARTERLY: String
8
+ SEMIANNUAL: String
9
+ ANNUAL: String
10
+
11
+ ALL: Array[String]
12
+
13
+ def self.valid?: (untyped value) -> bool
14
+ def self.assert_valid: (untyped value) -> void
15
+ end
16
+ end
@@ -0,0 +1,12 @@
1
+ module DPay
2
+ module CardRecurringOperation
3
+ ADD_CARD: String
4
+ COF_INITIAL: String
5
+ CHARGE: String
6
+
7
+ ALL: Array[String]
8
+
9
+ def self.valid?: (untyped value) -> bool
10
+ def self.assert_valid: (untyped value) -> void
11
+ end
12
+ end
@@ -0,0 +1,22 @@
1
+ module DPay
2
+ class CardRecurringRegistration
3
+ DATE: Regexp
4
+
5
+ @optional: Hash[String, untyped]
6
+
7
+ def self.create: (String label) -> CardRecurringRegistration
8
+
9
+ def initialize: (String label) -> void
10
+ def with_frequency: (String frequency) -> self
11
+ def with_limit_amt: (Money limit_amt) -> self
12
+ def with_tot_limit_amt: (Money tot_limit_amt) -> self
13
+ def with_limit_amt_fixed: (bool fixed) -> self
14
+ def with_expiration_date: (String expiration_date) -> self
15
+ def with_init_date: (String init_date) -> self
16
+ def to_h: () -> Hash[String, untyped]
17
+
18
+ private
19
+
20
+ def assert_date: (untyped date) -> String
21
+ end
22
+ end