mangopay-v4 4.0.0 → 4.0.1

Sign up to get free protection for your applications and to get access to all the features.
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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 1a98e4f72516c98036fa3b66f788d4c4c9b99728
4
- data.tar.gz: a6d24e15066b387c855af6b8b661863537cf4dc4
2
+ SHA256:
3
+ metadata.gz: 981c0cff11f33ff846ba84600d00d0457ae7eb1293e50233e2736f35dc0ca055
4
+ data.tar.gz: 6e6587b25fa6f0b4e9dc4ed8b0556bce89cc7a4e152305c866d23e80ac336df1
5
5
  SHA512:
6
- metadata.gz: 763338b0ec20bf27424ef1d294ba2d2616be0ef8c5b88347f43c9247d1fa0fe4363a07e13f03f798759a9d93352e9f88e4488a0aea82a278117b26e7e69b466c
7
- data.tar.gz: 1a68da9d4460438dde042272b6de5c7ae94aad6b221c268f1846a7c7ef4960dc92abdfe30b1ce9dd1ff1bba770a5170246edea8f3a3d2a22d7e6faf08a44d5ab
6
+ metadata.gz: aa874ceb317a7a0bd61c7a60e844d5132901ba6bc184ed749079a3d96fd9e2aa8ad18e5bd5dda7a573d89fe4a23c28a0d7587bfe7242ff6963511045c478113a
7
+ data.tar.gz: 7d19547c5e2e3c8a118f54d6d9f14f560fa220e740551eac396811924db18a0e0310737b3a219b547bf7f177f682d9a1340dd7632c047b4010e72460b6174802
data/.gitignore CHANGED
@@ -1,30 +1,30 @@
1
- *.gem
2
- *.rbc
3
- .bundle
4
- .config
5
- coverage
6
- InstalledFiles
7
- lib/bundler/man
8
- pkg
9
- rdoc
10
- spec/reports
11
- spec_old/tmp/*.tmp
12
- test/tmp
13
- test/version_tmp
14
- tags
15
-
16
- # YARD artifacts
17
- .yardoc
18
- _yardoc
19
- doc/
20
-
21
- .DS_Store
22
- .rvmrc
23
- /Gemfile.lock
24
- /mangopay-*.gem
25
-
26
- /nbproject/
27
-
28
- /*.sublime-*
29
-
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ coverage
6
+ InstalledFiles
7
+ lib/bundler/man
8
+ pkg
9
+ rdoc
10
+ spec/reports
11
+ spec_old/tmp/*.tmp
12
+ test/tmp
13
+ test/version_tmp
14
+ tags
15
+
16
+ # YARD artifacts
17
+ .yardoc
18
+ _yardoc
19
+ doc/
20
+
21
+ .DS_Store
22
+ .rvmrc
23
+ /Gemfile.lock
24
+ /mangopay-*.gem
25
+
26
+ /nbproject/
27
+
28
+ /*.sublime-*
29
+
30
30
  .idea
data/.rspec CHANGED
@@ -1,4 +1,4 @@
1
- --color
2
- --profile
3
- --r spec_helper
1
+ --color
2
+ --profile
3
+ --r spec_helper
4
4
  --format documentation
@@ -1,2 +1,2 @@
1
- Layout/EndOfLine:
1
+ Layout/EndOfLine:
2
2
  EnforcedStyle: lf
@@ -1,13 +1,21 @@
1
- language: ruby
2
- rvm:
3
- - 2.0.0
4
- script: bundle exec rspec
5
- deploy:
6
- provider: rubygems
7
- api_key:
8
- secure: gvlnYEh9cyL+mYeudKzlD+2Po+LgIzCjHzggJH+WDcbtgxlGAFpxbVJOOm/KY8VKhMgIudNV7FJl4Gl4rrG8JjNxbb+qM57ypU3yyDcUesQ+uj0DnN+xszv7M+XtcRQMlhkStawoj/E0QMYBPkAAr1lBpPIFQdC17GDkdn5XvaQ=
9
- gem: mangopay
10
- on:
11
- tags: false
12
- repo: Mangopay/mangopay2-ruby-sdk
13
- branch: release
1
+ language: ruby
2
+ rvm:
3
+ - 2.0.0
4
+ script: bundle exec rspec
5
+ deploy:
6
+ - provider: rubygems
7
+ api_key:
8
+ secure: gvlnYEh9cyL+mYeudKzlD+2Po+LgIzCjHzggJH+WDcbtgxlGAFpxbVJOOm/KY8VKhMgIudNV7FJl4Gl4rrG8JjNxbb+qM57ypU3yyDcUesQ+uj0DnN+xszv7M+XtcRQMlhkStawoj/E0QMYBPkAAr1lBpPIFQdC17GDkdn5XvaQ=
9
+ gem: mangopay
10
+ on:
11
+ tags: false
12
+ repo: Mangopay/mangopay2-ruby-sdk
13
+ branch: release
14
+ - provider: rubygems
15
+ api_key:
16
+ secure: gvlnYEh9cyL+mYeudKzlD+2Po+LgIzCjHzggJH+WDcbtgxlGAFpxbVJOOm/KY8VKhMgIudNV7FJl4Gl4rrG8JjNxbb+qM57ypU3yyDcUesQ+uj0DnN+xszv7M+XtcRQMlhkStawoj/E0QMYBPkAAr1lBpPIFQdC17GDkdn5XvaQ=
17
+ gem: mangopay-v4
18
+ on:
19
+ tags: false
20
+ repo: Mangopay/mangopay2-ruby-sdk
21
+ branch: v4
data/Gemfile CHANGED
@@ -1,2 +1,2 @@
1
- source 'https://rubygems.org'
2
- gemspec
1
+ source 'https://rubygems.org'
2
+ gemspec
data/LICENSE CHANGED
@@ -1,20 +1,20 @@
1
- The MIT License (MIT)
2
-
3
- Copyright (c) 2013 Mangopay
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy of
6
- this software and associated documentation files (the "Software"), to deal in
7
- the Software without restriction, including without limitation the rights to
8
- use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
- the Software, and to permit persons to whom the Software is furnished to do so,
10
- subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17
- FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18
- COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19
- IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2013 Mangopay
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
6
+ this software and associated documentation files (the "Software"), to deal in
7
+ the Software without restriction, including without limitation the rights to
8
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
+ the Software, and to permit persons to whom the Software is furnished to do so,
10
+ subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md CHANGED
@@ -1,380 +1,380 @@
1
- # MangoPay Ruby SDK [![Build Status](https://travis-ci.org/Mangopay/mangopay2-ruby-sdk.svg?branch=master)](https://travis-ci.org/Mangopay/mangopay2-ruby-sdk)
2
-
3
- The new gem for interacting with the version 2.01 of the Mangopay API.
4
- See the [API documentation](http://docs.mangopay.com/api-references/)
5
- for more details on the API.
6
-
7
- Tested on the following versions of Ruby: 2.4.1
8
-
9
- ## NEWS
10
-
11
- ### Version 4.*
12
- **BREAKING CHANGES:** This version (4.\*) of the gem is targeting the Mangopay API Version 2.01. It has a brand new structure to make the api calls easier to use. It has not been tested for backward compatibility with 3.\* series.
13
-
14
- For upgrading to v2.01 of the API, there is more information about the changes required [here](https://docs.mangopay.com/api-v2-01-overview/).
15
-
16
- Account creation
17
- -------------------------------------------------
18
- You can get yourself a [free sandbox account](https://www.mangopay.com/signup/create-sandbox/) or sign up for a [production account](https://www.mangopay.com/signup/production-account/) (note that validation of your production account can take a few days, so think about doing it in advance of when you actually want to go live).
19
-
20
- ## Usage
21
-
22
- ### Install
23
- * You can get yourself a [free sandbox account](https://www.mangopay.com/get-started/create-sandbox/) or sign up for a [production account](https://www.mangopay.com/signup/production-account/) (note that validation of your production account can take a few days, so think about doing it in advance of when you actually want to go live).
24
-
25
- * Install the gem by either running ```gem install mangopay```
26
- or by adding it to your Gemfile ```gem 'mangopay'```
27
-
28
- * Using the credential info from the signup process above, call ```MangoPay.configure``` in your script as shown in the snippet below.
29
-
30
- ## Examples
31
-
32
- A few examples which demonstrate making each type of request through the SDK V4, comparative to V3.
33
-
34
- ### Configure
35
-
36
- #### V3 / V4
37
-
38
- ```ruby
39
- require 'mangopay'
40
-
41
- MangoPay.configure do |config|
42
- config.client_id = :CLIENT_ID
43
- config.client_passphrase = :CLIENT_PASS
44
- end
45
- ```
46
-
47
- ### Create a User
48
-
49
- #### V3
50
-
51
- ```ruby
52
- user_object = {
53
- Address: {
54
- AddressLine1: 'Test st., no. 18',
55
- AddressLine2: 'bl. 16, int. 32',
56
- City: 'Brasov',
57
- Region: 'Tractoru',
58
- PostalCode: '505600',
59
- Country: 'RO'
60
- },
61
- KYCLevel: 'LIGHT',
62
- Email: 'hello@moto.com',
63
- FirstName: 'Hi',
64
- LastName: 'Bye',
65
- Birthday: 1_300_186_358,
66
- Birthplace: 'Brasov',
67
- Nationality: 'RO',
68
- CountryOfResidence: 'RO',
69
- Occupation: 'Cowboy',
70
- IncomeRange: 1
71
- }
72
-
73
- created_user = MangoPay::NaturalUser.create user_object
74
-
75
- created_user # => Hash object
76
- ```
77
-
78
- #### V4
79
-
80
- ```ruby
81
- address = MangoModel::Address.new
82
-
83
- address.address_line1 = 'Test st., no. 18'
84
- address.address_line2 = 'bl. 16, int. 32'
85
- address.city = 'Brasov'
86
- address.region = 'Tractoru'
87
- address.postal_code = '505600'
88
- address.country = MangoModel::CountryIso::RO
89
-
90
- user_object = MangoModel::NaturalUser.new # or MangoModel::LegalUser.new
91
-
92
- user_object.address = address
93
- user_object.kyc_level = MangoModel::KycLevel::LIGHT
94
- user_object.email = 'hello@moto.com'
95
- user_object.first_name = 'Hi'
96
- user_object.last_name = 'Bye'
97
- user_object.birthday = 1_300_186_358
98
- user_object.birthplace = 'Brasov'
99
- user_object.nationality = MangoModel::CountryIso::RO
100
- user_object.country_of_residence = MangoModel::CountryIso::RO
101
- user_object.occupation = 'Cowboy'
102
- user_object.income_range = MangoModel::IncomeRange::BETWEEN_50_80
103
-
104
- created_user = MangoApi::Users.create user_object
105
-
106
- created_user # => MangoModel::NaturalUser/MangoModel::LegalUser object
107
- ```
108
-
109
- ### Create a PayIn
110
-
111
- #### V3
112
-
113
- ```ruby
114
- natural_user = get_some_natural_user
115
-
116
- wallet = MangoPay::Wallet.create({
117
- Owners: [user['Id']],
118
- Description: 'A test wallet',
119
- Currency: 'EUR',
120
- Tag: 'Test wallet'
121
- })
122
-
123
- created_pay_in = MangoPay::PayIn::Card::Web.create({
124
- AuthorId: natural_user['Id'],
125
- CreditedUserId: wallet['Owners'][0],
126
- CreditedWalletId: wallet['Id'],
127
- ReturnURL: 'http://www.my-site.com/returnURL/',
128
- CardType: 'CB_VISA_MASTERCARD',
129
- SecureMode: 'DEFAULT',
130
- Culture: 'FR',
131
- TemplateURLOptions: {
132
- Payline: 'https://www.mysite.com/template/'
133
- },
134
- StatementDescriptor: 'Mar2016',
135
- Tag: 'Create Card Web PayIn',
136
- DebitedFunds: {
137
- Currency: 'EUR',
138
- Amount: 1000
139
- },
140
- Fees: {
141
- Currency: 'EUR',
142
- Amount: 0
143
- }
144
- })
145
-
146
- created_pay_in # => Hash object
147
- ```
148
-
149
- #### V4
150
-
151
- ```ruby
152
- user = get_some_user
153
-
154
- wallet = MangoModel::Wallet.new
155
- wallet.owners = [user.id]
156
- wallet.description = 'A test wallet'
157
- wallet.currency = MangoModel::CurrencyIso::EUR
158
- wallet.tag = 'Test wallet'
159
-
160
- wallet = MangoApi::Wallets.create wallet
161
-
162
- pay_in = MangoModel::CardWebPayIn.new
163
- pay_in.author_id = user.id
164
- pay_in.credited_user_id = wallet.owners[0].id
165
- pay_in.credited_wallet_id = wallet.id
166
- pay_in.return_url = 'http://www.my-site.com/returnURL/'
167
- pay_in.card_type = MangoModel::CardType::CB_VISA_MASTERCARD
168
- pay_in.secure_mode = MangoModel::SecureMode::DEFAULT
169
- pay_in.culture = MangoModel::CultureCode::EN
170
- pay_in.template_url_options = TemplateUrlOptions.new
171
- pay_in.template_url_options.payline = 'https://www.mysite.com/template/'
172
- pay_in.statement_descriptor = 'Mar2016'
173
- pay_in.tag = 'Create Card Web PayIn'
174
- pay_in.debited_funds = MangoModel::Money.new
175
- pay_in.debited_funds.currency = MangoModel::CurrencyIso::EUR
176
- pay_in.debited_funds.amount = 1000
177
- pay_in.fees = MangoModel::Money.new
178
- pay_in.fees.currency = MangoModel::CurrencyIso::EUR
179
- pay_in.fees.amount = 0
180
-
181
- pay_in = MangoApi::PayIns.create_card_web pay_in
182
-
183
- pay_in # => MangoModel::CardWebPayIn object
184
- ```
185
-
186
- ### Update a User
187
-
188
- #### V3
189
-
190
- ```ruby
191
- natural_user = get_some_natural_user
192
-
193
- updated_user = MangoPay::NaturalUser.update(natural_user['Id'] ,{
194
- Email: 'jack@email.com'
195
- })
196
-
197
- updated_user # => Hash object
198
- ```
199
-
200
- #### V4
201
-
202
- ```ruby
203
- any_user = get_some_user
204
-
205
- any_user.email = 'jack@email.com'
206
-
207
- updated_user = MangoApi::Users.update any_user
208
-
209
- updated_user # => MangoModel::LegalUser / MangoModel::NaturalUser object
210
- ```
211
-
212
- ### Get a User by id
213
-
214
- #### V3
215
-
216
- ```ruby
217
- natural_user = get_some_natural_user
218
-
219
- retrieved_user = MangoPay::LegalUser.fetch(natural_user['Id'])
220
-
221
- retrieved_user # => Hash object
222
- ```
223
-
224
- #### V4
225
-
226
- ```ruby
227
- any_user = get_some_user
228
-
229
- retrieved_user = MangoApi::Users.get(any_user.id)
230
-
231
- retrieved_user # => MangoModel::NaturalUser / MangoModel::LegalUser object
232
- ```
233
-
234
- ### Get a PayIn by id
235
-
236
- #### V3
237
-
238
- ```ruby
239
- pay_in = get_some_pay_in
240
-
241
- retrieved_pay_in = MangoPay::PayIn.fetch(pay_in['Id'])
242
-
243
- retrieved_pay_in # => Hash object
244
- ```
245
-
246
- #### V4
247
-
248
- ```ruby
249
- pay_in = get_some_pay_in
250
-
251
- retrieved_pay_in = MangoApi::PayIns.get(pay_in.id)
252
-
253
- retrieved_pay_in # => MangoModel::PayIn object
254
- ```
255
-
256
- ### List users
257
-
258
- #### V3
259
-
260
- ```ruby
261
- users = MangoPay::User.fetch
262
-
263
- users # => Array of Hash object
264
- ```
265
-
266
- #### V4
267
-
268
- ```ruby
269
- users = MangoApi::Users.all
270
-
271
- users # => Array of MangoModel::Dispute objects
272
- ```
273
-
274
- ### Sorting, Paging, Filtering
275
-
276
- #### V3
277
-
278
- ```ruby
279
- wallet = get_some_wallet
280
-
281
- transactions = MangoPay::Transaction.fetch(wallet['Id'], {
282
- 'page' => 2,
283
- 'per_page' => 3,
284
- 'sort' => 'CreationDate:DESC',
285
- 'Nature' => 'REGULAR',
286
- 'Type' => 'PAYIN'
287
- })
288
-
289
- transactions # => Array of corresponding Hash objects
290
- ```
291
-
292
- #### V4
293
-
294
- In the new version, any API method which allows filtering of the result list will yield a FilterRequest object which has fields for every possible filtering parameter. See methods' documentation to learn what parameters are available for each call.
295
-
296
- ```ruby
297
- wallet = get_some_wallet
298
-
299
- transactions = MangoApi::Transactions.of_wallet(wallet.id) do |filter|
300
- filter.page = 2
301
- filter.per_page = 3
302
- filter.sort_field = MangoPay::SortField::CREATION_DATE
303
- filter.sort_direction = MangoPay::SortDirection::ASC
304
- filter.nature = MangoModel::TransactionNature::REGULAR
305
- filter.type = MangoModel::TransactionType::PAYIN
306
- end
307
-
308
- transactions # => Array of corresponding MangoModel::Transaction objects
309
- ```
310
-
311
- ###### See the files in `'lib/mangopay/api/service'` and documentation for more info
312
-
313
- ### Error Handling
314
-
315
- Similar in V4 as it was in V3
316
-
317
- ```ruby
318
- begin
319
- MangoApi::Users.create user
320
- rescue MangoPay::ResponseError => ex
321
-
322
- ex # => #<MangoPay::ResponseError: One or several required parameters are missing or incorrect. [...] FirstName: The FirstName field is required. LastName: The LastName field is required. Nationality: The Nationality field is required.>
323
-
324
- ex.details # => {
325
- # "Message"=>"One or several required parameters are missing or incorrect. [...]",
326
- # "Type"=>"param_error",
327
- # "Id"=>"5c080105-4da3-467d-820d-0906164e55fe",
328
- # "Date"=>1409048671.0,
329
- # "errors"=>{
330
- # "FirstName"=>"The FirstName field is required.",
331
- # "LastName"=>"The LastName field is required.", ...},
332
- # "Code"=>"400",
333
- # "Url"=>"/v2/.../users/natural"
334
- # }
335
- end
336
- ```
337
-
338
- ## New Features
339
-
340
- ### The `MangoPay::Environment` Object
341
-
342
- Use Environments to specify multiple MangoPay configurations within the same program. Specify the environment you want to switch to by using
343
- ```ruby
344
- require 'mangopay'
345
-
346
- MangoPay.use_environment :env_id # Symbol
347
- MangoPay.configure do |config|
348
- config.client_id = 'first_id'
349
- config.client_passphrase = 'first_pass'
350
- end
351
- MangoPay.use_environment :env2
352
- MangoPay.configure do |config|
353
- config.client_id = 'second_id'
354
- config.client_passphrase = 'second_pass'
355
- end
356
- MangoPay.use_environment :env1
357
- config = MangoPay.configuration
358
- config.client_id # => 'first_id'
359
- MangoPay.use_environment :env2
360
- config = MangoPay.configuration
361
- config.client_id # => 'second_id'
362
- ```
363
- They all get stored in memory - only OAuth Tokens may be kept in files.
364
- #####`MangoPay.configure` must be called from each new Environment.
365
- ######Of course, you can just call `MangoPay.configure` without specifying an environment, and all calls will be made under an automatically-assigned `:default` Environment.
366
- #####Environments are Thread-specific for the duration of that Thread's lifetime.
367
- This is done by Mapping each Thread's Ruby `Object.object_id` to the ID of the currently-active Environment. Configurations and other stuff like Rate Limits are stored in the Environment object obtainable context-specifically with a call to `MangoPay.environment` (i.e. Rate Limits and Configuration etc. of the Client will be Environment-specific). The relationship will be deleted as soon as the Thread dies, but the Environment remains correctly-configured to be used from any other Threads.
368
- #####A new Thread will be assigned the most recently used Environment
369
- ...unless another has meanwhile been switched to, in which case it will be that one (i.e. Environment specified in the last call to `MangoPay.use_environment` or the `:default` Environment if none were made). All calls made from any Thread in the same Environment will return results pertaining to the configuration specified for that specific environment.
370
- ######This allows for various calls to be made in rapid succession with results dependent on each other without interfering with Configurations used on other Threads' Environments.
371
-
372
- See the `MangoPay` module, the `Environment` and `Configuration` classes and documentation for more info.
373
-
374
- ## Examples
375
-
376
- ### See tests for explicit examples of configuration and virtually all API calls.
377
-
378
- ##### You can run all tests quickly with `rspec` command or configure RubyMine to run an RSpec configuration of all specs in folder `'spec/mangopay'`, or of a single file for targeted debugging.
379
-
1
+ # MangoPay Ruby SDK [![Build Status](https://travis-ci.org/Mangopay/mangopay2-ruby-sdk.svg?branch=master)](https://travis-ci.org/Mangopay/mangopay2-ruby-sdk)
2
+
3
+ The new gem for interacting with the version 2.01 of the Mangopay API.
4
+ See the [API documentation](http://docs.mangopay.com/api-references/)
5
+ for more details on the API.
6
+
7
+ Tested on the following versions of Ruby: 2.4.1
8
+
9
+ ## NEWS
10
+
11
+ ### Version 4.*
12
+ **BREAKING CHANGES:** This version (4.\*) of the gem is targeting the Mangopay API Version 2.01. It has a brand new structure to make the api calls easier to use. It has not been tested for backward compatibility with 3.\* series.
13
+
14
+ For upgrading to v2.01 of the API, there is more information about the changes required [here](https://docs.mangopay.com/api-v2-01-overview/).
15
+
16
+ Account creation
17
+ -------------------------------------------------
18
+ You can get yourself a [free sandbox account](https://www.mangopay.com/signup/create-sandbox/) or sign up for a [production account](https://www.mangopay.com/signup/production-account/) (note that validation of your production account can take a few days, so think about doing it in advance of when you actually want to go live).
19
+
20
+ ## Usage
21
+
22
+ ### Install
23
+ * You can get yourself a [free sandbox account](https://www.mangopay.com/get-started/create-sandbox/) or sign up for a [production account](https://www.mangopay.com/signup/production-account/) (note that validation of your production account can take a few days, so think about doing it in advance of when you actually want to go live).
24
+
25
+ * Install the gem by either running ```gem install mangopay-v4```
26
+ or by adding it to your Gemfile ```gem 'mangopay-v4'```
27
+
28
+ * Using the credential info from the signup process above, call ```MangoPay.configure``` in your script as shown in the snippet below.
29
+
30
+ ## Examples
31
+
32
+ A few examples which demonstrate making each type of request through the SDK V4, comparative to V3.
33
+
34
+ ### Configure
35
+
36
+ #### V3 / V4
37
+
38
+ ```ruby
39
+ require 'mangopay'
40
+
41
+ MangoPay.configure do |config|
42
+ config.client_id = :CLIENT_ID
43
+ config.client_apiKey = :CLIENT_PASS
44
+ end
45
+ ```
46
+
47
+ ### Create a User
48
+
49
+ #### V3
50
+
51
+ ```ruby
52
+ user_object = {
53
+ Address: {
54
+ AddressLine1: 'Test st., no. 18',
55
+ AddressLine2: 'bl. 16, int. 32',
56
+ City: 'Brasov',
57
+ Region: 'Tractoru',
58
+ PostalCode: '505600',
59
+ Country: 'RO'
60
+ },
61
+ KYCLevel: 'LIGHT',
62
+ Email: 'hello@moto.com',
63
+ FirstName: 'Hi',
64
+ LastName: 'Bye',
65
+ Birthday: 1_300_186_358,
66
+ Birthplace: 'Brasov',
67
+ Nationality: 'RO',
68
+ CountryOfResidence: 'RO',
69
+ Occupation: 'Cowboy',
70
+ IncomeRange: 1
71
+ }
72
+
73
+ created_user = MangoPay::NaturalUser.create user_object
74
+
75
+ created_user # => Hash object
76
+ ```
77
+
78
+ #### V4
79
+
80
+ ```ruby
81
+ address = MangoModel::Address.new
82
+
83
+ address.address_line1 = 'Test st., no. 18'
84
+ address.address_line2 = 'bl. 16, int. 32'
85
+ address.city = 'Brasov'
86
+ address.region = 'Tractoru'
87
+ address.postal_code = '505600'
88
+ address.country = MangoModel::CountryIso::RO
89
+
90
+ user_object = MangoModel::NaturalUser.new # or MangoModel::LegalUser.new
91
+
92
+ user_object.address = address
93
+ user_object.kyc_level = MangoModel::KycLevel::LIGHT
94
+ user_object.email = 'hello@moto.com'
95
+ user_object.first_name = 'Hi'
96
+ user_object.last_name = 'Bye'
97
+ user_object.birthday = 1_300_186_358
98
+ user_object.birthplace = 'Brasov'
99
+ user_object.nationality = MangoModel::CountryIso::RO
100
+ user_object.country_of_residence = MangoModel::CountryIso::RO
101
+ user_object.occupation = 'Cowboy'
102
+ user_object.income_range = MangoModel::IncomeRange::BETWEEN_50_80
103
+
104
+ created_user = MangoApi::Users.create user_object
105
+
106
+ created_user # => MangoModel::NaturalUser/MangoModel::LegalUser object
107
+ ```
108
+
109
+ ### Create a PayIn
110
+
111
+ #### V3
112
+
113
+ ```ruby
114
+ natural_user = get_some_natural_user
115
+
116
+ wallet = MangoPay::Wallet.create({
117
+ Owners: [user['Id']],
118
+ Description: 'A test wallet',
119
+ Currency: 'EUR',
120
+ Tag: 'Test wallet'
121
+ })
122
+
123
+ created_pay_in = MangoPay::PayIn::Card::Web.create({
124
+ AuthorId: natural_user['Id'],
125
+ CreditedUserId: wallet['Owners'][0],
126
+ CreditedWalletId: wallet['Id'],
127
+ ReturnURL: 'http://www.my-site.com/returnURL/',
128
+ CardType: 'CB_VISA_MASTERCARD',
129
+ SecureMode: 'DEFAULT',
130
+ Culture: 'FR',
131
+ TemplateURLOptions: {
132
+ Payline: 'https://www.mysite.com/template/'
133
+ },
134
+ StatementDescriptor: 'Mar2016',
135
+ Tag: 'Create Card Web PayIn',
136
+ DebitedFunds: {
137
+ Currency: 'EUR',
138
+ Amount: 1000
139
+ },
140
+ Fees: {
141
+ Currency: 'EUR',
142
+ Amount: 0
143
+ }
144
+ })
145
+
146
+ created_pay_in # => Hash object
147
+ ```
148
+
149
+ #### V4
150
+
151
+ ```ruby
152
+ user = get_some_user
153
+
154
+ wallet = MangoModel::Wallet.new
155
+ wallet.owners = [user.id]
156
+ wallet.description = 'A test wallet'
157
+ wallet.currency = MangoModel::CurrencyIso::EUR
158
+ wallet.tag = 'Test wallet'
159
+
160
+ wallet = MangoApi::Wallets.create wallet
161
+
162
+ pay_in = MangoModel::CardWebPayIn.new
163
+ pay_in.author_id = user.id
164
+ pay_in.credited_user_id = wallet.owners[0].id
165
+ pay_in.credited_wallet_id = wallet.id
166
+ pay_in.return_url = 'http://www.my-site.com/returnURL/'
167
+ pay_in.card_type = MangoModel::CardType::CB_VISA_MASTERCARD
168
+ pay_in.secure_mode = MangoModel::SecureMode::DEFAULT
169
+ pay_in.culture = MangoModel::CultureCode::EN
170
+ pay_in.template_url_options = TemplateUrlOptions.new
171
+ pay_in.template_url_options.payline = 'https://www.mysite.com/template/'
172
+ pay_in.statement_descriptor = 'Mar2016'
173
+ pay_in.tag = 'Create Card Web PayIn'
174
+ pay_in.debited_funds = MangoModel::Money.new
175
+ pay_in.debited_funds.currency = MangoModel::CurrencyIso::EUR
176
+ pay_in.debited_funds.amount = 1000
177
+ pay_in.fees = MangoModel::Money.new
178
+ pay_in.fees.currency = MangoModel::CurrencyIso::EUR
179
+ pay_in.fees.amount = 0
180
+
181
+ pay_in = MangoApi::PayIns.create_card_web pay_in
182
+
183
+ pay_in # => MangoModel::CardWebPayIn object
184
+ ```
185
+
186
+ ### Update a User
187
+
188
+ #### V3
189
+
190
+ ```ruby
191
+ natural_user = get_some_natural_user
192
+
193
+ updated_user = MangoPay::NaturalUser.update(natural_user['Id'] ,{
194
+ Email: 'jack@email.com'
195
+ })
196
+
197
+ updated_user # => Hash object
198
+ ```
199
+
200
+ #### V4
201
+
202
+ ```ruby
203
+ any_user = get_some_user
204
+
205
+ any_user.email = 'jack@email.com'
206
+
207
+ updated_user = MangoApi::Users.update any_user
208
+
209
+ updated_user # => MangoModel::LegalUser / MangoModel::NaturalUser object
210
+ ```
211
+
212
+ ### Get a User by id
213
+
214
+ #### V3
215
+
216
+ ```ruby
217
+ natural_user = get_some_natural_user
218
+
219
+ retrieved_user = MangoPay::LegalUser.fetch(natural_user['Id'])
220
+
221
+ retrieved_user # => Hash object
222
+ ```
223
+
224
+ #### V4
225
+
226
+ ```ruby
227
+ any_user = get_some_user
228
+
229
+ retrieved_user = MangoApi::Users.get(any_user.id)
230
+
231
+ retrieved_user # => MangoModel::NaturalUser / MangoModel::LegalUser object
232
+ ```
233
+
234
+ ### Get a PayIn by id
235
+
236
+ #### V3
237
+
238
+ ```ruby
239
+ pay_in = get_some_pay_in
240
+
241
+ retrieved_pay_in = MangoPay::PayIn.fetch(pay_in['Id'])
242
+
243
+ retrieved_pay_in # => Hash object
244
+ ```
245
+
246
+ #### V4
247
+
248
+ ```ruby
249
+ pay_in = get_some_pay_in
250
+
251
+ retrieved_pay_in = MangoApi::PayIns.get(pay_in.id)
252
+
253
+ retrieved_pay_in # => MangoModel::PayIn object
254
+ ```
255
+
256
+ ### List users
257
+
258
+ #### V3
259
+
260
+ ```ruby
261
+ users = MangoPay::User.fetch
262
+
263
+ users # => Array of Hash object
264
+ ```
265
+
266
+ #### V4
267
+
268
+ ```ruby
269
+ users = MangoApi::Users.all
270
+
271
+ users # => Array of MangoModel::Dispute objects
272
+ ```
273
+
274
+ ### Sorting, Paging, Filtering
275
+
276
+ #### V3
277
+
278
+ ```ruby
279
+ wallet = get_some_wallet
280
+
281
+ transactions = MangoPay::Transaction.fetch(wallet['Id'], {
282
+ 'page' => 2,
283
+ 'per_page' => 3,
284
+ 'sort' => 'CreationDate:DESC',
285
+ 'Nature' => 'REGULAR',
286
+ 'Type' => 'PAYIN'
287
+ })
288
+
289
+ transactions # => Array of corresponding Hash objects
290
+ ```
291
+
292
+ #### V4
293
+
294
+ In the new version, any API method which allows filtering of the result list will yield a FilterRequest object which has fields for every possible filtering parameter. See methods' documentation to learn what parameters are available for each call.
295
+
296
+ ```ruby
297
+ wallet = get_some_wallet
298
+
299
+ transactions = MangoApi::Transactions.of_wallet(wallet.id) do |filter|
300
+ filter.page = 2
301
+ filter.per_page = 3
302
+ filter.sort_field = MangoPay::SortField::CREATION_DATE
303
+ filter.sort_direction = MangoPay::SortDirection::ASC
304
+ filter.nature = MangoModel::TransactionNature::REGULAR
305
+ filter.type = MangoModel::TransactionType::PAYIN
306
+ end
307
+
308
+ transactions # => Array of corresponding MangoModel::Transaction objects
309
+ ```
310
+
311
+ ###### See the files in `'lib/mangopay/api/service'` and documentation for more info
312
+
313
+ ### Error Handling
314
+
315
+ Similar in V4 as it was in V3
316
+
317
+ ```ruby
318
+ begin
319
+ MangoApi::Users.create user
320
+ rescue MangoPay::ResponseError => ex
321
+
322
+ ex # => #<MangoPay::ResponseError: One or several required parameters are missing or incorrect. [...] FirstName: The FirstName field is required. LastName: The LastName field is required. Nationality: The Nationality field is required.>
323
+
324
+ ex.details # => {
325
+ # "Message"=>"One or several required parameters are missing or incorrect. [...]",
326
+ # "Type"=>"param_error",
327
+ # "Id"=>"5c080105-4da3-467d-820d-0906164e55fe",
328
+ # "Date"=>1409048671.0,
329
+ # "errors"=>{
330
+ # "FirstName"=>"The FirstName field is required.",
331
+ # "LastName"=>"The LastName field is required.", ...},
332
+ # "Code"=>"400",
333
+ # "Url"=>"/v2/.../users/natural"
334
+ # }
335
+ end
336
+ ```
337
+
338
+ ## New Features
339
+
340
+ ### The `MangoPay::Environment` Object
341
+
342
+ Use Environments to specify multiple MangoPay configurations within the same program. Specify the environment you want to switch to by using
343
+ ```ruby
344
+ require 'mangopay'
345
+
346
+ MangoPay.use_environment :env_id # Symbol
347
+ MangoPay.configure do |config|
348
+ config.client_id = 'first_id'
349
+ config.client_apiKey = 'first_pass'
350
+ end
351
+ MangoPay.use_environment :env2
352
+ MangoPay.configure do |config|
353
+ config.client_id = 'second_id'
354
+ config.client_apiKey = 'second_pass'
355
+ end
356
+ MangoPay.use_environment :env1
357
+ config = MangoPay.configuration
358
+ config.client_id # => 'first_id'
359
+ MangoPay.use_environment :env2
360
+ config = MangoPay.configuration
361
+ config.client_id # => 'second_id'
362
+ ```
363
+ They all get stored in memory - only OAuth Tokens may be kept in files.
364
+ #####`MangoPay.configure` must be called from each new Environment.
365
+ ######Of course, you can just call `MangoPay.configure` without specifying an environment, and all calls will be made under an automatically-assigned `:default` Environment.
366
+ #####Environments are Thread-specific for the duration of that Thread's lifetime.
367
+ This is done by Mapping each Thread's Ruby `Object.object_id` to the ID of the currently-active Environment. Configurations and other stuff like Rate Limits are stored in the Environment object obtainable context-specifically with a call to `MangoPay.environment` (i.e. Rate Limits and Configuration etc. of the Client will be Environment-specific). The relationship will be deleted as soon as the Thread dies, but the Environment remains correctly-configured to be used from any other Threads.
368
+ #####A new Thread will be assigned the most recently used Environment
369
+ ...unless another has meanwhile been switched to, in which case it will be that one (i.e. Environment specified in the last call to `MangoPay.use_environment` or the `:default` Environment if none were made). All calls made from any Thread in the same Environment will return results pertaining to the configuration specified for that specific environment.
370
+ ######This allows for various calls to be made in rapid succession with results dependent on each other without interfering with Configurations used on other Threads' Environments.
371
+
372
+ See the `MangoPay` module, the `Environment` and `Configuration` classes and documentation for more info.
373
+
374
+ ## Examples
375
+
376
+ ### See tests for explicit examples of configuration and virtually all API calls.
377
+
378
+ ##### You can run all tests quickly with `rspec` command or configure RubyMine to run an RSpec configuration of all specs in folder `'spec/mangopay'`, or of a single file for targeted debugging.
379
+
380
380
  Specific tests can be run as well, by passing a `:focus` parameter along with the test's description string (see `'spec_helper.rb'` for more info)