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,95 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CloudpaymentsRuby
4
+ module Resources
5
+ class Orders
6
+ # Создание счёта для отправки по почте
7
+ #
8
+ # Создаёт ссылку на оплату и при необходимости отправляет уведомление плательщику
9
+ # по email, SMS или Viber.
10
+ #
11
+ # @overload create(amount:, description:, account_id: nil, culture_name: nil, currency: nil, email: nil, fail_redirect_url: nil, invoice_id: nil, json_data: nil, offer_uri: nil, phone: nil, require_confirmation: nil, send_email: nil, send_sms: nil, send_viber: nil, subscription_behavior: nil, success_redirect_url: nil, request_options: {})
12
+ #
13
+ # @param amount [Float] Сумма платежа
14
+ #
15
+ # @param description [String] Описание платежа
16
+ #
17
+ # @param account_id [String] Идентификатор пользователя
18
+ #
19
+ # @param culture_name [String] Язык уведомлений (ru-RU, en-US)
20
+ #
21
+ # @param currency [String] Валюта (RUB по умолчанию)
22
+ #
23
+ # @param email [String] Email плательщика
24
+ #
25
+ # @param fail_redirect_url [String] URL редиректа при неуспешной оплате
26
+ #
27
+ # @param invoice_id [String] Номер заказа в системе мерчанта
28
+ #
29
+ # @param json_data [Object] Дополнительные данные (JSON)
30
+ #
31
+ # @param offer_uri [String] Ссылка на оферту
32
+ #
33
+ # @param phone [String] Телефон плательщика
34
+ #
35
+ # @param require_confirmation [Boolean] Требуется подтверждение (двухстадийная схема)
36
+ #
37
+ # @param send_email [Boolean] Отправить ссылку на email
38
+ #
39
+ # @param send_sms [Boolean] Отправить ссылку по SMS
40
+ #
41
+ # @param send_viber [Boolean] Отправить ссылку через Viber
42
+ #
43
+ # @param subscription_behavior [String] Поведение подписки: CreateWeekly, CreateMonthly
44
+ #
45
+ # @param success_redirect_url [String] URL редиректа при успешной оплате
46
+ #
47
+ # @param request_options [CloudpaymentsRuby::RequestOptions, Hash{Symbol=>Object}, nil]
48
+ #
49
+ # @return [CloudpaymentsRuby::Models::OrderCreateResponse]
50
+ #
51
+ # @see CloudpaymentsRuby::Models::OrderCreateParams
52
+ def create(params)
53
+ parsed, options = CloudpaymentsRuby::OrderCreateParams.dump_request(params)
54
+ @client.request(
55
+ method: :post,
56
+ path: "orders/create",
57
+ body: parsed,
58
+ model: CloudpaymentsRuby::Models::OrderCreateResponse,
59
+ options: options
60
+ )
61
+ end
62
+
63
+ # Отмена созданного счёта
64
+ #
65
+ # Отменяет ранее созданный счёт. После отмены оплата по ссылке невозможна.
66
+ #
67
+ # @overload cancel(id:, request_options: {})
68
+ #
69
+ # @param id [String] Идентификатор заказа
70
+ #
71
+ # @param request_options [CloudpaymentsRuby::RequestOptions, Hash{Symbol=>Object}, nil]
72
+ #
73
+ # @return [CloudpaymentsRuby::Models::OrderCancelResponse]
74
+ #
75
+ # @see CloudpaymentsRuby::Models::OrderCancelParams
76
+ def cancel(params)
77
+ parsed, options = CloudpaymentsRuby::OrderCancelParams.dump_request(params)
78
+ @client.request(
79
+ method: :post,
80
+ path: "orders/cancel",
81
+ body: parsed,
82
+ model: CloudpaymentsRuby::Models::OrderCancelResponse,
83
+ options: options
84
+ )
85
+ end
86
+
87
+ # @api private
88
+ #
89
+ # @param client [CloudpaymentsRuby::Client]
90
+ def initialize(client:)
91
+ @client = client
92
+ end
93
+ end
94
+ end
95
+ end
@@ -0,0 +1,110 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CloudpaymentsRuby
4
+ module Resources
5
+ class Payments
6
+ class Tokens
7
+ # Двухстадийная оплата по токену (рекарринг)
8
+ #
9
+ # Выполняет авторизацию (холдирование средств) по сохранённому токену карты. Для
10
+ # списания необходимо вызвать метод confirm.
11
+ #
12
+ # @overload auth(account_id:, amount:, token:, tr_initiator_code:, currency: nil, description: nil, email: nil, invoice_id: nil, ip_address: nil, json_data: nil, payer: nil, payment_scheduled: nil, request_options: {})
13
+ #
14
+ # @param account_id [String] Идентификатор пользователя
15
+ #
16
+ # @param amount [Float] Сумма платежа (до 2 знаков после точки)
17
+ #
18
+ # @param token [String] Токен карты
19
+ #
20
+ # @param tr_initiator_code [Integer] Признак инициатора транзакции: 0 — мерчант, 1 — держатель карты
21
+ #
22
+ # @param currency [String] Валюта (RUB по умолчанию)
23
+ #
24
+ # @param description [String] Описание платежа
25
+ #
26
+ # @param email [String] Email плательщика
27
+ #
28
+ # @param invoice_id [String] Номер заказа
29
+ #
30
+ # @param ip_address [String] IP-адрес плательщика
31
+ #
32
+ # @param json_data [Object] Дополнительные данные (JSON)
33
+ #
34
+ # @param payer [CloudpaymentsRuby::Models::Payments::TokenAuthParams::Payer] Информация о плательщике
35
+ #
36
+ # @param payment_scheduled [Integer] Признак регулярного платежа: 0 — нет, 1 — да
37
+ #
38
+ # @param request_options [CloudpaymentsRuby::RequestOptions, Hash{Symbol=>Object}, nil]
39
+ #
40
+ # @return [CloudpaymentsRuby::Models::Payments::TokenAuthResponse]
41
+ #
42
+ # @see CloudpaymentsRuby::Models::Payments::TokenAuthParams
43
+ def auth(params)
44
+ parsed, options = CloudpaymentsRuby::Payments::TokenAuthParams.dump_request(params)
45
+ @client.request(
46
+ method: :post,
47
+ path: "payments/tokens/auth",
48
+ body: parsed,
49
+ model: CloudpaymentsRuby::Models::Payments::TokenAuthResponse,
50
+ options: options
51
+ )
52
+ end
53
+
54
+ # Одностадийная оплата по токену (рекарринг)
55
+ #
56
+ # Выполняет оплату в одну стадию по сохранённому токену карты. Токен выдаётся
57
+ # системой после первой оплаты по криптограмме.
58
+ #
59
+ # @overload charge(account_id:, amount:, token:, tr_initiator_code:, currency: nil, description: nil, email: nil, invoice_id: nil, ip_address: nil, json_data: nil, payer: nil, payment_scheduled: nil, request_options: {})
60
+ #
61
+ # @param account_id [String] Идентификатор пользователя
62
+ #
63
+ # @param amount [Float] Сумма платежа (до 2 знаков после точки)
64
+ #
65
+ # @param token [String] Токен карты
66
+ #
67
+ # @param tr_initiator_code [Integer] Признак инициатора транзакции: 0 — мерчант, 1 — держатель карты
68
+ #
69
+ # @param currency [String] Валюта (RUB по умолчанию)
70
+ #
71
+ # @param description [String] Описание платежа
72
+ #
73
+ # @param email [String] Email плательщика
74
+ #
75
+ # @param invoice_id [String] Номер заказа
76
+ #
77
+ # @param ip_address [String] IP-адрес плательщика
78
+ #
79
+ # @param json_data [Object] Дополнительные данные (JSON)
80
+ #
81
+ # @param payer [CloudpaymentsRuby::Models::Payments::TokenChargeParams::Payer] Информация о плательщике
82
+ #
83
+ # @param payment_scheduled [Integer] Признак регулярного платежа: 0 — нет, 1 — да
84
+ #
85
+ # @param request_options [CloudpaymentsRuby::RequestOptions, Hash{Symbol=>Object}, nil]
86
+ #
87
+ # @return [CloudpaymentsRuby::Models::Payments::TokenChargeResponse]
88
+ #
89
+ # @see CloudpaymentsRuby::Models::Payments::TokenChargeParams
90
+ def charge(params)
91
+ parsed, options = CloudpaymentsRuby::Payments::TokenChargeParams.dump_request(params)
92
+ @client.request(
93
+ method: :post,
94
+ path: "payments/tokens/charge",
95
+ body: parsed,
96
+ model: CloudpaymentsRuby::Models::Payments::TokenChargeResponse,
97
+ options: options
98
+ )
99
+ end
100
+
101
+ # @api private
102
+ #
103
+ # @param client [CloudpaymentsRuby::Client]
104
+ def initialize(client:)
105
+ @client = client
106
+ end
107
+ end
108
+ end
109
+ end
110
+ end
@@ -0,0 +1,232 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CloudpaymentsRuby
4
+ module Resources
5
+ class Payments
6
+ # @return [CloudpaymentsRuby::Resources::Payments::Tokens]
7
+ attr_reader :tokens
8
+
9
+ # Двухстадийная оплата по криптограмме
10
+ #
11
+ # Выполняет только авторизацию (холдирование средств). Для списания необходимо
12
+ # вызвать метод confirm. При необходимости 3-D Secure аутентификации возвращает
13
+ # данные для перенаправления на ACS.
14
+ #
15
+ # @overload auth(amount:, card_cryptogram_packet:, ip_address:, account_id: nil, culture_name: nil, currency: nil, description: nil, email: nil, invoice_id: nil, json_data: nil, name: nil, payer: nil, payment_url: nil, save_card: nil, request_options: {})
16
+ #
17
+ # @param amount [Float] Сумма платежа (до 2 знаков после точки)
18
+ #
19
+ # @param card_cryptogram_packet [String] Криптограмма платежных данных
20
+ #
21
+ # @param ip_address [String] IP-адрес плательщика
22
+ #
23
+ # @param account_id [String] Идентификатор пользователя
24
+ #
25
+ # @param culture_name [String] Язык уведомлений (ru-RU, en-US)
26
+ #
27
+ # @param currency [String] Валюта (RUB по умолчанию)
28
+ #
29
+ # @param description [String] Описание платежа
30
+ #
31
+ # @param email [String] Email плательщика
32
+ #
33
+ # @param invoice_id [String] Номер заказа
34
+ #
35
+ # @param json_data [Object] Дополнительные данные (JSON)
36
+ #
37
+ # @param name [String] Имя держателя карты (латиница)
38
+ #
39
+ # @param payer [CloudpaymentsRuby::Models::PaymentAuthParams::Payer] Информация о плательщике
40
+ #
41
+ # @param payment_url [String] URL сайта, с которого выполняется оплата
42
+ #
43
+ # @param save_card [Boolean] Сохранить токен карты для повторных платежей
44
+ #
45
+ # @param request_options [CloudpaymentsRuby::RequestOptions, Hash{Symbol=>Object}, nil]
46
+ #
47
+ # @return [CloudpaymentsRuby::Models::PaymentAuthResponse::UnionMember0, CloudpaymentsRuby::Models::PaymentAuthResponse::UnionMember1]
48
+ #
49
+ # @see CloudpaymentsRuby::Models::PaymentAuthParams
50
+ def auth(params)
51
+ parsed, options = CloudpaymentsRuby::PaymentAuthParams.dump_request(params)
52
+ @client.request(
53
+ method: :post,
54
+ path: "payments/cards/auth",
55
+ body: parsed,
56
+ model: CloudpaymentsRuby::Models::PaymentAuthResponse,
57
+ options: options
58
+ )
59
+ end
60
+
61
+ # Одностадийная оплата по криптограмме
62
+ #
63
+ # Выполняет оплату в одну стадию - авторизация и списание происходят одновременно.
64
+ # При необходимости 3-D Secure аутентификации возвращает данные для
65
+ # перенаправления на ACS.
66
+ #
67
+ # @overload charge(amount:, card_cryptogram_packet:, ip_address:, account_id: nil, culture_name: nil, currency: nil, description: nil, email: nil, invoice_id: nil, json_data: nil, name: nil, payer: nil, payment_url: nil, save_card: nil, request_options: {})
68
+ #
69
+ # @param amount [Float] Сумма платежа (до 2 знаков после точки)
70
+ #
71
+ # @param card_cryptogram_packet [String] Криптограмма платежных данных
72
+ #
73
+ # @param ip_address [String] IP-адрес плательщика
74
+ #
75
+ # @param account_id [String] Идентификатор пользователя
76
+ #
77
+ # @param culture_name [String] Язык уведомлений (ru-RU, en-US)
78
+ #
79
+ # @param currency [String] Валюта (RUB по умолчанию)
80
+ #
81
+ # @param description [String] Описание платежа
82
+ #
83
+ # @param email [String] Email плательщика
84
+ #
85
+ # @param invoice_id [String] Номер заказа
86
+ #
87
+ # @param json_data [Object] Дополнительные данные (JSON)
88
+ #
89
+ # @param name [String] Имя держателя карты (латиница)
90
+ #
91
+ # @param payer [CloudpaymentsRuby::Models::PaymentChargeParams::Payer] Информация о плательщике
92
+ #
93
+ # @param payment_url [String] URL сайта, с которого выполняется оплата
94
+ #
95
+ # @param save_card [Boolean] Сохранить токен карты для повторных платежей
96
+ #
97
+ # @param request_options [CloudpaymentsRuby::RequestOptions, Hash{Symbol=>Object}, nil]
98
+ #
99
+ # @return [CloudpaymentsRuby::Models::PaymentChargeResponse::UnionMember0, CloudpaymentsRuby::Models::PaymentChargeResponse::UnionMember1]
100
+ #
101
+ # @see CloudpaymentsRuby::Models::PaymentChargeParams
102
+ def charge(params)
103
+ parsed, options = CloudpaymentsRuby::PaymentChargeParams.dump_request(params)
104
+ @client.request(
105
+ method: :post,
106
+ path: "payments/cards/charge",
107
+ body: parsed,
108
+ model: CloudpaymentsRuby::Models::PaymentChargeResponse,
109
+ options: options
110
+ )
111
+ end
112
+
113
+ # Подтверждение двухстадийного платежа
114
+ #
115
+ # Подтверждает ранее авторизованный платеж и инициирует списание средств. Сумма
116
+ # подтверждения может быть меньше или равна сумме авторизации.
117
+ #
118
+ # @overload confirm(amount:, transaction_id:, json_data: nil, request_options: {})
119
+ #
120
+ # @param amount [Float] Сумма подтверждения
121
+ #
122
+ # @param transaction_id [Integer] ID транзакции
123
+ #
124
+ # @param json_data [Object] Дополнительные данные (JSON)
125
+ #
126
+ # @param request_options [CloudpaymentsRuby::RequestOptions, Hash{Symbol=>Object}, nil]
127
+ #
128
+ # @return [CloudpaymentsRuby::Models::PaymentConfirmResponse]
129
+ #
130
+ # @see CloudpaymentsRuby::Models::PaymentConfirmParams
131
+ def confirm(params)
132
+ parsed, options = CloudpaymentsRuby::PaymentConfirmParams.dump_request(params)
133
+ @client.request(
134
+ method: :post,
135
+ path: "payments/confirm",
136
+ body: parsed,
137
+ model: CloudpaymentsRuby::Models::PaymentConfirmResponse,
138
+ options: options
139
+ )
140
+ end
141
+
142
+ # Завершение 3-D Secure аутентификации
143
+ #
144
+ # Вызывается после возврата плательщика с ACS. Параметр TransactionId
145
+ # соответствует MD, PaRes получается от ACS.
146
+ #
147
+ # @overload post3ds(pa_res:, transaction_id:, request_options: {})
148
+ #
149
+ # @param pa_res [String] Результат 3-D Secure аутентификации
150
+ #
151
+ # @param transaction_id [Integer] ID транзакции (значение параметра MD)
152
+ #
153
+ # @param request_options [CloudpaymentsRuby::RequestOptions, Hash{Symbol=>Object}, nil]
154
+ #
155
+ # @return [CloudpaymentsRuby::Models::PaymentPost3dsResponse]
156
+ #
157
+ # @see CloudpaymentsRuby::Models::PaymentPost3dsParams
158
+ def post3ds(params)
159
+ parsed, options = CloudpaymentsRuby::PaymentPost3dsParams.dump_request(params)
160
+ @client.request(
161
+ method: :post,
162
+ path: "payments/cards/post3ds",
163
+ body: parsed,
164
+ model: CloudpaymentsRuby::Models::PaymentPost3dsResponse,
165
+ options: options
166
+ )
167
+ end
168
+
169
+ # Возврат средств
170
+ #
171
+ # Возвращает средства по завершенному платежу. Сумма возврата может быть меньше
172
+ # или равна сумме платежа. Возможны частичные возвраты.
173
+ #
174
+ # @overload refund(amount:, transaction_id:, json_data: nil, request_options: {})
175
+ #
176
+ # @param amount [Float] Сумма возврата
177
+ #
178
+ # @param transaction_id [Integer] ID транзакции оплаты
179
+ #
180
+ # @param json_data [Object] Дополнительные данные (JSON)
181
+ #
182
+ # @param request_options [CloudpaymentsRuby::RequestOptions, Hash{Symbol=>Object}, nil]
183
+ #
184
+ # @return [CloudpaymentsRuby::Models::PaymentRefundResponse]
185
+ #
186
+ # @see CloudpaymentsRuby::Models::PaymentRefundParams
187
+ def refund(params)
188
+ parsed, options = CloudpaymentsRuby::PaymentRefundParams.dump_request(params)
189
+ @client.request(
190
+ method: :post,
191
+ path: "payments/refund",
192
+ body: parsed,
193
+ model: CloudpaymentsRuby::Models::PaymentRefundResponse,
194
+ options: options
195
+ )
196
+ end
197
+
198
+ # Отмена платежа
199
+ #
200
+ # Отменяет авторизованный платеж до его подтверждения. Применимо только для
201
+ # двухстадийных платежей.
202
+ #
203
+ # @overload void(transaction_id:, request_options: {})
204
+ #
205
+ # @param transaction_id [Integer] ID транзакции
206
+ #
207
+ # @param request_options [CloudpaymentsRuby::RequestOptions, Hash{Symbol=>Object}, nil]
208
+ #
209
+ # @return [CloudpaymentsRuby::Models::PaymentVoidResponse]
210
+ #
211
+ # @see CloudpaymentsRuby::Models::PaymentVoidParams
212
+ def void(params)
213
+ parsed, options = CloudpaymentsRuby::PaymentVoidParams.dump_request(params)
214
+ @client.request(
215
+ method: :post,
216
+ path: "payments/void",
217
+ body: parsed,
218
+ model: CloudpaymentsRuby::Models::PaymentVoidResponse,
219
+ options: options
220
+ )
221
+ end
222
+
223
+ # @api private
224
+ #
225
+ # @param client [CloudpaymentsRuby::Client]
226
+ def initialize(client:)
227
+ @client = client
228
+ @tokens = CloudpaymentsRuby::Resources::Payments::Tokens.new(client: client)
229
+ end
230
+ end
231
+ end
232
+ end
@@ -0,0 +1,178 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CloudpaymentsRuby
4
+ module Resources
5
+ class Subscriptions
6
+ # Создание подписки на рекуррентные платежи
7
+ #
8
+ # Создаёт план подписки для автоматического списания средств по указанному
9
+ # расписанию с использованием токена карты.
10
+ #
11
+ # @overload create(account_id:, amount:, currency:, description:, interval:, period:, require_confirmation:, start_date:, token:, customer_receipt: nil, email: nil, max_periods: nil, request_options: {})
12
+ #
13
+ # @param account_id [String] Идентификатор пользователя
14
+ #
15
+ # @param amount [Float] Сумма платежа
16
+ #
17
+ # @param currency [String] Валюта
18
+ #
19
+ # @param description [String] Описание платежа
20
+ #
21
+ # @param interval [String] Интервал: Day, Week, Month
22
+ #
23
+ # @param period [Integer] Период (в сочетании с Interval)
24
+ #
25
+ # @param require_confirmation [Boolean] Требуется подтверждение (двухстадийная схема)
26
+ #
27
+ # @param start_date [Time] Дата и время первого платежа (UTC)
28
+ #
29
+ # @param token [String] Токен карты
30
+ #
31
+ # @param customer_receipt [Object] Данные для онлайн-чека
32
+ #
33
+ # @param email [String] Email плательщика
34
+ #
35
+ # @param max_periods [Integer] Максимальное количество платежей
36
+ #
37
+ # @param request_options [CloudpaymentsRuby::RequestOptions, Hash{Symbol=>Object}, nil]
38
+ #
39
+ # @return [CloudpaymentsRuby::Models::SubscriptionCreateResponse]
40
+ #
41
+ # @see CloudpaymentsRuby::Models::SubscriptionCreateParams
42
+ def create(params)
43
+ parsed, options = CloudpaymentsRuby::SubscriptionCreateParams.dump_request(params)
44
+ @client.request(
45
+ method: :post,
46
+ path: "subscriptions/create",
47
+ body: parsed,
48
+ model: CloudpaymentsRuby::Models::SubscriptionCreateResponse,
49
+ options: options
50
+ )
51
+ end
52
+
53
+ # Изменение подписки на рекуррентные платежи
54
+ #
55
+ # Изменяет параметры существующей подписки. Если подписка была отменена или
56
+ # завершена, изменение любого атрибута приведёт к её реактивации.
57
+ #
58
+ # @overload update(id:, amount: nil, culture_name: nil, currency: nil, customer_receipt: nil, description: nil, interval: nil, max_periods: nil, period: nil, require_confirmation: nil, start_date: nil, request_options: {})
59
+ #
60
+ # @param id [String] Идентификатор подписки
61
+ #
62
+ # @param amount [Float] Сумма платежа
63
+ #
64
+ # @param culture_name [String] Язык уведомлений (ru-RU, en-US)
65
+ #
66
+ # @param currency [String] Валюта
67
+ #
68
+ # @param customer_receipt [Object] Данные для онлайн-чека
69
+ #
70
+ # @param description [String] Описание платежа
71
+ #
72
+ # @param interval [String] Интервал: Day, Week, Month
73
+ #
74
+ # @param max_periods [Integer] Максимальное количество платежей
75
+ #
76
+ # @param period [Integer] Период
77
+ #
78
+ # @param require_confirmation [Boolean] Требуется подтверждение
79
+ #
80
+ # @param start_date [Time] Дата и время следующего платежа (UTC)
81
+ #
82
+ # @param request_options [CloudpaymentsRuby::RequestOptions, Hash{Symbol=>Object}, nil]
83
+ #
84
+ # @return [CloudpaymentsRuby::Models::SubscriptionUpdateResponse]
85
+ #
86
+ # @see CloudpaymentsRuby::Models::SubscriptionUpdateParams
87
+ def update(params)
88
+ parsed, options = CloudpaymentsRuby::SubscriptionUpdateParams.dump_request(params)
89
+ @client.request(
90
+ method: :post,
91
+ path: "subscriptions/update",
92
+ body: parsed,
93
+ model: CloudpaymentsRuby::Models::SubscriptionUpdateResponse,
94
+ options: options
95
+ )
96
+ end
97
+
98
+ # Отмена подписки на рекуррентные платежи
99
+ #
100
+ # Отменяет активную подписку. Дальнейшие автоматические списания прекращаются.
101
+ #
102
+ # @overload cancel(id:, request_options: {})
103
+ #
104
+ # @param id [String] Идентификатор подписки
105
+ #
106
+ # @param request_options [CloudpaymentsRuby::RequestOptions, Hash{Symbol=>Object}, nil]
107
+ #
108
+ # @return [CloudpaymentsRuby::Models::SubscriptionCancelResponse]
109
+ #
110
+ # @see CloudpaymentsRuby::Models::SubscriptionCancelParams
111
+ def cancel(params)
112
+ parsed, options = CloudpaymentsRuby::SubscriptionCancelParams.dump_request(params)
113
+ @client.request(
114
+ method: :post,
115
+ path: "subscriptions/cancel",
116
+ body: parsed,
117
+ model: CloudpaymentsRuby::Models::SubscriptionCancelResponse,
118
+ options: options
119
+ )
120
+ end
121
+
122
+ # Поиск подписок
123
+ #
124
+ # Возвращает список подписок для указанного пользователя.
125
+ #
126
+ # @overload find(account_id:, request_options: {})
127
+ #
128
+ # @param account_id [String] Идентификатор пользователя
129
+ #
130
+ # @param request_options [CloudpaymentsRuby::RequestOptions, Hash{Symbol=>Object}, nil]
131
+ #
132
+ # @return [CloudpaymentsRuby::Models::SubscriptionFindResponse]
133
+ #
134
+ # @see CloudpaymentsRuby::Models::SubscriptionFindParams
135
+ def find(params)
136
+ parsed, options = CloudpaymentsRuby::SubscriptionFindParams.dump_request(params)
137
+ @client.request(
138
+ method: :post,
139
+ path: "subscriptions/find",
140
+ body: parsed,
141
+ model: CloudpaymentsRuby::Models::SubscriptionFindResponse,
142
+ options: options
143
+ )
144
+ end
145
+
146
+ # Запрос информации о подписке
147
+ #
148
+ # Возвращает текущий статус и параметры подписки.
149
+ #
150
+ # @overload get(id:, request_options: {})
151
+ #
152
+ # @param id [String] Идентификатор подписки
153
+ #
154
+ # @param request_options [CloudpaymentsRuby::RequestOptions, Hash{Symbol=>Object}, nil]
155
+ #
156
+ # @return [CloudpaymentsRuby::Models::SubscriptionGetResponse]
157
+ #
158
+ # @see CloudpaymentsRuby::Models::SubscriptionGetParams
159
+ def get(params)
160
+ parsed, options = CloudpaymentsRuby::SubscriptionGetParams.dump_request(params)
161
+ @client.request(
162
+ method: :post,
163
+ path: "subscriptions/get",
164
+ body: parsed,
165
+ model: CloudpaymentsRuby::Models::SubscriptionGetResponse,
166
+ options: options
167
+ )
168
+ end
169
+
170
+ # @api private
171
+ #
172
+ # @param client [CloudpaymentsRuby::Client]
173
+ def initialize(client:)
174
+ @client = client
175
+ end
176
+ end
177
+ end
178
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CloudpaymentsRuby
4
+ VERSION = "0.4.1"
5
+ end