mangopay-v4 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +30 -0
  3. data/.rspec +4 -0
  4. data/.rubocop.yml +2 -0
  5. data/.travis.yml +13 -0
  6. data/Gemfile +2 -0
  7. data/LICENSE +20 -0
  8. data/README.md +380 -0
  9. data/bin/mangopay +9 -0
  10. data/lib/mangopay.rb +133 -0
  11. data/lib/mangopay/api/api.rb +9 -0
  12. data/lib/mangopay/api/api_methods.rb +137 -0
  13. data/lib/mangopay/api/auth_token_manager.rb +173 -0
  14. data/lib/mangopay/api/http_client.rb +325 -0
  15. data/lib/mangopay/api/service/bank_accounts.rb +146 -0
  16. data/lib/mangopay/api/service/cards.rb +152 -0
  17. data/lib/mangopay/api/service/client_wallets.rb +89 -0
  18. data/lib/mangopay/api/service/clients.rb +68 -0
  19. data/lib/mangopay/api/service/dispute_documents.rb +158 -0
  20. data/lib/mangopay/api/service/disputes.rb +187 -0
  21. data/lib/mangopay/api/service/e_money.rb +42 -0
  22. data/lib/mangopay/api/service/events.rb +47 -0
  23. data/lib/mangopay/api/service/hooks.rb +93 -0
  24. data/lib/mangopay/api/service/kyc_documents.rb +153 -0
  25. data/lib/mangopay/api/service/mandates.rb +142 -0
  26. data/lib/mangopay/api/service/oauth_tokens.rb +25 -0
  27. data/lib/mangopay/api/service/pay_ins.rb +260 -0
  28. data/lib/mangopay/api/service/pay_outs.rb +54 -0
  29. data/lib/mangopay/api/service/pre_authorizations.rb +69 -0
  30. data/lib/mangopay/api/service/refunds.rb +62 -0
  31. data/lib/mangopay/api/service/reports.rb +151 -0
  32. data/lib/mangopay/api/service/repudiations.rb +32 -0
  33. data/lib/mangopay/api/service/responses.rb +102 -0
  34. data/lib/mangopay/api/service/settlement_transfers.rb +55 -0
  35. data/lib/mangopay/api/service/transactions.rb +183 -0
  36. data/lib/mangopay/api/service/transfers.rb +54 -0
  37. data/lib/mangopay/api/service/ubo_declarations.rb +70 -0
  38. data/lib/mangopay/api/service/users.rb +163 -0
  39. data/lib/mangopay/api/service/wallets.rb +99 -0
  40. data/lib/mangopay/api/uri_provider.rb +35 -0
  41. data/lib/mangopay/common/json_tag_converter.rb +68 -0
  42. data/lib/mangopay/common/jsonifier.rb +249 -0
  43. data/lib/mangopay/common/log_provider.rb +34 -0
  44. data/lib/mangopay/common/rate_limit_interval.rb +17 -0
  45. data/lib/mangopay/common/read_only_fields.rb +27 -0
  46. data/lib/mangopay/common/response_error.rb +61 -0
  47. data/lib/mangopay/common/sort_direction.rb +15 -0
  48. data/lib/mangopay/common/sort_field.rb +13 -0
  49. data/lib/mangopay/common/template_url_options.rb +9 -0
  50. data/lib/mangopay/configuration.rb +39 -0
  51. data/lib/mangopay/environment.rb +66 -0
  52. data/lib/mangopay/model/address.rb +27 -0
  53. data/lib/mangopay/model/declared_ubo.rb +21 -0
  54. data/lib/mangopay/model/dispute_reason.rb +15 -0
  55. data/lib/mangopay/model/document_page_consult.rb +15 -0
  56. data/lib/mangopay/model/e_money.rb +18 -0
  57. data/lib/mangopay/model/entity/account/bank_account.rb +26 -0
  58. data/lib/mangopay/model/entity/account/ca_bank_account.rb +27 -0
  59. data/lib/mangopay/model/entity/account/gb_bank_account.rb +21 -0
  60. data/lib/mangopay/model/entity/account/iban_bank_account.rb +21 -0
  61. data/lib/mangopay/model/entity/account/other_bank_account.rb +24 -0
  62. data/lib/mangopay/model/entity/account/us_bank_account.rb +24 -0
  63. data/lib/mangopay/model/entity/card.rb +45 -0
  64. data/lib/mangopay/model/entity/card_registration.rb +43 -0
  65. data/lib/mangopay/model/entity/client.rb +63 -0
  66. data/lib/mangopay/model/entity/client_wallet.rb +23 -0
  67. data/lib/mangopay/model/entity/dispute.rb +50 -0
  68. data/lib/mangopay/model/entity/dispute_document.rb +29 -0
  69. data/lib/mangopay/model/entity/entity_base.rb +18 -0
  70. data/lib/mangopay/model/entity/hook.rb +26 -0
  71. data/lib/mangopay/model/entity/kyc_document.rb +28 -0
  72. data/lib/mangopay/model/entity/mandate.rb +51 -0
  73. data/lib/mangopay/model/entity/pay_in/bank_wire_direct_pay_in.rb +22 -0
  74. data/lib/mangopay/model/entity/pay_in/card_direct_pay_in.rb +33 -0
  75. data/lib/mangopay/model/entity/pay_in/card_pre_authorized_pay_in.rb +13 -0
  76. data/lib/mangopay/model/entity/pay_in/card_web_pay_in.rb +40 -0
  77. data/lib/mangopay/model/entity/pay_in/direct_debit_direct_pay_in.rb +23 -0
  78. data/lib/mangopay/model/entity/pay_in/direct_debit_web_pay_in.rb +38 -0
  79. data/lib/mangopay/model/entity/pay_in/pay_in.rb +16 -0
  80. data/lib/mangopay/model/entity/pay_out.rb +22 -0
  81. data/lib/mangopay/model/entity/pre_authorization.rb +68 -0
  82. data/lib/mangopay/model/entity/refund.rb +18 -0
  83. data/lib/mangopay/model/entity/report.rb +51 -0
  84. data/lib/mangopay/model/entity/repudiation.rb +18 -0
  85. data/lib/mangopay/model/entity/settlement_transfer.rb +17 -0
  86. data/lib/mangopay/model/entity/transaction.rb +52 -0
  87. data/lib/mangopay/model/entity/transfer.rb +13 -0
  88. data/lib/mangopay/model/entity/ubo_declaration.rb +32 -0
  89. data/lib/mangopay/model/entity/user/legal_user.rb +53 -0
  90. data/lib/mangopay/model/entity/user/natural_user.rb +50 -0
  91. data/lib/mangopay/model/entity/user/user.rb +18 -0
  92. data/lib/mangopay/model/entity/wallet.rb +28 -0
  93. data/lib/mangopay/model/enum/account_type.rb +24 -0
  94. data/lib/mangopay/model/enum/card_status.rb +15 -0
  95. data/lib/mangopay/model/enum/card_type.rb +33 -0
  96. data/lib/mangopay/model/enum/card_validity.rb +19 -0
  97. data/lib/mangopay/model/enum/country_iso.rb +759 -0
  98. data/lib/mangopay/model/enum/culture_code.rb +44 -0
  99. data/lib/mangopay/model/enum/currency_iso.rb +552 -0
  100. data/lib/mangopay/model/enum/declared_ubo_refused_reason_type.rb +16 -0
  101. data/lib/mangopay/model/enum/declared_ubo_status.rb +18 -0
  102. data/lib/mangopay/model/enum/deposit_type.rb +15 -0
  103. data/lib/mangopay/model/enum/direct_debit_type.rb +13 -0
  104. data/lib/mangopay/model/enum/dispute_doc_refused_reason_type.rb +25 -0
  105. data/lib/mangopay/model/enum/dispute_document_type.rb +23 -0
  106. data/lib/mangopay/model/enum/dispute_reason_type.rb +33 -0
  107. data/lib/mangopay/model/enum/dispute_status.rb +21 -0
  108. data/lib/mangopay/model/enum/dispute_type.rb +15 -0
  109. data/lib/mangopay/model/enum/document_status.rb +21 -0
  110. data/lib/mangopay/model/enum/download_format.rb +11 -0
  111. data/lib/mangopay/model/enum/event_type.rb +74 -0
  112. data/lib/mangopay/model/enum/funds_type.rb +15 -0
  113. data/lib/mangopay/model/enum/hook_status.rb +13 -0
  114. data/lib/mangopay/model/enum/hook_validity.rb +15 -0
  115. data/lib/mangopay/model/enum/income_range.rb +21 -0
  116. data/lib/mangopay/model/enum/kyc_doc_refused_reason_type.rb +37 -0
  117. data/lib/mangopay/model/enum/kyc_document_type.rb +19 -0
  118. data/lib/mangopay/model/enum/kyc_level.rb +13 -0
  119. data/lib/mangopay/model/enum/legal_person_type.rb +15 -0
  120. data/lib/mangopay/model/enum/mandate_culture_code.rb +23 -0
  121. data/lib/mangopay/model/enum/mandate_execution_type.rb +11 -0
  122. data/lib/mangopay/model/enum/mandate_scheme.rb +13 -0
  123. data/lib/mangopay/model/enum/mandate_status.rb +24 -0
  124. data/lib/mangopay/model/enum/mandate_type.rb +11 -0
  125. data/lib/mangopay/model/enum/natural_user_capacity.rb +15 -0
  126. data/lib/mangopay/model/enum/pay_in_execution_type.rb +18 -0
  127. data/lib/mangopay/model/enum/pay_in_payment_type.rb +21 -0
  128. data/lib/mangopay/model/enum/pay_out_payment_type.rb +11 -0
  129. data/lib/mangopay/model/enum/payment_status.rb +21 -0
  130. data/lib/mangopay/model/enum/person_type.rb +15 -0
  131. data/lib/mangopay/model/enum/platform_type.rb +23 -0
  132. data/lib/mangopay/model/enum/pre_authorization_execution_type.rb +11 -0
  133. data/lib/mangopay/model/enum/pre_authorization_status.rb +18 -0
  134. data/lib/mangopay/model/enum/refund_reason_type.rb +21 -0
  135. data/lib/mangopay/model/enum/report_status.rb +17 -0
  136. data/lib/mangopay/model/enum/report_type.rb +13 -0
  137. data/lib/mangopay/model/enum/secure_mode.rb +16 -0
  138. data/lib/mangopay/model/enum/transaction_nature.rb +17 -0
  139. data/lib/mangopay/model/enum/transaction_status.rb +15 -0
  140. data/lib/mangopay/model/enum/transaction_type.rb +15 -0
  141. data/lib/mangopay/model/enum/ubo_declaration_refused_reason_type.rb +19 -0
  142. data/lib/mangopay/model/enum/ubo_declaration_status.rb +21 -0
  143. data/lib/mangopay/model/event.rb +18 -0
  144. data/lib/mangopay/model/model.rb +194 -0
  145. data/lib/mangopay/model/money.rb +17 -0
  146. data/lib/mangopay/model/pay_in_web_extended_view.rb +31 -0
  147. data/lib/mangopay/model/refund_reason.rb +15 -0
  148. data/lib/mangopay/model/report_filter.rb +83 -0
  149. data/lib/mangopay/model/request/cancel_request.rb +16 -0
  150. data/lib/mangopay/model/request/complete_registration_request.rb +13 -0
  151. data/lib/mangopay/model/request/currency_request.rb +13 -0
  152. data/lib/mangopay/model/request/deactivation_request.rb +10 -0
  153. data/lib/mangopay/model/request/filter_request.rb +38 -0
  154. data/lib/mangopay/model/request/submit_document_request.rb +14 -0
  155. data/lib/mangopay/model/request/submit_ubo_declaration_request.rb +14 -0
  156. data/lib/mangopay/model/request/upload_file_request.rb +9 -0
  157. data/lib/mangopay/model/response_replica.rb +27 -0
  158. data/lib/mangopay/util/custom_formatter.rb +12 -0
  159. data/lib/mangopay/util/custom_logger.rb +34 -0
  160. data/lib/mangopay/util/enum.rb +52 -0
  161. data/lib/mangopay/util/file_encoder.rb +16 -0
  162. data/lib/mangopay/util/non_instantiable.rb +6 -0
  163. data/lib/mangopay/util/storage_strategy.rb +10 -0
  164. data/lib/mangopay/util/void_logger.rb +6 -0
  165. data/mangopay.gemspec +32 -0
  166. data/spec/context/address_context.rb +25 -0
  167. data/spec/context/bank_account_context.rb +138 -0
  168. data/spec/context/card_context.rb +46 -0
  169. data/spec/context/client_context.rb +45 -0
  170. data/spec/context/dispute_context.rb +37 -0
  171. data/spec/context/dispute_document_context.rb +20 -0
  172. data/spec/context/hook_context.rb +16 -0
  173. data/spec/context/kyc_document_context.rb +23 -0
  174. data/spec/context/mandate_context.rb +27 -0
  175. data/spec/context/pay_in_context.rb +225 -0
  176. data/spec/context/pay_out_context.rb +39 -0
  177. data/spec/context/pre_authorization_context.rb +41 -0
  178. data/spec/context/refund_context.rb +33 -0
  179. data/spec/context/report_context.rb +22 -0
  180. data/spec/context/repudiation_context.rb +19 -0
  181. data/spec/context/settlement_transfer_context.rb +28 -0
  182. data/spec/context/transfer_context.rb +51 -0
  183. data/spec/context/ubo_declaration_context.rb +25 -0
  184. data/spec/context/user_context.rb +83 -0
  185. data/spec/context/wallet_context.rb +53 -0
  186. data/spec/mangopay/bank_accounts_spec.rb +229 -0
  187. data/spec/mangopay/cards_spec.rb +135 -0
  188. data/spec/mangopay/client_wallets_spec.rb +148 -0
  189. data/spec/mangopay/clients_spec.rb +55 -0
  190. data/spec/mangopay/configuration_spec.rb +126 -0
  191. data/spec/mangopay/dispute_documents_spec.rb +174 -0
  192. data/spec/mangopay/disputes_spec.rb +265 -0
  193. data/spec/mangopay/e_money_spec.rb +38 -0
  194. data/spec/mangopay/events_spec.rb +50 -0
  195. data/spec/mangopay/hooks_spec.rb +71 -0
  196. data/spec/mangopay/kyc_documents_spec.rb +180 -0
  197. data/spec/mangopay/mandates_spec.rb +219 -0
  198. data/spec/mangopay/oauth_tokens_spec.rb +41 -0
  199. data/spec/mangopay/pay_ins_spec.rb +181 -0
  200. data/spec/mangopay/pay_outs_spec.rb +39 -0
  201. data/spec/mangopay/pre_authorizations_spec.rb +58 -0
  202. data/spec/mangopay/refunds_spec.rb +40 -0
  203. data/spec/mangopay/reports_spec.rb +121 -0
  204. data/spec/mangopay/responses_spec.rb +295 -0
  205. data/spec/mangopay/settlement_transfers_spec.rb +37 -0
  206. data/spec/mangopay/transactions_spec.rb +233 -0
  207. data/spec/mangopay/transfers_spec.rb +38 -0
  208. data/spec/mangopay/ubo_declarations_spec.rb +65 -0
  209. data/spec/mangopay/users_spec.rb +146 -0
  210. data/spec/mangopay/wallets_spec.rb +104 -0
  211. data/spec/resources/logo.png +0 -0
  212. data/spec/resources/test_pdf.pdf +0 -0
  213. data/spec/spec_helper.rb +72 -0
  214. metadata +349 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1a98e4f72516c98036fa3b66f788d4c4c9b99728
4
+ data.tar.gz: a6d24e15066b387c855af6b8b661863537cf4dc4
5
+ SHA512:
6
+ metadata.gz: 763338b0ec20bf27424ef1d294ba2d2616be0ef8c5b88347f43c9247d1fa0fe4363a07e13f03f798759a9d93352e9f88e4488a0aea82a278117b26e7e69b466c
7
+ data.tar.gz: 1a68da9d4460438dde042272b6de5c7ae94aad6b221c268f1846a7c7ef4960dc92abdfe30b1ce9dd1ff1bba770a5170246edea8f3a3d2a22d7e6faf08a44d5ab
data/.gitignore ADDED
@@ -0,0 +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
+
30
+ .idea
data/.rspec ADDED
@@ -0,0 +1,4 @@
1
+ --color
2
+ --profile
3
+ --r spec_helper
4
+ --format documentation
data/.rubocop.yml ADDED
@@ -0,0 +1,2 @@
1
+ Layout/EndOfLine:
2
+ EnforcedStyle: lf
data/.travis.yml ADDED
@@ -0,0 +1,13 @@
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
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source 'https://rubygems.org'
2
+ gemspec
data/LICENSE ADDED
@@ -0,0 +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.
data/README.md ADDED
@@ -0,0 +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
+
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)