mangopay-v4 4.0.0 → 4.0.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 (234) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +29 -29
  3. data/.rspec +3 -3
  4. data/.rubocop.yml +1 -1
  5. data/.travis.yml +21 -13
  6. data/Gemfile +2 -2
  7. data/LICENSE +20 -20
  8. data/README.md +379 -379
  9. data/bin/mangopay +9 -9
  10. data/lib/mangopay.rb +132 -132
  11. data/lib/mangopay/api/api.rb +8 -8
  12. data/lib/mangopay/api/api_methods.rb +160 -136
  13. data/lib/mangopay/api/auth_token_manager.rb +173 -173
  14. data/lib/mangopay/api/http_client.rb +324 -324
  15. data/lib/mangopay/api/service/bank_accounts.rb +145 -145
  16. data/lib/mangopay/api/service/banking_aliases.rb +83 -0
  17. data/lib/mangopay/api/service/cards.rb +151 -151
  18. data/lib/mangopay/api/service/client_wallets.rb +88 -88
  19. data/lib/mangopay/api/service/clients.rb +67 -67
  20. data/lib/mangopay/api/service/dispute_documents.rb +157 -157
  21. data/lib/mangopay/api/service/disputes.rb +186 -186
  22. data/lib/mangopay/api/service/e_money.rb +63 -41
  23. data/lib/mangopay/api/service/events.rb +46 -46
  24. data/lib/mangopay/api/service/hooks.rb +92 -92
  25. data/lib/mangopay/api/service/kyc_documents.rb +152 -152
  26. data/lib/mangopay/api/service/mandates.rb +141 -141
  27. data/lib/mangopay/api/service/oauth_tokens.rb +24 -24
  28. data/lib/mangopay/api/service/pay_ins.rb +369 -259
  29. data/lib/mangopay/api/service/pay_outs.rb +53 -53
  30. data/lib/mangopay/api/service/pre_authorizations.rb +126 -68
  31. data/lib/mangopay/api/service/refunds.rb +159 -61
  32. data/lib/mangopay/api/service/reports.rb +150 -150
  33. data/lib/mangopay/api/service/repudiations.rb +31 -31
  34. data/lib/mangopay/api/service/responses.rb +101 -101
  35. data/lib/mangopay/api/service/settlement_transfers.rb +54 -54
  36. data/lib/mangopay/api/service/transactions.rb +246 -182
  37. data/lib/mangopay/api/service/transfers.rb +53 -53
  38. data/lib/mangopay/api/service/ubo_declarations.rb +94 -69
  39. data/lib/mangopay/api/service/users.rb +162 -162
  40. data/lib/mangopay/api/service/wallets.rb +98 -98
  41. data/lib/mangopay/api/uri_provider.rb +32 -34
  42. data/lib/mangopay/common/json_tag_converter.rb +70 -67
  43. data/lib/mangopay/common/jsonifier.rb +266 -248
  44. data/lib/mangopay/common/log_provider.rb +33 -33
  45. data/lib/mangopay/common/rate_limit_interval.rb +16 -16
  46. data/lib/mangopay/common/read_only_fields.rb +26 -26
  47. data/lib/mangopay/common/response_error.rb +61 -61
  48. data/lib/mangopay/common/sort_direction.rb +14 -14
  49. data/lib/mangopay/common/sort_field.rb +12 -12
  50. data/lib/mangopay/common/template_url_options.rb +8 -8
  51. data/lib/mangopay/configuration.rb +38 -38
  52. data/lib/mangopay/environment.rb +65 -65
  53. data/lib/mangopay/model/address.rb +26 -26
  54. data/lib/mangopay/model/billing.rb +13 -0
  55. data/lib/mangopay/model/birthplace.rb +15 -0
  56. data/lib/mangopay/model/declared_ubo.rb +20 -20
  57. data/lib/mangopay/model/dispute_reason.rb +14 -14
  58. data/lib/mangopay/model/document_page_consult.rb +14 -14
  59. data/lib/mangopay/model/e_money.rb +17 -17
  60. data/lib/mangopay/model/entity/account/bank_account.rb +25 -25
  61. data/lib/mangopay/model/entity/account/ca_bank_account.rb +26 -26
  62. data/lib/mangopay/model/entity/account/debited_bank_account.rb +31 -0
  63. data/lib/mangopay/model/entity/account/gb_bank_account.rb +20 -20
  64. data/lib/mangopay/model/entity/account/iban_bank_account.rb +20 -20
  65. data/lib/mangopay/model/entity/account/other_bank_account.rb +23 -23
  66. data/lib/mangopay/model/entity/account/us_bank_account.rb +23 -23
  67. data/lib/mangopay/model/entity/banking_alias.rb +27 -0
  68. data/lib/mangopay/model/entity/card.rb +44 -44
  69. data/lib/mangopay/model/entity/card_registration.rb +42 -42
  70. data/lib/mangopay/model/entity/client.rb +65 -62
  71. data/lib/mangopay/model/entity/client_wallet.rb +22 -22
  72. data/lib/mangopay/model/entity/dispute.rb +49 -49
  73. data/lib/mangopay/model/entity/dispute_document.rb +28 -28
  74. data/lib/mangopay/model/entity/entity_base.rb +17 -17
  75. data/lib/mangopay/model/entity/hook.rb +25 -25
  76. data/lib/mangopay/model/entity/kyc_document.rb +27 -27
  77. data/lib/mangopay/model/entity/mandate.rb +50 -50
  78. data/lib/mangopay/model/entity/pay_in/apple_pay_direct_pay_in.rb +26 -0
  79. data/lib/mangopay/model/entity/pay_in/bank_wire_direct_pay_in.rb +24 -21
  80. data/lib/mangopay/model/entity/pay_in/bank_wire_external_instruction_pay_in.rb +19 -0
  81. data/lib/mangopay/model/entity/pay_in/card_direct_pay_in.rb +41 -32
  82. data/lib/mangopay/model/entity/pay_in/card_pre_authorized_pay_in.rb +15 -12
  83. data/lib/mangopay/model/entity/pay_in/card_web_pay_in.rb +36 -39
  84. data/lib/mangopay/model/entity/pay_in/direct_debit_direct_pay_in.rb +25 -22
  85. data/lib/mangopay/model/entity/pay_in/direct_debit_web_pay_in.rb +37 -37
  86. data/lib/mangopay/model/entity/pay_in/google_pay_direct_pay_in.rb +28 -0
  87. data/lib/mangopay/model/entity/pay_in/pay_in.rb +18 -15
  88. data/lib/mangopay/model/entity/pay_in/paypal_web_pay_in.rb +15 -0
  89. data/lib/mangopay/model/entity/pay_out.rb +21 -21
  90. data/lib/mangopay/model/entity/pre_authorization.rb +74 -67
  91. data/lib/mangopay/model/entity/refund.rb +17 -17
  92. data/lib/mangopay/model/entity/report.rb +50 -50
  93. data/lib/mangopay/model/entity/repudiation.rb +17 -17
  94. data/lib/mangopay/model/entity/settlement_transfer.rb +16 -16
  95. data/lib/mangopay/model/entity/transaction.rb +51 -51
  96. data/lib/mangopay/model/entity/transfer.rb +12 -12
  97. data/lib/mangopay/model/entity/ubo.rb +30 -0
  98. data/lib/mangopay/model/entity/ubo_declaration.rb +29 -31
  99. data/lib/mangopay/model/entity/user/legal_user.rb +55 -52
  100. data/lib/mangopay/model/entity/user/natural_user.rb +49 -49
  101. data/lib/mangopay/model/entity/user/user.rb +17 -17
  102. data/lib/mangopay/model/entity/wallet.rb +27 -27
  103. data/lib/mangopay/model/enum/account_type.rb +23 -23
  104. data/lib/mangopay/model/enum/avs_result.rb +19 -0
  105. data/lib/mangopay/model/enum/banking_alias_type.rb +12 -0
  106. data/lib/mangopay/model/enum/business_type.rb +17 -0
  107. data/lib/mangopay/model/enum/card_status.rb +14 -14
  108. data/lib/mangopay/model/enum/card_type.rb +32 -32
  109. data/lib/mangopay/model/enum/card_validity.rb +18 -18
  110. data/lib/mangopay/model/enum/country_iso.rb +758 -758
  111. data/lib/mangopay/model/enum/culture_code.rb +43 -43
  112. data/lib/mangopay/model/enum/currency_iso.rb +551 -551
  113. data/lib/mangopay/model/enum/declared_ubo_refused_reason_type.rb +15 -15
  114. data/lib/mangopay/model/enum/declared_ubo_status.rb +17 -17
  115. data/lib/mangopay/model/enum/deposit_type.rb +14 -14
  116. data/lib/mangopay/model/enum/direct_debit_type.rb +12 -12
  117. data/lib/mangopay/model/enum/dispute_doc_refused_reason_type.rb +24 -24
  118. data/lib/mangopay/model/enum/dispute_document_type.rb +22 -22
  119. data/lib/mangopay/model/enum/dispute_reason_type.rb +32 -32
  120. data/lib/mangopay/model/enum/dispute_status.rb +20 -20
  121. data/lib/mangopay/model/enum/dispute_type.rb +14 -14
  122. data/lib/mangopay/model/enum/document_status.rb +20 -20
  123. data/lib/mangopay/model/enum/download_format.rb +10 -10
  124. data/lib/mangopay/model/enum/event_type.rb +76 -73
  125. data/lib/mangopay/model/enum/funds_type.rb +14 -14
  126. data/lib/mangopay/model/enum/hook_status.rb +12 -12
  127. data/lib/mangopay/model/enum/hook_validity.rb +14 -14
  128. data/lib/mangopay/model/enum/income_range.rb +20 -20
  129. data/lib/mangopay/model/enum/kyc_doc_refused_reason_type.rb +36 -36
  130. data/lib/mangopay/model/enum/kyc_document_type.rb +18 -18
  131. data/lib/mangopay/model/enum/kyc_level.rb +12 -12
  132. data/lib/mangopay/model/enum/legal_person_type.rb +14 -14
  133. data/lib/mangopay/model/enum/mandate_culture_code.rb +22 -22
  134. data/lib/mangopay/model/enum/mandate_execution_type.rb +10 -10
  135. data/lib/mangopay/model/enum/mandate_scheme.rb +12 -12
  136. data/lib/mangopay/model/enum/mandate_status.rb +23 -23
  137. data/lib/mangopay/model/enum/mandate_type.rb +10 -10
  138. data/lib/mangopay/model/enum/natural_user_capacity.rb +14 -14
  139. data/lib/mangopay/model/enum/pay_in_execution_type.rb +17 -17
  140. data/lib/mangopay/model/enum/pay_in_payment_type.rb +29 -20
  141. data/lib/mangopay/model/enum/pay_out_payment_type.rb +10 -10
  142. data/lib/mangopay/model/enum/payment_status.rb +20 -20
  143. data/lib/mangopay/model/enum/person_type.rb +14 -14
  144. data/lib/mangopay/model/enum/platform_type.rb +22 -22
  145. data/lib/mangopay/model/enum/pre_authorization_execution_type.rb +10 -10
  146. data/lib/mangopay/model/enum/pre_authorization_status.rb +17 -17
  147. data/lib/mangopay/model/enum/refund_reason_type.rb +20 -20
  148. data/lib/mangopay/model/enum/report_status.rb +16 -16
  149. data/lib/mangopay/model/enum/report_type.rb +12 -12
  150. data/lib/mangopay/model/enum/sector.rb +29 -0
  151. data/lib/mangopay/model/enum/secure_mode.rb +15 -15
  152. data/lib/mangopay/model/enum/transaction_nature.rb +16 -16
  153. data/lib/mangopay/model/enum/transaction_status.rb +14 -14
  154. data/lib/mangopay/model/enum/transaction_type.rb +14 -14
  155. data/lib/mangopay/model/enum/ubo_declaration_refused_reason_type.rb +18 -18
  156. data/lib/mangopay/model/enum/ubo_declaration_status.rb +20 -20
  157. data/lib/mangopay/model/event.rb +17 -17
  158. data/lib/mangopay/model/model.rb +214 -193
  159. data/lib/mangopay/model/money.rb +16 -16
  160. data/lib/mangopay/model/pay_in_web_extended_view.rb +30 -30
  161. data/lib/mangopay/model/platform_categorization.rb +15 -0
  162. data/lib/mangopay/model/refund_reason.rb +14 -14
  163. data/lib/mangopay/model/report_filter.rb +82 -82
  164. data/lib/mangopay/model/request/cancel_request.rb +15 -15
  165. data/lib/mangopay/model/request/complete_registration_request.rb +12 -12
  166. data/lib/mangopay/model/request/currency_request.rb +12 -12
  167. data/lib/mangopay/model/request/deactivation_request.rb +9 -9
  168. data/lib/mangopay/model/request/filter_request.rb +37 -37
  169. data/lib/mangopay/model/request/submit_document_request.rb +13 -13
  170. data/lib/mangopay/model/request/submit_ubo_declaration_request.rb +16 -13
  171. data/lib/mangopay/model/request/upload_file_request.rb +8 -8
  172. data/lib/mangopay/model/response_replica.rb +26 -26
  173. data/lib/mangopay/model/security_info.rb +13 -0
  174. data/lib/mangopay/util/custom_formatter.rb +11 -11
  175. data/lib/mangopay/util/custom_logger.rb +33 -33
  176. data/lib/mangopay/util/enum.rb +51 -51
  177. data/lib/mangopay/util/file_encoder.rb +15 -15
  178. data/lib/mangopay/util/non_instantiable.rb +5 -5
  179. data/lib/mangopay/util/storage_strategy.rb +9 -9
  180. data/lib/mangopay/util/void_logger.rb +5 -5
  181. data/mangopay-v4.gemspec +32 -0
  182. data/mangopay.gemspec +32 -32
  183. data/spec/context/address_context.rb +24 -24
  184. data/spec/context/bank_account_context.rb +137 -137
  185. data/spec/context/banking_alias_context.rb +17 -0
  186. data/spec/context/birthplace_context.rb +17 -0
  187. data/spec/context/card_context.rb +45 -45
  188. data/spec/context/client_context.rb +43 -44
  189. data/spec/context/dispute_context.rb +36 -36
  190. data/spec/context/dispute_document_context.rb +19 -19
  191. data/spec/context/hook_context.rb +15 -15
  192. data/spec/context/kyc_document_context.rb +22 -22
  193. data/spec/context/mandate_context.rb +26 -26
  194. data/spec/context/pay_in_context.rb +319 -224
  195. data/spec/context/pay_out_context.rb +39 -38
  196. data/spec/context/pre_authorization_context.rb +44 -40
  197. data/spec/context/refund_context.rb +32 -32
  198. data/spec/context/report_context.rb +21 -21
  199. data/spec/context/repudiation_context.rb +18 -18
  200. data/spec/context/settlement_transfer_context.rb +27 -27
  201. data/spec/context/transfer_context.rb +50 -50
  202. data/spec/context/ubo_declaration_context.rb +29 -24
  203. data/spec/context/user_context.rb +83 -82
  204. data/spec/context/wallet_context.rb +52 -52
  205. data/spec/mangopay/bank_accounts_spec.rb +228 -228
  206. data/spec/mangopay/banking_alias_spec.rb +85 -0
  207. data/spec/mangopay/cards_spec.rb +133 -134
  208. data/spec/mangopay/client_wallets_spec.rb +147 -147
  209. data/spec/mangopay/clients_spec.rb +56 -54
  210. data/spec/mangopay/configuration_spec.rb +125 -125
  211. data/spec/mangopay/dispute_documents_spec.rb +173 -173
  212. data/spec/mangopay/disputes_spec.rb +264 -264
  213. data/spec/mangopay/e_money_spec.rb +57 -37
  214. data/spec/mangopay/events_spec.rb +49 -49
  215. data/spec/mangopay/hooks_spec.rb +70 -70
  216. data/spec/mangopay/kyc_documents_spec.rb +179 -179
  217. data/spec/mangopay/mandates_spec.rb +218 -218
  218. data/spec/mangopay/oauth_tokens_spec.rb +40 -40
  219. data/spec/mangopay/pay_ins_spec.rb +279 -180
  220. data/spec/mangopay/pay_outs_spec.rb +38 -38
  221. data/spec/mangopay/pre_authorizations_spec.rb +134 -57
  222. data/spec/mangopay/refunds_spec.rb +187 -39
  223. data/spec/mangopay/reports_spec.rb +118 -120
  224. data/spec/mangopay/responses_spec.rb +324 -294
  225. data/spec/mangopay/settlement_transfers_spec.rb +36 -36
  226. data/spec/mangopay/transactions_spec.rb +347 -232
  227. data/spec/mangopay/transfers_spec.rb +37 -37
  228. data/spec/mangopay/ubo_declarations_spec.rb +127 -64
  229. data/spec/mangopay/users_spec.rb +145 -145
  230. data/spec/mangopay/wallets_spec.rb +103 -103
  231. data/spec/spec_helper.rb +72 -72
  232. data/spec/tmp/MangoPay.AuthorizationToken.FileStore.tmp +6 -0
  233. data/spec/tmp/mangopay.log.tmp +1201 -0
  234. metadata +31 -5
@@ -1,142 +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
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
142
  end
@@ -1,25 +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
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_apiKey
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
25
  end
@@ -1,260 +1,370 @@
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
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
+
184
+ # Creates a new pay-in entity of +PaymentType::PAYPAL+
185
+ # and +ExecutionType::WEB+.
186
+ #
187
+ # +PaypalWebPayIn+ properties:
188
+ # * Required
189
+ # * author_id
190
+ # * debited_funds
191
+ # * fees
192
+ # * return_url
193
+ # * credited_wallet_id
194
+ # * direct_debit_type
195
+ # * shipping_address
196
+ # * paypal_buyer_account_email
197
+ # * culture
198
+ # * Optional
199
+ # * tag
200
+ # * credited_user_id
201
+ # * secure_mode
202
+ # * template_url_options
203
+ #
204
+ # @param +pay_in+ [PaypalWebPayIn] the pay-in data model object
205
+ # @param +id_key+ [String] idempotency key for future response replication
206
+ # @return [PaypalWebPayIn] the newly-created pay-in entity object
207
+ def create_paypal_web(pay_in, id_key = nil)
208
+ uri = provide_uri(:create_paypal_web_pay_in)
209
+ response = HttpClient.post(uri, pay_in, id_key)
210
+ parse response
211
+ end
212
+
213
+ # Creates a new pay-in entity of +PaymentType::APPLE_PAY+
214
+ # and +ExecutionType::DIRECT+.
215
+ #
216
+ # +ApplePayPayIn+ properties:
217
+ # * Required
218
+ # * author_id
219
+ # * credited_wallet_id
220
+ # * debited_funds
221
+ # * fees
222
+ # * transaction_id
223
+ # * network
224
+ # * token_data
225
+ # * Optional
226
+ # * tag
227
+ # * credited_user_id
228
+ # * statement_descriptor
229
+ #
230
+ # @param +pay_in+ [ApplePayPayIn] the pay-in data model object
231
+ # @param +id_key+ [String] idempotency key for future response replication
232
+ # @return [ApplePayPayIn] the newly-created pay-in entity object
233
+ def create_apple_pay_direct(pay_in, id_key = nil)
234
+ uri = provide_uri(:create_apple_pay_pay_in)
235
+ json = pay_in.jsonify!
236
+ payment_data = pay_in.payment_data.to_json
237
+ new_json = json[0..json.length - 2] + "," + "\"PaymentData\":" + payment_data + "}"
238
+ response = HttpClient.post_raw(uri) do |request|
239
+ HttpClient.api_headers.each { |k, v| request.add_field(k, v) }
240
+ request.add_field('Idempotency-Key', id_key) if id_key
241
+ request.body = new_json
242
+ end
243
+ parse response
244
+ end
245
+
246
+ # Creates a new pay-in entity of +PaymentType::GOOGLE_PAY+
247
+ # and +ExecutionType::DIRECT+.
248
+ #
249
+ # +GooglePayPayIn+ properties:
250
+ # * Required
251
+ # * author_id
252
+ # * credited_wallet_id
253
+ # * debited_funds
254
+ # * fees
255
+ # * transaction_id
256
+ # * network
257
+ # * token_data
258
+ # * billing
259
+ # * Optional
260
+ # * tag
261
+ # * credited_user_id
262
+ # * statement_descriptor
263
+ #
264
+ # @param +pay_in+ [GooglePayPayIn] the pay-in data model object
265
+ # @param +id_key+ [String] idempotency key for future response replication
266
+ # @return [GooglePayPayIn] the newly-created pay-in entity object
267
+ def create_google_pay_direct(pay_in, id_key = nil)
268
+ uri = provide_uri(:create_google_pay_pay_in)
269
+ json = pay_in.jsonify!
270
+ payment_data = pay_in.payment_data.to_json
271
+ billing = pay_in.billing.to_json
272
+ new_json = json[0..json.length - 2] + "," + "\"PaymentData\":" + payment_data + "\"Billing\":" + billing + "}"
273
+ response = HttpClient.post_raw(uri) do |request|
274
+ HttpClient.api_headers.each { |k, v| request.add_field(k, v) }
275
+ request.add_field('Idempotency-Key', id_key) if id_key
276
+ request.body = new_json
277
+ end
278
+ parse response
279
+ end
280
+
281
+ # Retrieves a pay-in entity.
282
+ #
283
+ # @param +id+ [String] ID of the pay-in to be retrieved
284
+ # @return [PayIn] the requested entity object
285
+ def get(id)
286
+ uri = provide_uri(:get_pay_in, id)
287
+ response = HttpClient.get(uri)
288
+ parse response
289
+ end
290
+
291
+ # Retrieves a detailed view of details concerning the
292
+ # card used to process a Web payment.
293
+ #
294
+ # @param +pay_in_id+ [String] ID of the Card Web Pay-In entity
295
+ # for which to retrieve extended details view
296
+ # @return [PayInWebExtendedView] Object containing extended
297
+ # details about the card
298
+ def extended_card_view(pay_in_id)
299
+ uri = provide_uri(:get_extended_card_view, pay_in_id)
300
+ response = HttpClient.get(uri)
301
+ parse_card_view response
302
+ end
303
+
304
+ private
305
+
306
+ # Parses an array of JSON-originating hashes into the corresponding
307
+ # PayIn entity objects.
308
+ #
309
+ # @param +results+ [Array] JSON-originating data hashes
310
+ # @return [Array] parsed PayIn entity objects
311
+ def parse_results(results)
312
+ results.collect do |entity|
313
+ parse entity
314
+ end
315
+ end
316
+
317
+ # Parses a JSON-originating hash into the corresponding
318
+ # PayIn entity object.
319
+ #
320
+ # @param +response+ [Hash] JSON-originating data hash
321
+ # @return [PayIn] corresponding PayIn entity object
322
+ def parse(response)
323
+ type = pay_in_type(response)
324
+ type.new.dejsonify response
325
+ end
326
+
327
+ # Asserts the type of pay-in represented by a hash
328
+ #
329
+ # @param +hash+ [Hash] source hash
330
+ # @return [Class] type of pay-in represented by the hash
331
+ def pay_in_type(hash)
332
+ if hash['PaymentType'] == MangoModel::PayInPaymentType::CARD.to_s\
333
+ && hash['ExecutionType'] == MangoModel::PayInExecutionType::WEB.to_s
334
+ MangoModel::CardWebPayIn
335
+ elsif hash['PaymentType'] == MangoModel::PayInPaymentType::CARD.to_s\
336
+ && hash['ExecutionType'] == MangoModel::PayInExecutionType::DIRECT.to_s
337
+ MangoModel::CardDirectPayIn
338
+ elsif hash['PaymentType'] == MangoModel::PayInPaymentType::PREAUTHORIZED.to_s\
339
+ && hash['ExecutionType'] == MangoModel::PayInExecutionType::DIRECT.to_s
340
+ MangoModel::CardPreAuthorizedPayIn
341
+ elsif hash['PaymentType'] == MangoModel::PayInPaymentType::BANK_WIRE.to_s\
342
+ && hash['ExecutionType'] == MangoModel::PayInExecutionType::DIRECT.to_s
343
+ MangoModel::BankWireDirectPayIn
344
+ elsif hash['PaymentType'] == MangoModel::PayInPaymentType::BANK_WIRE.to_s\
345
+ && hash['ExecutionType'] == MangoModel::PayInExecutionType::EXTERNAL_INSTRUCTION.to_s
346
+ MangoModel::BankWireExternalInstructionPayIn
347
+ elsif hash['PaymentType'] == MangoModel::PayInPaymentType::DIRECT_DEBIT.to_s\
348
+ && hash['ExecutionType'] == MangoModel::PayInExecutionType::WEB.to_s
349
+ MangoModel::DirectDebitWebPayIn
350
+ elsif hash['PaymentType'] == MangoModel::PayInPaymentType::DIRECT_DEBIT.to_s\
351
+ && hash['ExecutionType'] == MangoModel::PayInExecutionType::DIRECT.to_s
352
+ MangoModel::DirectDebitDirectPayIn
353
+ elsif hash['PaymentType'] == MangoModel::PayInPaymentType::PAYPAL.to_s\
354
+ && hash['ExecutionType'] == MangoModel::PayInExecutionType::WEB.to_s
355
+ MangoModel::PaypalWebPayIn
356
+ elsif hash['PaymentType'] == MangoModel::PayInPaymentType::APPLEPAY.to_s\
357
+ && hash['ExecutionType'] == MangoModel::PayInExecutionType::DIRECT.to_s
358
+ MangoModel::ApplePayPayIn
359
+ elsif hash['PaymentType'] == MangoModel::PayInPaymentType::GOOGLEPAY.to_s\
360
+ && hash['ExecutionType'] == MangoModel::PayInExecutionType::DIRECT.to_s
361
+ MangoModel::GooglePayPayIn
362
+ end
363
+ end
364
+
365
+ def parse_card_view(response)
366
+ MangoModel::PayInWebExtendedView.new.dejsonify response
367
+ end
368
+ end
369
+ end
260
370
  end