cloudpayments-ruby 0.4.1
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/.ignore +2 -0
- data/CHANGELOG.md +50 -0
- data/README.md +250 -0
- data/SECURITY.md +23 -0
- data/lib/cloudpayments_ruby/client.rb +93 -0
- data/lib/cloudpayments_ruby/errors.rb +228 -0
- data/lib/cloudpayments_ruby/file_part.rb +58 -0
- data/lib/cloudpayments_ruby/internal/transport/base_client.rb +579 -0
- data/lib/cloudpayments_ruby/internal/transport/pooled_net_requester.rb +210 -0
- data/lib/cloudpayments_ruby/internal/type/array_of.rb +168 -0
- data/lib/cloudpayments_ruby/internal/type/base_model.rb +536 -0
- data/lib/cloudpayments_ruby/internal/type/base_page.rb +55 -0
- data/lib/cloudpayments_ruby/internal/type/boolean.rb +77 -0
- data/lib/cloudpayments_ruby/internal/type/converter.rb +327 -0
- data/lib/cloudpayments_ruby/internal/type/enum.rb +133 -0
- data/lib/cloudpayments_ruby/internal/type/file_input.rb +111 -0
- data/lib/cloudpayments_ruby/internal/type/hash_of.rb +188 -0
- data/lib/cloudpayments_ruby/internal/type/request_parameters.rb +42 -0
- data/lib/cloudpayments_ruby/internal/type/union.rb +256 -0
- data/lib/cloudpayments_ruby/internal/type/unknown.rb +81 -0
- data/lib/cloudpayments_ruby/internal/util.rb +920 -0
- data/lib/cloudpayments_ruby/internal.rb +20 -0
- data/lib/cloudpayments_ruby/models/order_cancel_params.rb +22 -0
- data/lib/cloudpayments_ruby/models/order_cancel_response.rb +27 -0
- data/lib/cloudpayments_ruby/models/order_create_params.rb +152 -0
- data/lib/cloudpayments_ruby/models/order_create_response.rb +187 -0
- data/lib/cloudpayments_ruby/models/payment_auth_params.rb +211 -0
- data/lib/cloudpayments_ruby/models/payment_auth_response.rb +167 -0
- data/lib/cloudpayments_ruby/models/payment_charge_params.rb +211 -0
- data/lib/cloudpayments_ruby/models/payment_charge_response.rb +167 -0
- data/lib/cloudpayments_ruby/models/payment_confirm_params.rb +38 -0
- data/lib/cloudpayments_ruby/models/payment_confirm_response.rb +27 -0
- data/lib/cloudpayments_ruby/models/payment_post3ds_params.rb +30 -0
- data/lib/cloudpayments_ruby/models/payment_post3ds_response.rb +35 -0
- data/lib/cloudpayments_ruby/models/payment_refund_params.rb +38 -0
- data/lib/cloudpayments_ruby/models/payment_refund_response.rb +49 -0
- data/lib/cloudpayments_ruby/models/payment_void_params.rb +22 -0
- data/lib/cloudpayments_ruby/models/payment_void_response.rb +27 -0
- data/lib/cloudpayments_ruby/models/payments/token_auth_params.rb +197 -0
- data/lib/cloudpayments_ruby/models/payments/token_auth_response.rb +37 -0
- data/lib/cloudpayments_ruby/models/payments/token_charge_params.rb +197 -0
- data/lib/cloudpayments_ruby/models/payments/token_charge_response.rb +37 -0
- data/lib/cloudpayments_ruby/models/subscription.rb +212 -0
- data/lib/cloudpayments_ruby/models/subscription_cancel_params.rb +22 -0
- data/lib/cloudpayments_ruby/models/subscription_cancel_response.rb +27 -0
- data/lib/cloudpayments_ruby/models/subscription_create_params.rb +112 -0
- data/lib/cloudpayments_ruby/models/subscription_create_response.rb +35 -0
- data/lib/cloudpayments_ruby/models/subscription_find_params.rb +22 -0
- data/lib/cloudpayments_ruby/models/subscription_find_response.rb +37 -0
- data/lib/cloudpayments_ruby/models/subscription_get_params.rb +22 -0
- data/lib/cloudpayments_ruby/models/subscription_get_response.rb +35 -0
- data/lib/cloudpayments_ruby/models/subscription_update_params.rb +104 -0
- data/lib/cloudpayments_ruby/models/subscription_update_response.rb +35 -0
- data/lib/cloudpayments_ruby/models/transaction.rb +492 -0
- data/lib/cloudpayments_ruby/models.rb +76 -0
- data/lib/cloudpayments_ruby/request_options.rb +79 -0
- data/lib/cloudpayments_ruby/resources/orders.rb +95 -0
- data/lib/cloudpayments_ruby/resources/payments/tokens.rb +110 -0
- data/lib/cloudpayments_ruby/resources/payments.rb +232 -0
- data/lib/cloudpayments_ruby/resources/subscriptions.rb +178 -0
- data/lib/cloudpayments_ruby/version.rb +5 -0
- data/lib/cloudpayments_ruby.rb +91 -0
- data/manifest.yaml +17 -0
- data/rbi/cloudpayments_ruby/client.rbi +61 -0
- data/rbi/cloudpayments_ruby/errors.rbi +205 -0
- data/rbi/cloudpayments_ruby/file_part.rbi +37 -0
- data/rbi/cloudpayments_ruby/internal/transport/base_client.rbi +310 -0
- data/rbi/cloudpayments_ruby/internal/transport/pooled_net_requester.rbi +84 -0
- data/rbi/cloudpayments_ruby/internal/type/array_of.rbi +108 -0
- data/rbi/cloudpayments_ruby/internal/type/base_model.rbi +316 -0
- data/rbi/cloudpayments_ruby/internal/type/base_page.rbi +43 -0
- data/rbi/cloudpayments_ruby/internal/type/boolean.rbi +58 -0
- data/rbi/cloudpayments_ruby/internal/type/converter.rbi +225 -0
- data/rbi/cloudpayments_ruby/internal/type/enum.rbi +82 -0
- data/rbi/cloudpayments_ruby/internal/type/file_input.rbi +59 -0
- data/rbi/cloudpayments_ruby/internal/type/hash_of.rbi +108 -0
- data/rbi/cloudpayments_ruby/internal/type/request_parameters.rbi +33 -0
- data/rbi/cloudpayments_ruby/internal/type/union.rbi +134 -0
- data/rbi/cloudpayments_ruby/internal/type/unknown.rbi +58 -0
- data/rbi/cloudpayments_ruby/internal/util.rbi +487 -0
- data/rbi/cloudpayments_ruby/internal.rbi +18 -0
- data/rbi/cloudpayments_ruby/models/order_cancel_params.rbi +43 -0
- data/rbi/cloudpayments_ruby/models/order_cancel_response.rbi +42 -0
- data/rbi/cloudpayments_ruby/models/order_create_params.rbi +219 -0
- data/rbi/cloudpayments_ruby/models/order_create_response.rbi +255 -0
- data/rbi/cloudpayments_ruby/models/payment_auth_params.rbi +323 -0
- data/rbi/cloudpayments_ruby/models/payment_auth_response.rbi +278 -0
- data/rbi/cloudpayments_ruby/models/payment_charge_params.rbi +325 -0
- data/rbi/cloudpayments_ruby/models/payment_charge_response.rbi +278 -0
- data/rbi/cloudpayments_ruby/models/payment_confirm_params.rbi +65 -0
- data/rbi/cloudpayments_ruby/models/payment_confirm_response.rbi +42 -0
- data/rbi/cloudpayments_ruby/models/payment_post3ds_params.rbi +54 -0
- data/rbi/cloudpayments_ruby/models/payment_post3ds_response.rbi +63 -0
- data/rbi/cloudpayments_ruby/models/payment_refund_params.rbi +65 -0
- data/rbi/cloudpayments_ruby/models/payment_refund_response.rbi +97 -0
- data/rbi/cloudpayments_ruby/models/payment_void_params.rbi +46 -0
- data/rbi/cloudpayments_ruby/models/payment_void_response.rbi +42 -0
- data/rbi/cloudpayments_ruby/models/payments/token_auth_params.rbi +306 -0
- data/rbi/cloudpayments_ruby/models/payments/token_auth_response.rbi +65 -0
- data/rbi/cloudpayments_ruby/models/payments/token_charge_params.rbi +307 -0
- data/rbi/cloudpayments_ruby/models/payments/token_charge_response.rbi +65 -0
- data/rbi/cloudpayments_ruby/models/subscription.rbi +260 -0
- data/rbi/cloudpayments_ruby/models/subscription_cancel_params.rbi +43 -0
- data/rbi/cloudpayments_ruby/models/subscription_cancel_response.rbi +42 -0
- data/rbi/cloudpayments_ruby/models/subscription_create_params.rbi +143 -0
- data/rbi/cloudpayments_ruby/models/subscription_create_response.rbi +63 -0
- data/rbi/cloudpayments_ruby/models/subscription_find_params.rbi +46 -0
- data/rbi/cloudpayments_ruby/models/subscription_find_response.rbi +65 -0
- data/rbi/cloudpayments_ruby/models/subscription_get_params.rbi +43 -0
- data/rbi/cloudpayments_ruby/models/subscription_get_response.rbi +63 -0
- data/rbi/cloudpayments_ruby/models/subscription_update_params.rbi +156 -0
- data/rbi/cloudpayments_ruby/models/subscription_update_response.rbi +63 -0
- data/rbi/cloudpayments_ruby/models/transaction.rbi +594 -0
- data/rbi/cloudpayments_ruby/models.rbi +35 -0
- data/rbi/cloudpayments_ruby/request_options.rbi +64 -0
- data/rbi/cloudpayments_ruby/resources/orders.rbi +95 -0
- data/rbi/cloudpayments_ruby/resources/payments/tokens.rbi +117 -0
- data/rbi/cloudpayments_ruby/resources/payments.rbi +214 -0
- data/rbi/cloudpayments_ruby/resources/subscriptions.rbi +159 -0
- data/rbi/cloudpayments_ruby/version.rbi +5 -0
- data/sig/cloudpayments_ruby/client.rbs +33 -0
- data/sig/cloudpayments_ruby/errors.rbs +117 -0
- data/sig/cloudpayments_ruby/file_part.rbs +21 -0
- data/sig/cloudpayments_ruby/internal/transport/base_client.rbs +133 -0
- data/sig/cloudpayments_ruby/internal/transport/pooled_net_requester.rbs +48 -0
- data/sig/cloudpayments_ruby/internal/type/array_of.rbs +48 -0
- data/sig/cloudpayments_ruby/internal/type/base_model.rbs +106 -0
- data/sig/cloudpayments_ruby/internal/type/base_page.rbs +24 -0
- data/sig/cloudpayments_ruby/internal/type/boolean.rbs +26 -0
- data/sig/cloudpayments_ruby/internal/type/converter.rbs +79 -0
- data/sig/cloudpayments_ruby/internal/type/enum.rbs +32 -0
- data/sig/cloudpayments_ruby/internal/type/file_input.rbs +25 -0
- data/sig/cloudpayments_ruby/internal/type/hash_of.rbs +48 -0
- data/sig/cloudpayments_ruby/internal/type/request_parameters.rbs +20 -0
- data/sig/cloudpayments_ruby/internal/type/union.rbs +52 -0
- data/sig/cloudpayments_ruby/internal/type/unknown.rbs +26 -0
- data/sig/cloudpayments_ruby/internal/util.rbs +185 -0
- data/sig/cloudpayments_ruby/internal.rbs +10 -0
- data/sig/cloudpayments_ruby/models/order_cancel_params.rbs +23 -0
- data/sig/cloudpayments_ruby/models/order_cancel_response.rbs +17 -0
- data/sig/cloudpayments_ruby/models/order_create_params.rbs +136 -0
- data/sig/cloudpayments_ruby/models/order_create_response.rbs +146 -0
- data/sig/cloudpayments_ruby/models/payment_auth_params.rbs +197 -0
- data/sig/cloudpayments_ruby/models/payment_auth_response.rbs +151 -0
- data/sig/cloudpayments_ruby/models/payment_charge_params.rbs +197 -0
- data/sig/cloudpayments_ruby/models/payment_charge_response.rbs +151 -0
- data/sig/cloudpayments_ruby/models/payment_confirm_params.rbs +34 -0
- data/sig/cloudpayments_ruby/models/payment_confirm_response.rbs +17 -0
- data/sig/cloudpayments_ruby/models/payment_post3ds_params.rbs +28 -0
- data/sig/cloudpayments_ruby/models/payment_post3ds_response.rbs +32 -0
- data/sig/cloudpayments_ruby/models/payment_refund_params.rbs +34 -0
- data/sig/cloudpayments_ruby/models/payment_refund_response.rbs +46 -0
- data/sig/cloudpayments_ruby/models/payment_void_params.rbs +24 -0
- data/sig/cloudpayments_ruby/models/payment_void_response.rbs +17 -0
- data/sig/cloudpayments_ruby/models/payments/token_auth_params.rbs +183 -0
- data/sig/cloudpayments_ruby/models/payments/token_auth_response.rbs +38 -0
- data/sig/cloudpayments_ruby/models/payments/token_charge_params.rbs +183 -0
- data/sig/cloudpayments_ruby/models/payments/token_charge_response.rbs +38 -0
- data/sig/cloudpayments_ruby/models/subscription.rbs +158 -0
- data/sig/cloudpayments_ruby/models/subscription_cancel_params.rbs +23 -0
- data/sig/cloudpayments_ruby/models/subscription_cancel_response.rbs +17 -0
- data/sig/cloudpayments_ruby/models/subscription_create_params.rbs +87 -0
- data/sig/cloudpayments_ruby/models/subscription_create_response.rbs +32 -0
- data/sig/cloudpayments_ruby/models/subscription_find_params.rbs +24 -0
- data/sig/cloudpayments_ruby/models/subscription_find_response.rbs +36 -0
- data/sig/cloudpayments_ruby/models/subscription_get_params.rbs +23 -0
- data/sig/cloudpayments_ruby/models/subscription_get_response.rbs +32 -0
- data/sig/cloudpayments_ruby/models/subscription_update_params.rbs +96 -0
- data/sig/cloudpayments_ruby/models/subscription_update_response.rbs +32 -0
- data/sig/cloudpayments_ruby/models/transaction.rbs +369 -0
- data/sig/cloudpayments_ruby/models.rbs +33 -0
- data/sig/cloudpayments_ruby/request_options.rbs +36 -0
- data/sig/cloudpayments_ruby/resources/orders.rbs +33 -0
- data/sig/cloudpayments_ruby/resources/payments/tokens.rbs +41 -0
- data/sig/cloudpayments_ruby/resources/payments.rbs +70 -0
- data/sig/cloudpayments_ruby/resources/subscriptions.rbs +53 -0
- data/sig/cloudpayments_ruby/version.rbs +3 -0
- metadata +250 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module CloudpaymentsRuby
|
|
4
|
+
# Specify HTTP behaviour to use for a specific request. These options supplement
|
|
5
|
+
# or override those provided at the client level.
|
|
6
|
+
#
|
|
7
|
+
# When making a request, you can pass an actual {RequestOptions} instance, or
|
|
8
|
+
# simply pass a Hash with symbol keys matching the attributes on this class.
|
|
9
|
+
class RequestOptions < CloudpaymentsRuby::Internal::Type::BaseModel
|
|
10
|
+
OrHash =
|
|
11
|
+
T.type_alias do
|
|
12
|
+
T.any(
|
|
13
|
+
CloudpaymentsRuby::RequestOptions,
|
|
14
|
+
CloudpaymentsRuby::Internal::AnyHash
|
|
15
|
+
)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# @api private
|
|
19
|
+
sig { params(opts: CloudpaymentsRuby::RequestOptions::OrHash).void }
|
|
20
|
+
def self.validate!(opts)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# Idempotency key to send with request and all associated retries. Will only be
|
|
24
|
+
# sent for write requests.
|
|
25
|
+
sig { returns(T.nilable(String)) }
|
|
26
|
+
attr_accessor :idempotency_key
|
|
27
|
+
|
|
28
|
+
# Extra query params to send with the request. These are `.merge`’d into any
|
|
29
|
+
# `query` given at the client level.
|
|
30
|
+
sig do
|
|
31
|
+
returns(
|
|
32
|
+
T.nilable(T::Hash[String, T.nilable(T.any(T::Array[String], String))])
|
|
33
|
+
)
|
|
34
|
+
end
|
|
35
|
+
attr_accessor :extra_query
|
|
36
|
+
|
|
37
|
+
# Extra headers to send with the request. These are `.merged`’d into any
|
|
38
|
+
# `extra_headers` given at the client level.
|
|
39
|
+
sig { returns(T.nilable(T::Hash[String, T.nilable(String)])) }
|
|
40
|
+
attr_accessor :extra_headers
|
|
41
|
+
|
|
42
|
+
# Extra data to send with the request. These are deep merged into any data
|
|
43
|
+
# generated as part of the normal request.
|
|
44
|
+
sig { returns(T.nilable(T.anything)) }
|
|
45
|
+
attr_accessor :extra_body
|
|
46
|
+
|
|
47
|
+
# Maximum number of retries to attempt after a failed initial request.
|
|
48
|
+
sig { returns(T.nilable(Integer)) }
|
|
49
|
+
attr_accessor :max_retries
|
|
50
|
+
|
|
51
|
+
# Request timeout in seconds.
|
|
52
|
+
sig { returns(T.nilable(Float)) }
|
|
53
|
+
attr_accessor :timeout
|
|
54
|
+
|
|
55
|
+
# Returns a new instance of RequestOptions.
|
|
56
|
+
sig do
|
|
57
|
+
params(values: CloudpaymentsRuby::Internal::AnyHash).returns(
|
|
58
|
+
T.attached_class
|
|
59
|
+
)
|
|
60
|
+
end
|
|
61
|
+
def self.new(values = {})
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module CloudpaymentsRuby
|
|
4
|
+
module Resources
|
|
5
|
+
class Orders
|
|
6
|
+
# Создание счёта для отправки по почте
|
|
7
|
+
#
|
|
8
|
+
# Создаёт ссылку на оплату и при необходимости отправляет уведомление плательщику
|
|
9
|
+
# по email, SMS или Viber.
|
|
10
|
+
sig do
|
|
11
|
+
params(
|
|
12
|
+
amount: Float,
|
|
13
|
+
description: String,
|
|
14
|
+
account_id: String,
|
|
15
|
+
culture_name: String,
|
|
16
|
+
currency: String,
|
|
17
|
+
email: String,
|
|
18
|
+
fail_redirect_url: String,
|
|
19
|
+
invoice_id: String,
|
|
20
|
+
json_data: T.anything,
|
|
21
|
+
offer_uri: String,
|
|
22
|
+
phone: String,
|
|
23
|
+
require_confirmation: T::Boolean,
|
|
24
|
+
send_email: T::Boolean,
|
|
25
|
+
send_sms: T::Boolean,
|
|
26
|
+
send_viber: T::Boolean,
|
|
27
|
+
subscription_behavior: String,
|
|
28
|
+
success_redirect_url: String,
|
|
29
|
+
request_options: CloudpaymentsRuby::RequestOptions::OrHash
|
|
30
|
+
).returns(CloudpaymentsRuby::Models::OrderCreateResponse)
|
|
31
|
+
end
|
|
32
|
+
def create(
|
|
33
|
+
# Сумма платежа
|
|
34
|
+
amount:,
|
|
35
|
+
# Описание платежа
|
|
36
|
+
description:,
|
|
37
|
+
# Идентификатор пользователя
|
|
38
|
+
account_id: nil,
|
|
39
|
+
# Язык уведомлений (ru-RU, en-US)
|
|
40
|
+
culture_name: nil,
|
|
41
|
+
# Валюта (RUB по умолчанию)
|
|
42
|
+
currency: nil,
|
|
43
|
+
# Email плательщика
|
|
44
|
+
email: nil,
|
|
45
|
+
# URL редиректа при неуспешной оплате
|
|
46
|
+
fail_redirect_url: nil,
|
|
47
|
+
# Номер заказа в системе мерчанта
|
|
48
|
+
invoice_id: nil,
|
|
49
|
+
# Дополнительные данные (JSON)
|
|
50
|
+
json_data: nil,
|
|
51
|
+
# Ссылка на оферту
|
|
52
|
+
offer_uri: nil,
|
|
53
|
+
# Телефон плательщика
|
|
54
|
+
phone: nil,
|
|
55
|
+
# Требуется подтверждение (двухстадийная схема)
|
|
56
|
+
require_confirmation: nil,
|
|
57
|
+
# Отправить ссылку на email
|
|
58
|
+
send_email: nil,
|
|
59
|
+
# Отправить ссылку по SMS
|
|
60
|
+
send_sms: nil,
|
|
61
|
+
# Отправить ссылку через Viber
|
|
62
|
+
send_viber: nil,
|
|
63
|
+
# Поведение подписки: CreateWeekly, CreateMonthly
|
|
64
|
+
subscription_behavior: nil,
|
|
65
|
+
# URL редиректа при успешной оплате
|
|
66
|
+
success_redirect_url: nil,
|
|
67
|
+
request_options: {}
|
|
68
|
+
)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
# Отмена созданного счёта
|
|
72
|
+
#
|
|
73
|
+
# Отменяет ранее созданный счёт. После отмены оплата по ссылке невозможна.
|
|
74
|
+
sig do
|
|
75
|
+
params(
|
|
76
|
+
id: String,
|
|
77
|
+
request_options: CloudpaymentsRuby::RequestOptions::OrHash
|
|
78
|
+
).returns(CloudpaymentsRuby::Models::OrderCancelResponse)
|
|
79
|
+
end
|
|
80
|
+
def cancel(
|
|
81
|
+
# Идентификатор заказа
|
|
82
|
+
id:,
|
|
83
|
+
request_options: {}
|
|
84
|
+
)
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# @api private
|
|
88
|
+
sig do
|
|
89
|
+
params(client: CloudpaymentsRuby::Client).returns(T.attached_class)
|
|
90
|
+
end
|
|
91
|
+
def self.new(client:)
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module CloudpaymentsRuby
|
|
4
|
+
module Resources
|
|
5
|
+
class Payments
|
|
6
|
+
class Tokens
|
|
7
|
+
# Двухстадийная оплата по токену (рекарринг)
|
|
8
|
+
#
|
|
9
|
+
# Выполняет авторизацию (холдирование средств) по сохранённому токену карты. Для
|
|
10
|
+
# списания необходимо вызвать метод confirm.
|
|
11
|
+
sig do
|
|
12
|
+
params(
|
|
13
|
+
account_id: String,
|
|
14
|
+
amount: Float,
|
|
15
|
+
token: String,
|
|
16
|
+
tr_initiator_code: Integer,
|
|
17
|
+
currency: String,
|
|
18
|
+
description: String,
|
|
19
|
+
email: String,
|
|
20
|
+
invoice_id: String,
|
|
21
|
+
ip_address: String,
|
|
22
|
+
json_data: T.anything,
|
|
23
|
+
payer: CloudpaymentsRuby::Payments::TokenAuthParams::Payer::OrHash,
|
|
24
|
+
payment_scheduled: Integer,
|
|
25
|
+
request_options: CloudpaymentsRuby::RequestOptions::OrHash
|
|
26
|
+
).returns(CloudpaymentsRuby::Models::Payments::TokenAuthResponse)
|
|
27
|
+
end
|
|
28
|
+
def auth(
|
|
29
|
+
# Идентификатор пользователя
|
|
30
|
+
account_id:,
|
|
31
|
+
# Сумма платежа (до 2 знаков после точки)
|
|
32
|
+
amount:,
|
|
33
|
+
# Токен карты
|
|
34
|
+
token:,
|
|
35
|
+
# Признак инициатора транзакции: 0 — мерчант, 1 — держатель карты
|
|
36
|
+
tr_initiator_code:,
|
|
37
|
+
# Валюта (RUB по умолчанию)
|
|
38
|
+
currency: nil,
|
|
39
|
+
# Описание платежа
|
|
40
|
+
description: nil,
|
|
41
|
+
# Email плательщика
|
|
42
|
+
email: nil,
|
|
43
|
+
# Номер заказа
|
|
44
|
+
invoice_id: nil,
|
|
45
|
+
# IP-адрес плательщика
|
|
46
|
+
ip_address: nil,
|
|
47
|
+
# Дополнительные данные (JSON)
|
|
48
|
+
json_data: nil,
|
|
49
|
+
# Информация о плательщике
|
|
50
|
+
payer: nil,
|
|
51
|
+
# Признак регулярного платежа: 0 — нет, 1 — да
|
|
52
|
+
payment_scheduled: nil,
|
|
53
|
+
request_options: {}
|
|
54
|
+
)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# Одностадийная оплата по токену (рекарринг)
|
|
58
|
+
#
|
|
59
|
+
# Выполняет оплату в одну стадию по сохранённому токену карты. Токен выдаётся
|
|
60
|
+
# системой после первой оплаты по криптограмме.
|
|
61
|
+
sig do
|
|
62
|
+
params(
|
|
63
|
+
account_id: String,
|
|
64
|
+
amount: Float,
|
|
65
|
+
token: String,
|
|
66
|
+
tr_initiator_code: Integer,
|
|
67
|
+
currency: String,
|
|
68
|
+
description: String,
|
|
69
|
+
email: String,
|
|
70
|
+
invoice_id: String,
|
|
71
|
+
ip_address: String,
|
|
72
|
+
json_data: T.anything,
|
|
73
|
+
payer:
|
|
74
|
+
CloudpaymentsRuby::Payments::TokenChargeParams::Payer::OrHash,
|
|
75
|
+
payment_scheduled: Integer,
|
|
76
|
+
request_options: CloudpaymentsRuby::RequestOptions::OrHash
|
|
77
|
+
).returns(CloudpaymentsRuby::Models::Payments::TokenChargeResponse)
|
|
78
|
+
end
|
|
79
|
+
def charge(
|
|
80
|
+
# Идентификатор пользователя
|
|
81
|
+
account_id:,
|
|
82
|
+
# Сумма платежа (до 2 знаков после точки)
|
|
83
|
+
amount:,
|
|
84
|
+
# Токен карты
|
|
85
|
+
token:,
|
|
86
|
+
# Признак инициатора транзакции: 0 — мерчант, 1 — держатель карты
|
|
87
|
+
tr_initiator_code:,
|
|
88
|
+
# Валюта (RUB по умолчанию)
|
|
89
|
+
currency: nil,
|
|
90
|
+
# Описание платежа
|
|
91
|
+
description: nil,
|
|
92
|
+
# Email плательщика
|
|
93
|
+
email: nil,
|
|
94
|
+
# Номер заказа
|
|
95
|
+
invoice_id: nil,
|
|
96
|
+
# IP-адрес плательщика
|
|
97
|
+
ip_address: nil,
|
|
98
|
+
# Дополнительные данные (JSON)
|
|
99
|
+
json_data: nil,
|
|
100
|
+
# Информация о плательщике
|
|
101
|
+
payer: nil,
|
|
102
|
+
# Признак регулярного платежа: 0 — нет, 1 — да
|
|
103
|
+
payment_scheduled: nil,
|
|
104
|
+
request_options: {}
|
|
105
|
+
)
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
# @api private
|
|
109
|
+
sig do
|
|
110
|
+
params(client: CloudpaymentsRuby::Client).returns(T.attached_class)
|
|
111
|
+
end
|
|
112
|
+
def self.new(client:)
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
end
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module CloudpaymentsRuby
|
|
4
|
+
module Resources
|
|
5
|
+
class Payments
|
|
6
|
+
sig { returns(CloudpaymentsRuby::Resources::Payments::Tokens) }
|
|
7
|
+
attr_reader :tokens
|
|
8
|
+
|
|
9
|
+
# Двухстадийная оплата по криптограмме
|
|
10
|
+
#
|
|
11
|
+
# Выполняет только авторизацию (холдирование средств). Для списания необходимо
|
|
12
|
+
# вызвать метод confirm. При необходимости 3-D Secure аутентификации возвращает
|
|
13
|
+
# данные для перенаправления на ACS.
|
|
14
|
+
sig do
|
|
15
|
+
params(
|
|
16
|
+
amount: Float,
|
|
17
|
+
card_cryptogram_packet: String,
|
|
18
|
+
ip_address: String,
|
|
19
|
+
account_id: String,
|
|
20
|
+
culture_name: String,
|
|
21
|
+
currency: String,
|
|
22
|
+
description: String,
|
|
23
|
+
email: String,
|
|
24
|
+
invoice_id: String,
|
|
25
|
+
json_data: T.anything,
|
|
26
|
+
name: String,
|
|
27
|
+
payer: CloudpaymentsRuby::PaymentAuthParams::Payer::OrHash,
|
|
28
|
+
payment_url: String,
|
|
29
|
+
save_card: T::Boolean,
|
|
30
|
+
request_options: CloudpaymentsRuby::RequestOptions::OrHash
|
|
31
|
+
).returns(CloudpaymentsRuby::Models::PaymentAuthResponse::Variants)
|
|
32
|
+
end
|
|
33
|
+
def auth(
|
|
34
|
+
# Сумма платежа (до 2 знаков после точки)
|
|
35
|
+
amount:,
|
|
36
|
+
# Криптограмма платежных данных
|
|
37
|
+
card_cryptogram_packet:,
|
|
38
|
+
# IP-адрес плательщика
|
|
39
|
+
ip_address:,
|
|
40
|
+
# Идентификатор пользователя
|
|
41
|
+
account_id: nil,
|
|
42
|
+
# Язык уведомлений (ru-RU, en-US)
|
|
43
|
+
culture_name: nil,
|
|
44
|
+
# Валюта (RUB по умолчанию)
|
|
45
|
+
currency: nil,
|
|
46
|
+
# Описание платежа
|
|
47
|
+
description: nil,
|
|
48
|
+
# Email плательщика
|
|
49
|
+
email: nil,
|
|
50
|
+
# Номер заказа
|
|
51
|
+
invoice_id: nil,
|
|
52
|
+
# Дополнительные данные (JSON)
|
|
53
|
+
json_data: nil,
|
|
54
|
+
# Имя держателя карты (латиница)
|
|
55
|
+
name: nil,
|
|
56
|
+
# Информация о плательщике
|
|
57
|
+
payer: nil,
|
|
58
|
+
# URL сайта, с которого выполняется оплата
|
|
59
|
+
payment_url: nil,
|
|
60
|
+
# Сохранить токен карты для повторных платежей
|
|
61
|
+
save_card: nil,
|
|
62
|
+
request_options: {}
|
|
63
|
+
)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# Одностадийная оплата по криптограмме
|
|
67
|
+
#
|
|
68
|
+
# Выполняет оплату в одну стадию - авторизация и списание происходят одновременно.
|
|
69
|
+
# При необходимости 3-D Secure аутентификации возвращает данные для
|
|
70
|
+
# перенаправления на ACS.
|
|
71
|
+
sig do
|
|
72
|
+
params(
|
|
73
|
+
amount: Float,
|
|
74
|
+
card_cryptogram_packet: String,
|
|
75
|
+
ip_address: String,
|
|
76
|
+
account_id: String,
|
|
77
|
+
culture_name: String,
|
|
78
|
+
currency: String,
|
|
79
|
+
description: String,
|
|
80
|
+
email: String,
|
|
81
|
+
invoice_id: String,
|
|
82
|
+
json_data: T.anything,
|
|
83
|
+
name: String,
|
|
84
|
+
payer: CloudpaymentsRuby::PaymentChargeParams::Payer::OrHash,
|
|
85
|
+
payment_url: String,
|
|
86
|
+
save_card: T::Boolean,
|
|
87
|
+
request_options: CloudpaymentsRuby::RequestOptions::OrHash
|
|
88
|
+
).returns(CloudpaymentsRuby::Models::PaymentChargeResponse::Variants)
|
|
89
|
+
end
|
|
90
|
+
def charge(
|
|
91
|
+
# Сумма платежа (до 2 знаков после точки)
|
|
92
|
+
amount:,
|
|
93
|
+
# Криптограмма платежных данных
|
|
94
|
+
card_cryptogram_packet:,
|
|
95
|
+
# IP-адрес плательщика
|
|
96
|
+
ip_address:,
|
|
97
|
+
# Идентификатор пользователя
|
|
98
|
+
account_id: nil,
|
|
99
|
+
# Язык уведомлений (ru-RU, en-US)
|
|
100
|
+
culture_name: nil,
|
|
101
|
+
# Валюта (RUB по умолчанию)
|
|
102
|
+
currency: nil,
|
|
103
|
+
# Описание платежа
|
|
104
|
+
description: nil,
|
|
105
|
+
# Email плательщика
|
|
106
|
+
email: nil,
|
|
107
|
+
# Номер заказа
|
|
108
|
+
invoice_id: nil,
|
|
109
|
+
# Дополнительные данные (JSON)
|
|
110
|
+
json_data: nil,
|
|
111
|
+
# Имя держателя карты (латиница)
|
|
112
|
+
name: nil,
|
|
113
|
+
# Информация о плательщике
|
|
114
|
+
payer: nil,
|
|
115
|
+
# URL сайта, с которого выполняется оплата
|
|
116
|
+
payment_url: nil,
|
|
117
|
+
# Сохранить токен карты для повторных платежей
|
|
118
|
+
save_card: nil,
|
|
119
|
+
request_options: {}
|
|
120
|
+
)
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
# Подтверждение двухстадийного платежа
|
|
124
|
+
#
|
|
125
|
+
# Подтверждает ранее авторизованный платеж и инициирует списание средств. Сумма
|
|
126
|
+
# подтверждения может быть меньше или равна сумме авторизации.
|
|
127
|
+
sig do
|
|
128
|
+
params(
|
|
129
|
+
amount: Float,
|
|
130
|
+
transaction_id: Integer,
|
|
131
|
+
json_data: T.anything,
|
|
132
|
+
request_options: CloudpaymentsRuby::RequestOptions::OrHash
|
|
133
|
+
).returns(CloudpaymentsRuby::Models::PaymentConfirmResponse)
|
|
134
|
+
end
|
|
135
|
+
def confirm(
|
|
136
|
+
# Сумма подтверждения
|
|
137
|
+
amount:,
|
|
138
|
+
# ID транзакции
|
|
139
|
+
transaction_id:,
|
|
140
|
+
# Дополнительные данные (JSON)
|
|
141
|
+
json_data: nil,
|
|
142
|
+
request_options: {}
|
|
143
|
+
)
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
# Завершение 3-D Secure аутентификации
|
|
147
|
+
#
|
|
148
|
+
# Вызывается после возврата плательщика с ACS. Параметр TransactionId
|
|
149
|
+
# соответствует MD, PaRes получается от ACS.
|
|
150
|
+
sig do
|
|
151
|
+
params(
|
|
152
|
+
pa_res: String,
|
|
153
|
+
transaction_id: Integer,
|
|
154
|
+
request_options: CloudpaymentsRuby::RequestOptions::OrHash
|
|
155
|
+
).returns(CloudpaymentsRuby::Models::PaymentPost3dsResponse)
|
|
156
|
+
end
|
|
157
|
+
def post3ds(
|
|
158
|
+
# Результат 3-D Secure аутентификации
|
|
159
|
+
pa_res:,
|
|
160
|
+
# ID транзакции (значение параметра MD)
|
|
161
|
+
transaction_id:,
|
|
162
|
+
request_options: {}
|
|
163
|
+
)
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
# Возврат средств
|
|
167
|
+
#
|
|
168
|
+
# Возвращает средства по завершенному платежу. Сумма возврата может быть меньше
|
|
169
|
+
# или равна сумме платежа. Возможны частичные возвраты.
|
|
170
|
+
sig do
|
|
171
|
+
params(
|
|
172
|
+
amount: Float,
|
|
173
|
+
transaction_id: Integer,
|
|
174
|
+
json_data: T.anything,
|
|
175
|
+
request_options: CloudpaymentsRuby::RequestOptions::OrHash
|
|
176
|
+
).returns(CloudpaymentsRuby::Models::PaymentRefundResponse)
|
|
177
|
+
end
|
|
178
|
+
def refund(
|
|
179
|
+
# Сумма возврата
|
|
180
|
+
amount:,
|
|
181
|
+
# ID транзакции оплаты
|
|
182
|
+
transaction_id:,
|
|
183
|
+
# Дополнительные данные (JSON)
|
|
184
|
+
json_data: nil,
|
|
185
|
+
request_options: {}
|
|
186
|
+
)
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
# Отмена платежа
|
|
190
|
+
#
|
|
191
|
+
# Отменяет авторизованный платеж до его подтверждения. Применимо только для
|
|
192
|
+
# двухстадийных платежей.
|
|
193
|
+
sig do
|
|
194
|
+
params(
|
|
195
|
+
transaction_id: Integer,
|
|
196
|
+
request_options: CloudpaymentsRuby::RequestOptions::OrHash
|
|
197
|
+
).returns(CloudpaymentsRuby::Models::PaymentVoidResponse)
|
|
198
|
+
end
|
|
199
|
+
def void(
|
|
200
|
+
# ID транзакции
|
|
201
|
+
transaction_id:,
|
|
202
|
+
request_options: {}
|
|
203
|
+
)
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
# @api private
|
|
207
|
+
sig do
|
|
208
|
+
params(client: CloudpaymentsRuby::Client).returns(T.attached_class)
|
|
209
|
+
end
|
|
210
|
+
def self.new(client:)
|
|
211
|
+
end
|
|
212
|
+
end
|
|
213
|
+
end
|
|
214
|
+
end
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module CloudpaymentsRuby
|
|
4
|
+
module Resources
|
|
5
|
+
class Subscriptions
|
|
6
|
+
# Создание подписки на рекуррентные платежи
|
|
7
|
+
#
|
|
8
|
+
# Создаёт план подписки для автоматического списания средств по указанному
|
|
9
|
+
# расписанию с использованием токена карты.
|
|
10
|
+
sig do
|
|
11
|
+
params(
|
|
12
|
+
account_id: String,
|
|
13
|
+
amount: Float,
|
|
14
|
+
currency: String,
|
|
15
|
+
description: String,
|
|
16
|
+
interval: String,
|
|
17
|
+
period: Integer,
|
|
18
|
+
require_confirmation: T::Boolean,
|
|
19
|
+
start_date: Time,
|
|
20
|
+
token: String,
|
|
21
|
+
customer_receipt: T.anything,
|
|
22
|
+
email: String,
|
|
23
|
+
max_periods: Integer,
|
|
24
|
+
request_options: CloudpaymentsRuby::RequestOptions::OrHash
|
|
25
|
+
).returns(CloudpaymentsRuby::Models::SubscriptionCreateResponse)
|
|
26
|
+
end
|
|
27
|
+
def create(
|
|
28
|
+
# Идентификатор пользователя
|
|
29
|
+
account_id:,
|
|
30
|
+
# Сумма платежа
|
|
31
|
+
amount:,
|
|
32
|
+
# Валюта
|
|
33
|
+
currency:,
|
|
34
|
+
# Описание платежа
|
|
35
|
+
description:,
|
|
36
|
+
# Интервал: Day, Week, Month
|
|
37
|
+
interval:,
|
|
38
|
+
# Период (в сочетании с Interval)
|
|
39
|
+
period:,
|
|
40
|
+
# Требуется подтверждение (двухстадийная схема)
|
|
41
|
+
require_confirmation:,
|
|
42
|
+
# Дата и время первого платежа (UTC)
|
|
43
|
+
start_date:,
|
|
44
|
+
# Токен карты
|
|
45
|
+
token:,
|
|
46
|
+
# Данные для онлайн-чека
|
|
47
|
+
customer_receipt: nil,
|
|
48
|
+
# Email плательщика
|
|
49
|
+
email: nil,
|
|
50
|
+
# Максимальное количество платежей
|
|
51
|
+
max_periods: nil,
|
|
52
|
+
request_options: {}
|
|
53
|
+
)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# Изменение подписки на рекуррентные платежи
|
|
57
|
+
#
|
|
58
|
+
# Изменяет параметры существующей подписки. Если подписка была отменена или
|
|
59
|
+
# завершена, изменение любого атрибута приведёт к её реактивации.
|
|
60
|
+
sig do
|
|
61
|
+
params(
|
|
62
|
+
id: String,
|
|
63
|
+
amount: Float,
|
|
64
|
+
culture_name: String,
|
|
65
|
+
currency: String,
|
|
66
|
+
customer_receipt: T.anything,
|
|
67
|
+
description: String,
|
|
68
|
+
interval: String,
|
|
69
|
+
max_periods: Integer,
|
|
70
|
+
period: Integer,
|
|
71
|
+
require_confirmation: T::Boolean,
|
|
72
|
+
start_date: Time,
|
|
73
|
+
request_options: CloudpaymentsRuby::RequestOptions::OrHash
|
|
74
|
+
).returns(CloudpaymentsRuby::Models::SubscriptionUpdateResponse)
|
|
75
|
+
end
|
|
76
|
+
def update(
|
|
77
|
+
# Идентификатор подписки
|
|
78
|
+
id:,
|
|
79
|
+
# Сумма платежа
|
|
80
|
+
amount: nil,
|
|
81
|
+
# Язык уведомлений (ru-RU, en-US)
|
|
82
|
+
culture_name: nil,
|
|
83
|
+
# Валюта
|
|
84
|
+
currency: nil,
|
|
85
|
+
# Данные для онлайн-чека
|
|
86
|
+
customer_receipt: nil,
|
|
87
|
+
# Описание платежа
|
|
88
|
+
description: nil,
|
|
89
|
+
# Интервал: Day, Week, Month
|
|
90
|
+
interval: nil,
|
|
91
|
+
# Максимальное количество платежей
|
|
92
|
+
max_periods: nil,
|
|
93
|
+
# Период
|
|
94
|
+
period: nil,
|
|
95
|
+
# Требуется подтверждение
|
|
96
|
+
require_confirmation: nil,
|
|
97
|
+
# Дата и время следующего платежа (UTC)
|
|
98
|
+
start_date: nil,
|
|
99
|
+
request_options: {}
|
|
100
|
+
)
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
# Отмена подписки на рекуррентные платежи
|
|
104
|
+
#
|
|
105
|
+
# Отменяет активную подписку. Дальнейшие автоматические списания прекращаются.
|
|
106
|
+
sig do
|
|
107
|
+
params(
|
|
108
|
+
id: String,
|
|
109
|
+
request_options: CloudpaymentsRuby::RequestOptions::OrHash
|
|
110
|
+
).returns(CloudpaymentsRuby::Models::SubscriptionCancelResponse)
|
|
111
|
+
end
|
|
112
|
+
def cancel(
|
|
113
|
+
# Идентификатор подписки
|
|
114
|
+
id:,
|
|
115
|
+
request_options: {}
|
|
116
|
+
)
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
# Поиск подписок
|
|
120
|
+
#
|
|
121
|
+
# Возвращает список подписок для указанного пользователя.
|
|
122
|
+
sig do
|
|
123
|
+
params(
|
|
124
|
+
account_id: String,
|
|
125
|
+
request_options: CloudpaymentsRuby::RequestOptions::OrHash
|
|
126
|
+
).returns(CloudpaymentsRuby::Models::SubscriptionFindResponse)
|
|
127
|
+
end
|
|
128
|
+
def find(
|
|
129
|
+
# Идентификатор пользователя
|
|
130
|
+
account_id:,
|
|
131
|
+
request_options: {}
|
|
132
|
+
)
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
# Запрос информации о подписке
|
|
136
|
+
#
|
|
137
|
+
# Возвращает текущий статус и параметры подписки.
|
|
138
|
+
sig do
|
|
139
|
+
params(
|
|
140
|
+
id: String,
|
|
141
|
+
request_options: CloudpaymentsRuby::RequestOptions::OrHash
|
|
142
|
+
).returns(CloudpaymentsRuby::Models::SubscriptionGetResponse)
|
|
143
|
+
end
|
|
144
|
+
def get(
|
|
145
|
+
# Идентификатор подписки
|
|
146
|
+
id:,
|
|
147
|
+
request_options: {}
|
|
148
|
+
)
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
# @api private
|
|
152
|
+
sig do
|
|
153
|
+
params(client: CloudpaymentsRuby::Client).returns(T.attached_class)
|
|
154
|
+
end
|
|
155
|
+
def self.new(client:)
|
|
156
|
+
end
|
|
157
|
+
end
|
|
158
|
+
end
|
|
159
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
module CloudpaymentsRuby
|
|
2
|
+
class Client < CloudpaymentsRuby::Internal::Transport::BaseClient
|
|
3
|
+
DEFAULT_MAX_RETRIES: 2
|
|
4
|
+
|
|
5
|
+
DEFAULT_TIMEOUT_IN_SECONDS: Float
|
|
6
|
+
|
|
7
|
+
DEFAULT_INITIAL_RETRY_DELAY: Float
|
|
8
|
+
|
|
9
|
+
DEFAULT_MAX_RETRY_DELAY: Float
|
|
10
|
+
|
|
11
|
+
attr_reader public_id: String
|
|
12
|
+
|
|
13
|
+
attr_reader api_secret: String
|
|
14
|
+
|
|
15
|
+
attr_reader payments: CloudpaymentsRuby::Resources::Payments
|
|
16
|
+
|
|
17
|
+
attr_reader subscriptions: CloudpaymentsRuby::Resources::Subscriptions
|
|
18
|
+
|
|
19
|
+
attr_reader orders: CloudpaymentsRuby::Resources::Orders
|
|
20
|
+
|
|
21
|
+
private def auth_headers: -> ::Hash[String, String]
|
|
22
|
+
|
|
23
|
+
def initialize: (
|
|
24
|
+
?public_id: String?,
|
|
25
|
+
?api_secret: String?,
|
|
26
|
+
?base_url: String?,
|
|
27
|
+
?max_retries: Integer,
|
|
28
|
+
?timeout: Float,
|
|
29
|
+
?initial_retry_delay: Float,
|
|
30
|
+
?max_retry_delay: Float
|
|
31
|
+
) -> void
|
|
32
|
+
end
|
|
33
|
+
end
|