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.
Files changed (179) hide show
  1. checksums.yaml +7 -0
  2. data/.ignore +2 -0
  3. data/CHANGELOG.md +50 -0
  4. data/README.md +250 -0
  5. data/SECURITY.md +23 -0
  6. data/lib/cloudpayments_ruby/client.rb +93 -0
  7. data/lib/cloudpayments_ruby/errors.rb +228 -0
  8. data/lib/cloudpayments_ruby/file_part.rb +58 -0
  9. data/lib/cloudpayments_ruby/internal/transport/base_client.rb +579 -0
  10. data/lib/cloudpayments_ruby/internal/transport/pooled_net_requester.rb +210 -0
  11. data/lib/cloudpayments_ruby/internal/type/array_of.rb +168 -0
  12. data/lib/cloudpayments_ruby/internal/type/base_model.rb +536 -0
  13. data/lib/cloudpayments_ruby/internal/type/base_page.rb +55 -0
  14. data/lib/cloudpayments_ruby/internal/type/boolean.rb +77 -0
  15. data/lib/cloudpayments_ruby/internal/type/converter.rb +327 -0
  16. data/lib/cloudpayments_ruby/internal/type/enum.rb +133 -0
  17. data/lib/cloudpayments_ruby/internal/type/file_input.rb +111 -0
  18. data/lib/cloudpayments_ruby/internal/type/hash_of.rb +188 -0
  19. data/lib/cloudpayments_ruby/internal/type/request_parameters.rb +42 -0
  20. data/lib/cloudpayments_ruby/internal/type/union.rb +256 -0
  21. data/lib/cloudpayments_ruby/internal/type/unknown.rb +81 -0
  22. data/lib/cloudpayments_ruby/internal/util.rb +920 -0
  23. data/lib/cloudpayments_ruby/internal.rb +20 -0
  24. data/lib/cloudpayments_ruby/models/order_cancel_params.rb +22 -0
  25. data/lib/cloudpayments_ruby/models/order_cancel_response.rb +27 -0
  26. data/lib/cloudpayments_ruby/models/order_create_params.rb +152 -0
  27. data/lib/cloudpayments_ruby/models/order_create_response.rb +187 -0
  28. data/lib/cloudpayments_ruby/models/payment_auth_params.rb +211 -0
  29. data/lib/cloudpayments_ruby/models/payment_auth_response.rb +167 -0
  30. data/lib/cloudpayments_ruby/models/payment_charge_params.rb +211 -0
  31. data/lib/cloudpayments_ruby/models/payment_charge_response.rb +167 -0
  32. data/lib/cloudpayments_ruby/models/payment_confirm_params.rb +38 -0
  33. data/lib/cloudpayments_ruby/models/payment_confirm_response.rb +27 -0
  34. data/lib/cloudpayments_ruby/models/payment_post3ds_params.rb +30 -0
  35. data/lib/cloudpayments_ruby/models/payment_post3ds_response.rb +35 -0
  36. data/lib/cloudpayments_ruby/models/payment_refund_params.rb +38 -0
  37. data/lib/cloudpayments_ruby/models/payment_refund_response.rb +49 -0
  38. data/lib/cloudpayments_ruby/models/payment_void_params.rb +22 -0
  39. data/lib/cloudpayments_ruby/models/payment_void_response.rb +27 -0
  40. data/lib/cloudpayments_ruby/models/payments/token_auth_params.rb +197 -0
  41. data/lib/cloudpayments_ruby/models/payments/token_auth_response.rb +37 -0
  42. data/lib/cloudpayments_ruby/models/payments/token_charge_params.rb +197 -0
  43. data/lib/cloudpayments_ruby/models/payments/token_charge_response.rb +37 -0
  44. data/lib/cloudpayments_ruby/models/subscription.rb +212 -0
  45. data/lib/cloudpayments_ruby/models/subscription_cancel_params.rb +22 -0
  46. data/lib/cloudpayments_ruby/models/subscription_cancel_response.rb +27 -0
  47. data/lib/cloudpayments_ruby/models/subscription_create_params.rb +112 -0
  48. data/lib/cloudpayments_ruby/models/subscription_create_response.rb +35 -0
  49. data/lib/cloudpayments_ruby/models/subscription_find_params.rb +22 -0
  50. data/lib/cloudpayments_ruby/models/subscription_find_response.rb +37 -0
  51. data/lib/cloudpayments_ruby/models/subscription_get_params.rb +22 -0
  52. data/lib/cloudpayments_ruby/models/subscription_get_response.rb +35 -0
  53. data/lib/cloudpayments_ruby/models/subscription_update_params.rb +104 -0
  54. data/lib/cloudpayments_ruby/models/subscription_update_response.rb +35 -0
  55. data/lib/cloudpayments_ruby/models/transaction.rb +492 -0
  56. data/lib/cloudpayments_ruby/models.rb +76 -0
  57. data/lib/cloudpayments_ruby/request_options.rb +79 -0
  58. data/lib/cloudpayments_ruby/resources/orders.rb +95 -0
  59. data/lib/cloudpayments_ruby/resources/payments/tokens.rb +110 -0
  60. data/lib/cloudpayments_ruby/resources/payments.rb +232 -0
  61. data/lib/cloudpayments_ruby/resources/subscriptions.rb +178 -0
  62. data/lib/cloudpayments_ruby/version.rb +5 -0
  63. data/lib/cloudpayments_ruby.rb +91 -0
  64. data/manifest.yaml +17 -0
  65. data/rbi/cloudpayments_ruby/client.rbi +61 -0
  66. data/rbi/cloudpayments_ruby/errors.rbi +205 -0
  67. data/rbi/cloudpayments_ruby/file_part.rbi +37 -0
  68. data/rbi/cloudpayments_ruby/internal/transport/base_client.rbi +310 -0
  69. data/rbi/cloudpayments_ruby/internal/transport/pooled_net_requester.rbi +84 -0
  70. data/rbi/cloudpayments_ruby/internal/type/array_of.rbi +108 -0
  71. data/rbi/cloudpayments_ruby/internal/type/base_model.rbi +316 -0
  72. data/rbi/cloudpayments_ruby/internal/type/base_page.rbi +43 -0
  73. data/rbi/cloudpayments_ruby/internal/type/boolean.rbi +58 -0
  74. data/rbi/cloudpayments_ruby/internal/type/converter.rbi +225 -0
  75. data/rbi/cloudpayments_ruby/internal/type/enum.rbi +82 -0
  76. data/rbi/cloudpayments_ruby/internal/type/file_input.rbi +59 -0
  77. data/rbi/cloudpayments_ruby/internal/type/hash_of.rbi +108 -0
  78. data/rbi/cloudpayments_ruby/internal/type/request_parameters.rbi +33 -0
  79. data/rbi/cloudpayments_ruby/internal/type/union.rbi +134 -0
  80. data/rbi/cloudpayments_ruby/internal/type/unknown.rbi +58 -0
  81. data/rbi/cloudpayments_ruby/internal/util.rbi +487 -0
  82. data/rbi/cloudpayments_ruby/internal.rbi +18 -0
  83. data/rbi/cloudpayments_ruby/models/order_cancel_params.rbi +43 -0
  84. data/rbi/cloudpayments_ruby/models/order_cancel_response.rbi +42 -0
  85. data/rbi/cloudpayments_ruby/models/order_create_params.rbi +219 -0
  86. data/rbi/cloudpayments_ruby/models/order_create_response.rbi +255 -0
  87. data/rbi/cloudpayments_ruby/models/payment_auth_params.rbi +323 -0
  88. data/rbi/cloudpayments_ruby/models/payment_auth_response.rbi +278 -0
  89. data/rbi/cloudpayments_ruby/models/payment_charge_params.rbi +325 -0
  90. data/rbi/cloudpayments_ruby/models/payment_charge_response.rbi +278 -0
  91. data/rbi/cloudpayments_ruby/models/payment_confirm_params.rbi +65 -0
  92. data/rbi/cloudpayments_ruby/models/payment_confirm_response.rbi +42 -0
  93. data/rbi/cloudpayments_ruby/models/payment_post3ds_params.rbi +54 -0
  94. data/rbi/cloudpayments_ruby/models/payment_post3ds_response.rbi +63 -0
  95. data/rbi/cloudpayments_ruby/models/payment_refund_params.rbi +65 -0
  96. data/rbi/cloudpayments_ruby/models/payment_refund_response.rbi +97 -0
  97. data/rbi/cloudpayments_ruby/models/payment_void_params.rbi +46 -0
  98. data/rbi/cloudpayments_ruby/models/payment_void_response.rbi +42 -0
  99. data/rbi/cloudpayments_ruby/models/payments/token_auth_params.rbi +306 -0
  100. data/rbi/cloudpayments_ruby/models/payments/token_auth_response.rbi +65 -0
  101. data/rbi/cloudpayments_ruby/models/payments/token_charge_params.rbi +307 -0
  102. data/rbi/cloudpayments_ruby/models/payments/token_charge_response.rbi +65 -0
  103. data/rbi/cloudpayments_ruby/models/subscription.rbi +260 -0
  104. data/rbi/cloudpayments_ruby/models/subscription_cancel_params.rbi +43 -0
  105. data/rbi/cloudpayments_ruby/models/subscription_cancel_response.rbi +42 -0
  106. data/rbi/cloudpayments_ruby/models/subscription_create_params.rbi +143 -0
  107. data/rbi/cloudpayments_ruby/models/subscription_create_response.rbi +63 -0
  108. data/rbi/cloudpayments_ruby/models/subscription_find_params.rbi +46 -0
  109. data/rbi/cloudpayments_ruby/models/subscription_find_response.rbi +65 -0
  110. data/rbi/cloudpayments_ruby/models/subscription_get_params.rbi +43 -0
  111. data/rbi/cloudpayments_ruby/models/subscription_get_response.rbi +63 -0
  112. data/rbi/cloudpayments_ruby/models/subscription_update_params.rbi +156 -0
  113. data/rbi/cloudpayments_ruby/models/subscription_update_response.rbi +63 -0
  114. data/rbi/cloudpayments_ruby/models/transaction.rbi +594 -0
  115. data/rbi/cloudpayments_ruby/models.rbi +35 -0
  116. data/rbi/cloudpayments_ruby/request_options.rbi +64 -0
  117. data/rbi/cloudpayments_ruby/resources/orders.rbi +95 -0
  118. data/rbi/cloudpayments_ruby/resources/payments/tokens.rbi +117 -0
  119. data/rbi/cloudpayments_ruby/resources/payments.rbi +214 -0
  120. data/rbi/cloudpayments_ruby/resources/subscriptions.rbi +159 -0
  121. data/rbi/cloudpayments_ruby/version.rbi +5 -0
  122. data/sig/cloudpayments_ruby/client.rbs +33 -0
  123. data/sig/cloudpayments_ruby/errors.rbs +117 -0
  124. data/sig/cloudpayments_ruby/file_part.rbs +21 -0
  125. data/sig/cloudpayments_ruby/internal/transport/base_client.rbs +133 -0
  126. data/sig/cloudpayments_ruby/internal/transport/pooled_net_requester.rbs +48 -0
  127. data/sig/cloudpayments_ruby/internal/type/array_of.rbs +48 -0
  128. data/sig/cloudpayments_ruby/internal/type/base_model.rbs +106 -0
  129. data/sig/cloudpayments_ruby/internal/type/base_page.rbs +24 -0
  130. data/sig/cloudpayments_ruby/internal/type/boolean.rbs +26 -0
  131. data/sig/cloudpayments_ruby/internal/type/converter.rbs +79 -0
  132. data/sig/cloudpayments_ruby/internal/type/enum.rbs +32 -0
  133. data/sig/cloudpayments_ruby/internal/type/file_input.rbs +25 -0
  134. data/sig/cloudpayments_ruby/internal/type/hash_of.rbs +48 -0
  135. data/sig/cloudpayments_ruby/internal/type/request_parameters.rbs +20 -0
  136. data/sig/cloudpayments_ruby/internal/type/union.rbs +52 -0
  137. data/sig/cloudpayments_ruby/internal/type/unknown.rbs +26 -0
  138. data/sig/cloudpayments_ruby/internal/util.rbs +185 -0
  139. data/sig/cloudpayments_ruby/internal.rbs +10 -0
  140. data/sig/cloudpayments_ruby/models/order_cancel_params.rbs +23 -0
  141. data/sig/cloudpayments_ruby/models/order_cancel_response.rbs +17 -0
  142. data/sig/cloudpayments_ruby/models/order_create_params.rbs +136 -0
  143. data/sig/cloudpayments_ruby/models/order_create_response.rbs +146 -0
  144. data/sig/cloudpayments_ruby/models/payment_auth_params.rbs +197 -0
  145. data/sig/cloudpayments_ruby/models/payment_auth_response.rbs +151 -0
  146. data/sig/cloudpayments_ruby/models/payment_charge_params.rbs +197 -0
  147. data/sig/cloudpayments_ruby/models/payment_charge_response.rbs +151 -0
  148. data/sig/cloudpayments_ruby/models/payment_confirm_params.rbs +34 -0
  149. data/sig/cloudpayments_ruby/models/payment_confirm_response.rbs +17 -0
  150. data/sig/cloudpayments_ruby/models/payment_post3ds_params.rbs +28 -0
  151. data/sig/cloudpayments_ruby/models/payment_post3ds_response.rbs +32 -0
  152. data/sig/cloudpayments_ruby/models/payment_refund_params.rbs +34 -0
  153. data/sig/cloudpayments_ruby/models/payment_refund_response.rbs +46 -0
  154. data/sig/cloudpayments_ruby/models/payment_void_params.rbs +24 -0
  155. data/sig/cloudpayments_ruby/models/payment_void_response.rbs +17 -0
  156. data/sig/cloudpayments_ruby/models/payments/token_auth_params.rbs +183 -0
  157. data/sig/cloudpayments_ruby/models/payments/token_auth_response.rbs +38 -0
  158. data/sig/cloudpayments_ruby/models/payments/token_charge_params.rbs +183 -0
  159. data/sig/cloudpayments_ruby/models/payments/token_charge_response.rbs +38 -0
  160. data/sig/cloudpayments_ruby/models/subscription.rbs +158 -0
  161. data/sig/cloudpayments_ruby/models/subscription_cancel_params.rbs +23 -0
  162. data/sig/cloudpayments_ruby/models/subscription_cancel_response.rbs +17 -0
  163. data/sig/cloudpayments_ruby/models/subscription_create_params.rbs +87 -0
  164. data/sig/cloudpayments_ruby/models/subscription_create_response.rbs +32 -0
  165. data/sig/cloudpayments_ruby/models/subscription_find_params.rbs +24 -0
  166. data/sig/cloudpayments_ruby/models/subscription_find_response.rbs +36 -0
  167. data/sig/cloudpayments_ruby/models/subscription_get_params.rbs +23 -0
  168. data/sig/cloudpayments_ruby/models/subscription_get_response.rbs +32 -0
  169. data/sig/cloudpayments_ruby/models/subscription_update_params.rbs +96 -0
  170. data/sig/cloudpayments_ruby/models/subscription_update_response.rbs +32 -0
  171. data/sig/cloudpayments_ruby/models/transaction.rbs +369 -0
  172. data/sig/cloudpayments_ruby/models.rbs +33 -0
  173. data/sig/cloudpayments_ruby/request_options.rbs +36 -0
  174. data/sig/cloudpayments_ruby/resources/orders.rbs +33 -0
  175. data/sig/cloudpayments_ruby/resources/payments/tokens.rbs +41 -0
  176. data/sig/cloudpayments_ruby/resources/payments.rbs +70 -0
  177. data/sig/cloudpayments_ruby/resources/subscriptions.rbs +53 -0
  178. data/sig/cloudpayments_ruby/version.rbs +3 -0
  179. 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,5 @@
1
+ # typed: strong
2
+
3
+ module CloudpaymentsRuby
4
+ VERSION = T.let(T.unsafe(nil), String)
5
+ 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