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.
- checksums.yaml +7 -0
- data/CHANGELOG.md +29 -0
- data/LICENSE +201 -0
- data/README.md +191 -0
- data/lib/dpay/bank/bank.rb +28 -0
- data/lib/dpay/bank/bank_service.rb +28 -0
- data/lib/dpay/blik/blik_alias.rb +27 -0
- data/lib/dpay/blik/blik_alias_registration.rb +21 -0
- data/lib/dpay/blik/blik_alias_type.rb +18 -0
- data/lib/dpay/blik/blik_app.rb +17 -0
- data/lib/dpay/blik/blik_recurring_registration.rb +74 -0
- data/lib/dpay/blik/blik_recurring_registration_info.rb +26 -0
- data/lib/dpay/blik/blik_recurring_status.rb +28 -0
- data/lib/dpay/blik/blik_service.rb +51 -0
- data/lib/dpay/card/apple_pay_request.rb +38 -0
- data/lib/dpay/card/card_data.rb +30 -0
- data/lib/dpay/card/card_encryptor.rb +27 -0
- data/lib/dpay/card/card_payment_request.rb +59 -0
- data/lib/dpay/card/card_payment_result.rb +58 -0
- data/lib/dpay/card/card_recurring_frequency.rb +23 -0
- data/lib/dpay/card/card_recurring_operation.rb +19 -0
- data/lib/dpay/card/card_recurring_registration.rb +69 -0
- data/lib/dpay/card/card_service.rb +47 -0
- data/lib/dpay/card/dcc_decision.rb +18 -0
- data/lib/dpay/card/dcc_markup.rb +18 -0
- data/lib/dpay/card/dcc_offer.rb +36 -0
- data/lib/dpay/card/google_pay_request.rb +35 -0
- data/lib/dpay/card/redirect_type.rb +20 -0
- data/lib/dpay/client.rb +26 -0
- data/lib/dpay/config.rb +39 -0
- data/lib/dpay/currency.rb +19 -0
- data/lib/dpay/errors.rb +77 -0
- data/lib/dpay/http/client.rb +11 -0
- data/lib/dpay/http/net_http_client.rb +52 -0
- data/lib/dpay/http/request.rb +17 -0
- data/lib/dpay/http/response.rb +29 -0
- data/lib/dpay/internal/api_requestor.rb +65 -0
- data/lib/dpay/internal/base_urls.rb +38 -0
- data/lib/dpay/internal/checksum_calculator.rb +26 -0
- data/lib/dpay/internal/coerce.rb +46 -0
- data/lib/dpay/internal/error_mapper.rb +90 -0
- data/lib/dpay/internal/php.rb +71 -0
- data/lib/dpay/ipn/ipn_event.rb +84 -0
- data/lib/dpay/ipn/ipn_type.rb +19 -0
- data/lib/dpay/ipn/ipn_verifier.rb +57 -0
- data/lib/dpay/money.rb +85 -0
- data/lib/dpay/payment/device_info.rb +42 -0
- data/lib/dpay/payment/invoice_details.rb +48 -0
- data/lib/dpay/payment/payer.rb +26 -0
- data/lib/dpay/payment/payment_service.rb +35 -0
- data/lib/dpay/payment/payout_fee_mode.rb +18 -0
- data/lib/dpay/payment/payout_instruction.rb +26 -0
- data/lib/dpay/payment/payout_position.rb +23 -0
- data/lib/dpay/payment/register_payment_request.rb +246 -0
- data/lib/dpay/payment/registered_payment.rb +42 -0
- data/lib/dpay/payment/return_urls.rb +20 -0
- data/lib/dpay/payment/transaction.rb +54 -0
- data/lib/dpay/payment/transaction_refund.rb +21 -0
- data/lib/dpay/payment/transaction_status.rb +21 -0
- data/lib/dpay/payment/transaction_type.rb +23 -0
- data/lib/dpay/payout/payout_details.rb +50 -0
- data/lib/dpay/payout/payout_receiver.rb +22 -0
- data/lib/dpay/payout/payout_service.rb +23 -0
- data/lib/dpay/refund/refund.rb +22 -0
- data/lib/dpay/refund/refund_availability.rb +23 -0
- data/lib/dpay/refund/refund_service.rb +46 -0
- data/lib/dpay/testing/mock_http_client.rb +51 -0
- data/lib/dpay/testing.rb +4 -0
- data/lib/dpay/version.rb +5 -0
- data/lib/dpay.rb +68 -0
- data/sig/dpay/bank/bank.rbs +17 -0
- data/sig/dpay/bank/bank_service.rbs +13 -0
- data/sig/dpay/blik/blik_alias.rbs +17 -0
- data/sig/dpay/blik/blik_alias_registration.rbs +6 -0
- data/sig/dpay/blik/blik_alias_type.rbs +11 -0
- data/sig/dpay/blik/blik_app.rbs +10 -0
- data/sig/dpay/blik/blik_recurring_registration.rbs +24 -0
- data/sig/dpay/blik/blik_recurring_registration_info.rbs +17 -0
- data/sig/dpay/blik/blik_recurring_status.rbs +17 -0
- data/sig/dpay/blik/blik_service.rbs +13 -0
- data/sig/dpay/card/apple_pay_request.rbs +13 -0
- data/sig/dpay/card/card_data.rbs +15 -0
- data/sig/dpay/card/card_encryptor.rbs +9 -0
- data/sig/dpay/card/card_payment_request.rbs +17 -0
- data/sig/dpay/card/card_payment_result.rbs +22 -0
- data/sig/dpay/card/card_recurring_frequency.rbs +16 -0
- data/sig/dpay/card/card_recurring_operation.rbs +12 -0
- data/sig/dpay/card/card_recurring_registration.rbs +22 -0
- data/sig/dpay/card/card_service.rbs +16 -0
- data/sig/dpay/card/dcc_decision.rbs +11 -0
- data/sig/dpay/card/dcc_markup.rbs +10 -0
- data/sig/dpay/card/dcc_offer.rbs +21 -0
- data/sig/dpay/card/google_pay_request.rbs +12 -0
- data/sig/dpay/card/redirect_type.rbs +13 -0
- data/sig/dpay/client.rbs +21 -0
- data/sig/dpay/config.rbs +25 -0
- data/sig/dpay/currency.rbs +11 -0
- data/sig/dpay/errors.rbs +86 -0
- data/sig/dpay/http/client.rbs +7 -0
- data/sig/dpay/http/net_http_client.rbs +15 -0
- data/sig/dpay/http/request.rbs +12 -0
- data/sig/dpay/http/response.rbs +15 -0
- data/sig/dpay/internal/api_requestor.rbs +23 -0
- data/sig/dpay/internal/base_urls.rbs +13 -0
- data/sig/dpay/internal/checksum_calculator.rbs +9 -0
- data/sig/dpay/internal/coerce.rbs +12 -0
- data/sig/dpay/internal/error_mapper.rbs +16 -0
- data/sig/dpay/internal/php.rbs +16 -0
- data/sig/dpay/ipn/ipn_event.rbs +28 -0
- data/sig/dpay/ipn/ipn_type.rbs +12 -0
- data/sig/dpay/ipn/ipn_verifier.rbs +11 -0
- data/sig/dpay/money.rbs +25 -0
- data/sig/dpay/payment/device_info.rbs +25 -0
- data/sig/dpay/payment/invoice_details.rbs +17 -0
- data/sig/dpay/payment/payer.rbs +14 -0
- data/sig/dpay/payment/payment_service.rbs +11 -0
- data/sig/dpay/payment/payout_fee_mode.rbs +11 -0
- data/sig/dpay/payment/payout_instruction.rbs +8 -0
- data/sig/dpay/payment/payout_position.rbs +10 -0
- data/sig/dpay/payment/register_payment_request.rbs +56 -0
- data/sig/dpay/payment/registered_payment.rbs +20 -0
- data/sig/dpay/payment/return_urls.rbs +11 -0
- data/sig/dpay/payment/transaction.rbs +25 -0
- data/sig/dpay/payment/transaction_refund.rbs +14 -0
- data/sig/dpay/payment/transaction_status.rbs +14 -0
- data/sig/dpay/payment/transaction_type.rbs +16 -0
- data/sig/dpay/payout/payout_details.rbs +24 -0
- data/sig/dpay/payout/payout_receiver.rbs +15 -0
- data/sig/dpay/payout/payout_service.rbs +6 -0
- data/sig/dpay/refund/refund.rbs +11 -0
- data/sig/dpay/refund/refund_availability.rbs +12 -0
- data/sig/dpay/refund/refund_service.rbs +14 -0
- data/sig/dpay/testing/mock_http_client.rbs +16 -0
- data/sig/dpay/testing.rbs +4 -0
- data/sig/dpay/version.rbs +3 -0
- data/sig/dpay.rbs +2 -0
- 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
|
data/lib/dpay/testing.rb
ADDED
data/lib/dpay/version.rb
ADDED
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,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,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,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
|