mangopay-v4 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +30 -0
  3. data/.rspec +4 -0
  4. data/.rubocop.yml +2 -0
  5. data/.travis.yml +13 -0
  6. data/Gemfile +2 -0
  7. data/LICENSE +20 -0
  8. data/README.md +380 -0
  9. data/bin/mangopay +9 -0
  10. data/lib/mangopay.rb +133 -0
  11. data/lib/mangopay/api/api.rb +9 -0
  12. data/lib/mangopay/api/api_methods.rb +137 -0
  13. data/lib/mangopay/api/auth_token_manager.rb +173 -0
  14. data/lib/mangopay/api/http_client.rb +325 -0
  15. data/lib/mangopay/api/service/bank_accounts.rb +146 -0
  16. data/lib/mangopay/api/service/cards.rb +152 -0
  17. data/lib/mangopay/api/service/client_wallets.rb +89 -0
  18. data/lib/mangopay/api/service/clients.rb +68 -0
  19. data/lib/mangopay/api/service/dispute_documents.rb +158 -0
  20. data/lib/mangopay/api/service/disputes.rb +187 -0
  21. data/lib/mangopay/api/service/e_money.rb +42 -0
  22. data/lib/mangopay/api/service/events.rb +47 -0
  23. data/lib/mangopay/api/service/hooks.rb +93 -0
  24. data/lib/mangopay/api/service/kyc_documents.rb +153 -0
  25. data/lib/mangopay/api/service/mandates.rb +142 -0
  26. data/lib/mangopay/api/service/oauth_tokens.rb +25 -0
  27. data/lib/mangopay/api/service/pay_ins.rb +260 -0
  28. data/lib/mangopay/api/service/pay_outs.rb +54 -0
  29. data/lib/mangopay/api/service/pre_authorizations.rb +69 -0
  30. data/lib/mangopay/api/service/refunds.rb +62 -0
  31. data/lib/mangopay/api/service/reports.rb +151 -0
  32. data/lib/mangopay/api/service/repudiations.rb +32 -0
  33. data/lib/mangopay/api/service/responses.rb +102 -0
  34. data/lib/mangopay/api/service/settlement_transfers.rb +55 -0
  35. data/lib/mangopay/api/service/transactions.rb +183 -0
  36. data/lib/mangopay/api/service/transfers.rb +54 -0
  37. data/lib/mangopay/api/service/ubo_declarations.rb +70 -0
  38. data/lib/mangopay/api/service/users.rb +163 -0
  39. data/lib/mangopay/api/service/wallets.rb +99 -0
  40. data/lib/mangopay/api/uri_provider.rb +35 -0
  41. data/lib/mangopay/common/json_tag_converter.rb +68 -0
  42. data/lib/mangopay/common/jsonifier.rb +249 -0
  43. data/lib/mangopay/common/log_provider.rb +34 -0
  44. data/lib/mangopay/common/rate_limit_interval.rb +17 -0
  45. data/lib/mangopay/common/read_only_fields.rb +27 -0
  46. data/lib/mangopay/common/response_error.rb +61 -0
  47. data/lib/mangopay/common/sort_direction.rb +15 -0
  48. data/lib/mangopay/common/sort_field.rb +13 -0
  49. data/lib/mangopay/common/template_url_options.rb +9 -0
  50. data/lib/mangopay/configuration.rb +39 -0
  51. data/lib/mangopay/environment.rb +66 -0
  52. data/lib/mangopay/model/address.rb +27 -0
  53. data/lib/mangopay/model/declared_ubo.rb +21 -0
  54. data/lib/mangopay/model/dispute_reason.rb +15 -0
  55. data/lib/mangopay/model/document_page_consult.rb +15 -0
  56. data/lib/mangopay/model/e_money.rb +18 -0
  57. data/lib/mangopay/model/entity/account/bank_account.rb +26 -0
  58. data/lib/mangopay/model/entity/account/ca_bank_account.rb +27 -0
  59. data/lib/mangopay/model/entity/account/gb_bank_account.rb +21 -0
  60. data/lib/mangopay/model/entity/account/iban_bank_account.rb +21 -0
  61. data/lib/mangopay/model/entity/account/other_bank_account.rb +24 -0
  62. data/lib/mangopay/model/entity/account/us_bank_account.rb +24 -0
  63. data/lib/mangopay/model/entity/card.rb +45 -0
  64. data/lib/mangopay/model/entity/card_registration.rb +43 -0
  65. data/lib/mangopay/model/entity/client.rb +63 -0
  66. data/lib/mangopay/model/entity/client_wallet.rb +23 -0
  67. data/lib/mangopay/model/entity/dispute.rb +50 -0
  68. data/lib/mangopay/model/entity/dispute_document.rb +29 -0
  69. data/lib/mangopay/model/entity/entity_base.rb +18 -0
  70. data/lib/mangopay/model/entity/hook.rb +26 -0
  71. data/lib/mangopay/model/entity/kyc_document.rb +28 -0
  72. data/lib/mangopay/model/entity/mandate.rb +51 -0
  73. data/lib/mangopay/model/entity/pay_in/bank_wire_direct_pay_in.rb +22 -0
  74. data/lib/mangopay/model/entity/pay_in/card_direct_pay_in.rb +33 -0
  75. data/lib/mangopay/model/entity/pay_in/card_pre_authorized_pay_in.rb +13 -0
  76. data/lib/mangopay/model/entity/pay_in/card_web_pay_in.rb +40 -0
  77. data/lib/mangopay/model/entity/pay_in/direct_debit_direct_pay_in.rb +23 -0
  78. data/lib/mangopay/model/entity/pay_in/direct_debit_web_pay_in.rb +38 -0
  79. data/lib/mangopay/model/entity/pay_in/pay_in.rb +16 -0
  80. data/lib/mangopay/model/entity/pay_out.rb +22 -0
  81. data/lib/mangopay/model/entity/pre_authorization.rb +68 -0
  82. data/lib/mangopay/model/entity/refund.rb +18 -0
  83. data/lib/mangopay/model/entity/report.rb +51 -0
  84. data/lib/mangopay/model/entity/repudiation.rb +18 -0
  85. data/lib/mangopay/model/entity/settlement_transfer.rb +17 -0
  86. data/lib/mangopay/model/entity/transaction.rb +52 -0
  87. data/lib/mangopay/model/entity/transfer.rb +13 -0
  88. data/lib/mangopay/model/entity/ubo_declaration.rb +32 -0
  89. data/lib/mangopay/model/entity/user/legal_user.rb +53 -0
  90. data/lib/mangopay/model/entity/user/natural_user.rb +50 -0
  91. data/lib/mangopay/model/entity/user/user.rb +18 -0
  92. data/lib/mangopay/model/entity/wallet.rb +28 -0
  93. data/lib/mangopay/model/enum/account_type.rb +24 -0
  94. data/lib/mangopay/model/enum/card_status.rb +15 -0
  95. data/lib/mangopay/model/enum/card_type.rb +33 -0
  96. data/lib/mangopay/model/enum/card_validity.rb +19 -0
  97. data/lib/mangopay/model/enum/country_iso.rb +759 -0
  98. data/lib/mangopay/model/enum/culture_code.rb +44 -0
  99. data/lib/mangopay/model/enum/currency_iso.rb +552 -0
  100. data/lib/mangopay/model/enum/declared_ubo_refused_reason_type.rb +16 -0
  101. data/lib/mangopay/model/enum/declared_ubo_status.rb +18 -0
  102. data/lib/mangopay/model/enum/deposit_type.rb +15 -0
  103. data/lib/mangopay/model/enum/direct_debit_type.rb +13 -0
  104. data/lib/mangopay/model/enum/dispute_doc_refused_reason_type.rb +25 -0
  105. data/lib/mangopay/model/enum/dispute_document_type.rb +23 -0
  106. data/lib/mangopay/model/enum/dispute_reason_type.rb +33 -0
  107. data/lib/mangopay/model/enum/dispute_status.rb +21 -0
  108. data/lib/mangopay/model/enum/dispute_type.rb +15 -0
  109. data/lib/mangopay/model/enum/document_status.rb +21 -0
  110. data/lib/mangopay/model/enum/download_format.rb +11 -0
  111. data/lib/mangopay/model/enum/event_type.rb +74 -0
  112. data/lib/mangopay/model/enum/funds_type.rb +15 -0
  113. data/lib/mangopay/model/enum/hook_status.rb +13 -0
  114. data/lib/mangopay/model/enum/hook_validity.rb +15 -0
  115. data/lib/mangopay/model/enum/income_range.rb +21 -0
  116. data/lib/mangopay/model/enum/kyc_doc_refused_reason_type.rb +37 -0
  117. data/lib/mangopay/model/enum/kyc_document_type.rb +19 -0
  118. data/lib/mangopay/model/enum/kyc_level.rb +13 -0
  119. data/lib/mangopay/model/enum/legal_person_type.rb +15 -0
  120. data/lib/mangopay/model/enum/mandate_culture_code.rb +23 -0
  121. data/lib/mangopay/model/enum/mandate_execution_type.rb +11 -0
  122. data/lib/mangopay/model/enum/mandate_scheme.rb +13 -0
  123. data/lib/mangopay/model/enum/mandate_status.rb +24 -0
  124. data/lib/mangopay/model/enum/mandate_type.rb +11 -0
  125. data/lib/mangopay/model/enum/natural_user_capacity.rb +15 -0
  126. data/lib/mangopay/model/enum/pay_in_execution_type.rb +18 -0
  127. data/lib/mangopay/model/enum/pay_in_payment_type.rb +21 -0
  128. data/lib/mangopay/model/enum/pay_out_payment_type.rb +11 -0
  129. data/lib/mangopay/model/enum/payment_status.rb +21 -0
  130. data/lib/mangopay/model/enum/person_type.rb +15 -0
  131. data/lib/mangopay/model/enum/platform_type.rb +23 -0
  132. data/lib/mangopay/model/enum/pre_authorization_execution_type.rb +11 -0
  133. data/lib/mangopay/model/enum/pre_authorization_status.rb +18 -0
  134. data/lib/mangopay/model/enum/refund_reason_type.rb +21 -0
  135. data/lib/mangopay/model/enum/report_status.rb +17 -0
  136. data/lib/mangopay/model/enum/report_type.rb +13 -0
  137. data/lib/mangopay/model/enum/secure_mode.rb +16 -0
  138. data/lib/mangopay/model/enum/transaction_nature.rb +17 -0
  139. data/lib/mangopay/model/enum/transaction_status.rb +15 -0
  140. data/lib/mangopay/model/enum/transaction_type.rb +15 -0
  141. data/lib/mangopay/model/enum/ubo_declaration_refused_reason_type.rb +19 -0
  142. data/lib/mangopay/model/enum/ubo_declaration_status.rb +21 -0
  143. data/lib/mangopay/model/event.rb +18 -0
  144. data/lib/mangopay/model/model.rb +194 -0
  145. data/lib/mangopay/model/money.rb +17 -0
  146. data/lib/mangopay/model/pay_in_web_extended_view.rb +31 -0
  147. data/lib/mangopay/model/refund_reason.rb +15 -0
  148. data/lib/mangopay/model/report_filter.rb +83 -0
  149. data/lib/mangopay/model/request/cancel_request.rb +16 -0
  150. data/lib/mangopay/model/request/complete_registration_request.rb +13 -0
  151. data/lib/mangopay/model/request/currency_request.rb +13 -0
  152. data/lib/mangopay/model/request/deactivation_request.rb +10 -0
  153. data/lib/mangopay/model/request/filter_request.rb +38 -0
  154. data/lib/mangopay/model/request/submit_document_request.rb +14 -0
  155. data/lib/mangopay/model/request/submit_ubo_declaration_request.rb +14 -0
  156. data/lib/mangopay/model/request/upload_file_request.rb +9 -0
  157. data/lib/mangopay/model/response_replica.rb +27 -0
  158. data/lib/mangopay/util/custom_formatter.rb +12 -0
  159. data/lib/mangopay/util/custom_logger.rb +34 -0
  160. data/lib/mangopay/util/enum.rb +52 -0
  161. data/lib/mangopay/util/file_encoder.rb +16 -0
  162. data/lib/mangopay/util/non_instantiable.rb +6 -0
  163. data/lib/mangopay/util/storage_strategy.rb +10 -0
  164. data/lib/mangopay/util/void_logger.rb +6 -0
  165. data/mangopay.gemspec +32 -0
  166. data/spec/context/address_context.rb +25 -0
  167. data/spec/context/bank_account_context.rb +138 -0
  168. data/spec/context/card_context.rb +46 -0
  169. data/spec/context/client_context.rb +45 -0
  170. data/spec/context/dispute_context.rb +37 -0
  171. data/spec/context/dispute_document_context.rb +20 -0
  172. data/spec/context/hook_context.rb +16 -0
  173. data/spec/context/kyc_document_context.rb +23 -0
  174. data/spec/context/mandate_context.rb +27 -0
  175. data/spec/context/pay_in_context.rb +225 -0
  176. data/spec/context/pay_out_context.rb +39 -0
  177. data/spec/context/pre_authorization_context.rb +41 -0
  178. data/spec/context/refund_context.rb +33 -0
  179. data/spec/context/report_context.rb +22 -0
  180. data/spec/context/repudiation_context.rb +19 -0
  181. data/spec/context/settlement_transfer_context.rb +28 -0
  182. data/spec/context/transfer_context.rb +51 -0
  183. data/spec/context/ubo_declaration_context.rb +25 -0
  184. data/spec/context/user_context.rb +83 -0
  185. data/spec/context/wallet_context.rb +53 -0
  186. data/spec/mangopay/bank_accounts_spec.rb +229 -0
  187. data/spec/mangopay/cards_spec.rb +135 -0
  188. data/spec/mangopay/client_wallets_spec.rb +148 -0
  189. data/spec/mangopay/clients_spec.rb +55 -0
  190. data/spec/mangopay/configuration_spec.rb +126 -0
  191. data/spec/mangopay/dispute_documents_spec.rb +174 -0
  192. data/spec/mangopay/disputes_spec.rb +265 -0
  193. data/spec/mangopay/e_money_spec.rb +38 -0
  194. data/spec/mangopay/events_spec.rb +50 -0
  195. data/spec/mangopay/hooks_spec.rb +71 -0
  196. data/spec/mangopay/kyc_documents_spec.rb +180 -0
  197. data/spec/mangopay/mandates_spec.rb +219 -0
  198. data/spec/mangopay/oauth_tokens_spec.rb +41 -0
  199. data/spec/mangopay/pay_ins_spec.rb +181 -0
  200. data/spec/mangopay/pay_outs_spec.rb +39 -0
  201. data/spec/mangopay/pre_authorizations_spec.rb +58 -0
  202. data/spec/mangopay/refunds_spec.rb +40 -0
  203. data/spec/mangopay/reports_spec.rb +121 -0
  204. data/spec/mangopay/responses_spec.rb +295 -0
  205. data/spec/mangopay/settlement_transfers_spec.rb +37 -0
  206. data/spec/mangopay/transactions_spec.rb +233 -0
  207. data/spec/mangopay/transfers_spec.rb +38 -0
  208. data/spec/mangopay/ubo_declarations_spec.rb +65 -0
  209. data/spec/mangopay/users_spec.rb +146 -0
  210. data/spec/mangopay/wallets_spec.rb +104 -0
  211. data/spec/resources/logo.png +0 -0
  212. data/spec/resources/test_pdf.pdf +0 -0
  213. data/spec/spec_helper.rb +72 -0
  214. metadata +349 -0
@@ -0,0 +1,142 @@
1
+ require_relative '../uri_provider'
2
+
3
+ module MangoApi
4
+
5
+ # Provides API method delegates concerning the +Mandate+ entity
6
+ module Mandates
7
+ class << self
8
+ include UriProvider
9
+
10
+ # Creates a new mandate entity.
11
+ #
12
+ # +Mandate+ properties:
13
+ # * Required
14
+ # * bank_account_id
15
+ # * culture
16
+ # * return_url
17
+ # * Optional
18
+ # * tag
19
+ #
20
+ # @param +mandate+ [Mandate] model object of mandate to be created
21
+ # @param +id_key+ [String] idempotency key for future response replication
22
+ # @return [Mandate] the newly-created Mandate entity object
23
+ def create(mandate, id_key = nil)
24
+ uri = provide_uri(:create_mandate)
25
+ response = HttpClient.post(uri, mandate, id_key)
26
+ parse response
27
+ end
28
+
29
+ # Retrieves a mandate entity.
30
+ #
31
+ # @param +id+ [String] ID of the mandate to retrieve
32
+ # @return [Mandate] the requested Mandate entity object
33
+ def get(id)
34
+ uri = provide_uri(:get_mandate, id)
35
+ response = HttpClient.get(uri)
36
+ parse response
37
+ end
38
+
39
+ # Cancels a mandate.
40
+ #
41
+ # @param +id+ [String] ID of the mandate to cancel
42
+ # @return [Mandate] the updated Mandate entity object
43
+ def cancel(id)
44
+ uri = provide_uri(:cancel_mandate, id)
45
+ response = HttpClient.put(uri)
46
+ parse response
47
+ end
48
+
49
+ # Retrieves mandate entity pages. Allows configuration
50
+ # of paging and sorting parameters by yielding a filtering
51
+ # object to a provided block. When no filters are specified,
52
+ # will retrieve the first page of 10 newest results.
53
+ #
54
+ # Allowed +FilterRequest+ params:
55
+ # * page
56
+ # * per_page
57
+ # * sort_field and sort_direction
58
+ # * before_date
59
+ # * after_date
60
+ #
61
+ # @return [Array] array of hashed mandate entities corresponding
62
+ # to provided filters
63
+ def all
64
+ uri = provide_uri(:get_mandates)
65
+ filter_request = nil
66
+ yield filter_request = FilterRequest.new if block_given?
67
+ results = HttpClient.get(uri, filter_request)
68
+ parse_results results
69
+ end
70
+
71
+ # Retrieves pages of mandate entities belonging to a certain user.
72
+ # Allows configuration of paging and sorting parameters by yielding
73
+ # a filtering object to a provided block. When no filters are
74
+ # specified, will retrieve the first page of 10 newest results
75
+ #
76
+ # Allowed +FilterRequest+ params:
77
+ # * page
78
+ # * per_page
79
+ # * sort_field and sort_direction
80
+ # * before_date
81
+ # * after_date
82
+ #
83
+ # @param +id+ [String] ID of the user whose mandates to retrieve
84
+ # @return [Array] array of hashed mandate entities corresponding
85
+ # to provided filters
86
+ def of_user(id)
87
+ uri = provide_uri(:get_users_mandates, id)
88
+ filter_request = nil
89
+ yield filter_request = FilterRequest.new if block_given?
90
+ results = HttpClient.get(uri, filter_request)
91
+ parse_results results
92
+ end
93
+
94
+ # Retrieves pages of mandate entities belonging to a certain bank account.
95
+ # Allows configuration of paging and sorting parameters by yielding
96
+ # a filtering object to a provided block. When no filters are
97
+ # specified, will retrieve the first page of 10 newest results
98
+ #
99
+ # Allowed +FilterRequest+ params:
100
+ # * page
101
+ # * per_page
102
+ # * sort_field and sort_direction
103
+ # * before_date
104
+ # * after_date
105
+ #
106
+ # @param +user_id+ [String] ID of the user owning the bank account
107
+ # @param +account_id+ [String] ID of the bank account whose mandates
108
+ # to retrieve
109
+ # @return [Array] array of hashed mandate entities corresponding
110
+ # to provided filters
111
+ def of_bank_account(user_id, account_id)
112
+ uri = provide_uri(:get_accounts_mandates, user_id, account_id)
113
+ filter_request = nil
114
+ yield filter_request = FilterRequest.new if block_given?
115
+ results = HttpClient.get(uri, filter_request)
116
+ parse_results results
117
+ end
118
+
119
+ private
120
+
121
+ # Parses an array of JSON-originating hashes into the corresponding
122
+ # Mandate entity objects.
123
+ #
124
+ # @param +results+ [Array] JSON-originating data hashes
125
+ # @return [Array] parsed Mandate entity objects
126
+ def parse_results(results)
127
+ results.collect do |entity|
128
+ parse entity
129
+ end
130
+ end
131
+
132
+ # Parses a JSON-originating hash into the corresponding
133
+ # Mandate entity object.
134
+ #
135
+ # @param +response+ [Hash] JSON-originating data hash
136
+ # @return [Mandate] corresponding Mandate entity object
137
+ def parse(response)
138
+ MangoModel::Mandate.new.dejsonify response
139
+ end
140
+ end
141
+ end
142
+ end
@@ -0,0 +1,25 @@
1
+ require_relative '../uri_provider'
2
+
3
+ module MangoApi
4
+
5
+ # Provides API method delegates for OAuth authentication.
6
+ module OAuthTokens
7
+ class << self
8
+ include UriProvider
9
+
10
+ # Creates a new configuration-specific authorization token.
11
+ #
12
+ # @param +mangopay_config+ The MangoPay environment configuration
13
+ def create(mangopay_config)
14
+ uri = provide_uri(:create_token)
15
+ HttpClient.post_raw(uri) do |request|
16
+ config = mangopay_config
17
+ request.basic_auth config.client_id, config.client_passphrase
18
+ request.body = 'grant_type=client_credentials'
19
+ request.add_field('Content-Type',
20
+ 'application/x-www-form-urlencoded')
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,260 @@
1
+ require_relative '../uri_provider'
2
+
3
+ module MangoApi
4
+
5
+ # Provides API method delegates concerning the +PayIn+ entity
6
+ module PayIns
7
+ class << self
8
+ include UriProvider
9
+
10
+ # Creates a new pay-in entity of +PaymentType::CARD+
11
+ # and +ExecutionType::WEB+.
12
+ #
13
+ # +CardWebPayIn+ properties:
14
+ # * Required
15
+ # * author_id
16
+ # * debited_funds
17
+ # * fees
18
+ # * return_url
19
+ # * credited_wallet_id
20
+ # * card_type
21
+ # * culture
22
+ # * Optional
23
+ # * tag
24
+ # * credited_user_id
25
+ # * secure_mode
26
+ # * template_url_options
27
+ # * statement_descriptor
28
+ #
29
+ # @param +pay_in+ [CardWebPayIn] the pay-in data model object
30
+ # @param +id_key+ [String] idempotency key for future response replication
31
+ # @return [CardWebPayIn] the newly-created pay-in entity object
32
+ def create_card_web(pay_in, id_key = nil)
33
+ uri = provide_uri(:create_card_web_pay_in)
34
+ response = HttpClient.post(uri, pay_in, id_key)
35
+ parse response
36
+ end
37
+
38
+ # Creates a new pay-in entity of +PaymentType::CARD+
39
+ # and +ExecutionType::DIRECT+.
40
+ #
41
+ # +CardDirectPayIn+ properties:
42
+ # * Required
43
+ # * author_id
44
+ # * credited_wallet_id
45
+ # * debited_funds
46
+ # * fees
47
+ # * secure_mode_return_url
48
+ # * card_id
49
+ # * Optional
50
+ # * tag
51
+ # * credited_user_id
52
+ # * secure_mode
53
+ # * statement_descriptor
54
+ #
55
+ # @param +pay_in+ [CardDirectPayIn] the pay-in data model object
56
+ # @param +id_key+ [String] idempotency key for future response replication
57
+ # @return [CardDirectPayIn] the newly-created pay-in entity object
58
+ def create_card_direct(pay_in, id_key = nil)
59
+ uri = provide_uri(:create_card_direct_pay_in)
60
+ response = HttpClient.post(uri, pay_in, id_key)
61
+ parse response
62
+ end
63
+
64
+ # Creates a new pay-in entity of +PaymentType::PREAUTHORIZED+
65
+ # and +ExecutionType::DIRECT+
66
+ #
67
+ # +CardPreAuthorizedPayIn+ properties:
68
+ # * Required
69
+ # * author_id
70
+ # * credited_wallet_id
71
+ # * debited_funds
72
+ # * fees
73
+ # * preauthorization_id
74
+ # * Optional
75
+ # * tag
76
+ # * credited_user_id
77
+ #
78
+ # @param +pay_in+ [CardPreAuthorizedPayIn] the pay-in data model object
79
+ # @param +id_key+ [String] idempotency key for future response replication
80
+ # @return [CardPreAuthorizedPayIn] the newly-created pay-in entity object
81
+ def create_card_pre_authorized(pay_in, id_key = nil)
82
+ uri = provide_uri(:create_card_pre_authorized_pay_in)
83
+ response = HttpClient.post(uri, pay_in, id_key)
84
+ parse response
85
+ end
86
+
87
+ # Creates a new pay-in entity of +PaymentType::BANK_WIRE+
88
+ # and +ExecutionType::DIRECT+.
89
+ #
90
+ # +BankWireDirectPayIn+ properties:
91
+ # * Required
92
+ # * author_id
93
+ # * credited_wallet_id
94
+ # * declared_debited_funds
95
+ # * declared_fees
96
+ # * Optional
97
+ # * tag
98
+ # * credited_user_id
99
+ #
100
+ # @param +pay_in+ [BankWireDirectPayIn] the pay-in data model object
101
+ # @param +id_key+ [String] idempotency key for future response replication
102
+ # @return [BankWireDirectPayIn] the newly-created pay-in entity object
103
+ def create_bank_wire_direct(pay_in, id_key = nil)
104
+ uri = provide_uri(:create_bank_wire_direct_pay_in)
105
+ response = HttpClient.post(uri, pay_in, id_key)
106
+ parse response
107
+ end
108
+
109
+ # Creates a new pay-in entity of +PaymentType::BANK_WIRE+
110
+ # and +ExecutionType::DIRECT+. This method can be used
111
+ # to add funds to the environment's client's wallets.
112
+ #
113
+ # +BankWireDirectPayIn+ properties:
114
+ # * Required
115
+ # * credited_wallet_id
116
+ # * declared_debited_funds
117
+ # * declared_fees
118
+ # * Optional
119
+ # * tag
120
+ #
121
+ # @param +pay_in+ [BankWireDirectPayIn] the pay-in data model object
122
+ # Note: The ID field must contain one of the automatically-generated
123
+ # ClientWallet IDs specific to the current environment's client
124
+ # (+FUNDS_TYPE+ _ +CURRENCY+ - FEES_EUR, CREDIT_USD etc.)
125
+ # @param +id_key+ [String] idempotency key for future response replication
126
+ def create_client_bank_wire_direct(pay_in, id_key = nil)
127
+ uri = provide_uri(:create_client_bank_wire_direct_pay_in)
128
+ response = HttpClient.post(uri, pay_in, id_key)
129
+ parse response
130
+ end
131
+
132
+ # Creates a new pay-in entity of +PaymentType::DIRECT_DEBIT+
133
+ # and +ExecutionType::WEB+.
134
+ #
135
+ # +DirectDebitWebPayIn+ properties:
136
+ # * Required
137
+ # * author_id
138
+ # * debited_funds
139
+ # * fees
140
+ # * return_url
141
+ # * credited_wallet_id
142
+ # * direct_debit_type
143
+ # * culture
144
+ # * Optional
145
+ # * tag
146
+ # * credited_user_id
147
+ # * secure_mode
148
+ # * template_url_options
149
+ #
150
+ # @param +pay_in+ [DirectDebitWebPayIn] the pay-in data model object
151
+ # @param +id_key+ [String] idempotency key for future response replication
152
+ # @return [DirectDebitWebPayIn] the newly-created pay-in entity object
153
+ def create_direct_debit_web(pay_in, id_key = nil)
154
+ uri = provide_uri(:create_direct_debit_web_pay_in)
155
+ response = HttpClient.post(uri, pay_in, id_key)
156
+ parse response
157
+ end
158
+
159
+ # Creates a new pay-in entity of +PaymentType::DIRECT_DEBIT+
160
+ # and +ExecutionType::DIRECT+.
161
+ #
162
+ # +DirectDebitDirectPayIn+ properties:
163
+ # * Required
164
+ # * author_id
165
+ # * credited_wallet_id
166
+ # * debited_funds
167
+ # * fees
168
+ # * mandate_id
169
+ # * Optional
170
+ # * tag
171
+ # * credited_user_id
172
+ # * statement_descriptor
173
+ #
174
+ # @param +pay_in+ [DirectDebitDirectPayIn] the pay-in data model object
175
+ # @param +id_key+ [String] idempotency key for future response replication
176
+ # @return [DirectDebitDirectPayIn] the newly-created pay-in entity object
177
+ def create_direct_debit_direct(pay_in, id_key = nil)
178
+ uri = provide_uri(:create_direct_debit_direct_pay_in)
179
+ response = HttpClient.post(uri, pay_in, id_key)
180
+ parse response
181
+ end
182
+
183
+ # Retrieves a pay-in entity.
184
+ #
185
+ # @param +id+ [String] ID of the pay-in to be retrieved
186
+ # @return [PayIn] the requested entity object
187
+ def get(id)
188
+ uri = provide_uri(:get_pay_in, id)
189
+ response = HttpClient.get(uri)
190
+ parse response
191
+ end
192
+
193
+ # Retrieves a detailed view of details concerning the
194
+ # card used to process a Web payment.
195
+ #
196
+ # @param +pay_in_id+ [String] ID of the Card Web Pay-In entity
197
+ # for which to retrieve extended details view
198
+ # @return [PayInWebExtendedView] Object containing extended
199
+ # details about the card
200
+ def extended_card_view(pay_in_id)
201
+ uri = provide_uri(:get_extended_card_view, pay_in_id)
202
+ response = HttpClient.get(uri)
203
+ parse_card_view response
204
+ end
205
+
206
+ private
207
+
208
+ # Parses an array of JSON-originating hashes into the corresponding
209
+ # PayIn entity objects.
210
+ #
211
+ # @param +results+ [Array] JSON-originating data hashes
212
+ # @return [Array] parsed PayIn entity objects
213
+ def parse_results(results)
214
+ results.collect do |entity|
215
+ parse entity
216
+ end
217
+ end
218
+
219
+ # Parses a JSON-originating hash into the corresponding
220
+ # PayIn entity object.
221
+ #
222
+ # @param +response+ [Hash] JSON-originating data hash
223
+ # @return [PayIn] corresponding PayIn entity object
224
+ def parse(response)
225
+ type = pay_in_type(response)
226
+ type.new.dejsonify response
227
+ end
228
+
229
+ # Asserts the type of pay-in represented by a hash
230
+ #
231
+ # @param +hash+ [Hash] source hash
232
+ # @return [Class] type of pay-in represented by the hash
233
+ def pay_in_type(hash)
234
+ if hash['PaymentType'] == MangoModel::PayInPaymentType::CARD.to_s\
235
+ && hash['ExecutionType'] == MangoModel::PayInExecutionType::WEB.to_s
236
+ MangoModel::CardWebPayIn
237
+ elsif hash['PaymentType'] == MangoModel::PayInPaymentType::CARD.to_s\
238
+ && hash['ExecutionType'] == MangoModel::PayInExecutionType::DIRECT.to_s
239
+ MangoModel::CardDirectPayIn
240
+ elsif hash['PaymentType'] == MangoModel::PayInPaymentType::PREAUTHORIZED.to_s\
241
+ && hash['ExecutionType'] == MangoModel::PayInExecutionType::DIRECT.to_s
242
+ MangoModel::CardPreAuthorizedPayIn
243
+ elsif hash['PaymentType'] == MangoModel::PayInPaymentType::BANK_WIRE.to_s\
244
+ && hash['ExecutionType'] == MangoModel::PayInExecutionType::DIRECT.to_s
245
+ MangoModel::BankWireDirectPayIn
246
+ elsif hash['PaymentType'] == MangoModel::PayInPaymentType::DIRECT_DEBIT.to_s\
247
+ && hash['ExecutionType'] == MangoModel::PayInExecutionType::WEB.to_s
248
+ MangoModel::DirectDebitWebPayIn
249
+ elsif hash['PaymentType'] == MangoModel::PayInPaymentType::DIRECT_DEBIT.to_s\
250
+ && hash['ExecutionType'] == MangoModel::PayInExecutionType::DIRECT.to_s
251
+ MangoModel::DirectDebitDirectPayIn
252
+ end
253
+ end
254
+
255
+ def parse_card_view(response)
256
+ MangoModel::PayInWebExtendedView.new.dejsonify response
257
+ end
258
+ end
259
+ end
260
+ end
@@ -0,0 +1,54 @@
1
+ require_relative '../uri_provider'
2
+
3
+ module MangoApi
4
+
5
+ # Provides API method delegates concerning the +PayOut+ entity
6
+ module PayOuts
7
+ class << self
8
+ include UriProvider
9
+
10
+ # Creates a new pay-out entity.
11
+ #
12
+ # +PayOut+ properties:
13
+ # * Required
14
+ # * author_id
15
+ # * debited_funds
16
+ # * fees
17
+ # * bank_account_id
18
+ # * debited_wallet_id
19
+ # * Optional
20
+ # * tag
21
+ # * bank_wire_ref
22
+ #
23
+ # @param +pay_out+ [PayOut] model object of the pay-out to be created
24
+ # @param +id_key+ [String] idempotency key for future response replication
25
+ # @return [PayOut] the newly-created PayOut entity object
26
+ def create(pay_out, id_key = nil)
27
+ uri = provide_uri(:create_pay_out)
28
+ response = HttpClient.post(uri, pay_out, id_key)
29
+ parse response
30
+ end
31
+
32
+ # Retrieves a pay-out entity.
33
+ #
34
+ # @param +id+ [String] ID of the pay-out to retrieve
35
+ # @return [PayOut] the requested PayOut entity object
36
+ def get(id)
37
+ uri = provide_uri(:get_pay_out, id)
38
+ response = HttpClient.get(uri)
39
+ parse response
40
+ end
41
+
42
+ private
43
+
44
+ # Parses a JSON-originating hash into the corresponding
45
+ # PayOut entity object.
46
+ #
47
+ # @param +response+ [Hash] JSON-originating data hash
48
+ # @return [PayOut] corresponding PayOut entity object
49
+ def parse(response)
50
+ MangoModel::PayOut.new.dejsonify response
51
+ end
52
+ end
53
+ end
54
+ end