mangopay-v4 4.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +30 -0
- data/.rspec +4 -0
- data/.rubocop.yml +2 -0
- data/.travis.yml +13 -0
- data/Gemfile +2 -0
- data/LICENSE +20 -0
- data/README.md +380 -0
- data/bin/mangopay +9 -0
- data/lib/mangopay.rb +133 -0
- data/lib/mangopay/api/api.rb +9 -0
- data/lib/mangopay/api/api_methods.rb +137 -0
- data/lib/mangopay/api/auth_token_manager.rb +173 -0
- data/lib/mangopay/api/http_client.rb +325 -0
- data/lib/mangopay/api/service/bank_accounts.rb +146 -0
- data/lib/mangopay/api/service/cards.rb +152 -0
- data/lib/mangopay/api/service/client_wallets.rb +89 -0
- data/lib/mangopay/api/service/clients.rb +68 -0
- data/lib/mangopay/api/service/dispute_documents.rb +158 -0
- data/lib/mangopay/api/service/disputes.rb +187 -0
- data/lib/mangopay/api/service/e_money.rb +42 -0
- data/lib/mangopay/api/service/events.rb +47 -0
- data/lib/mangopay/api/service/hooks.rb +93 -0
- data/lib/mangopay/api/service/kyc_documents.rb +153 -0
- data/lib/mangopay/api/service/mandates.rb +142 -0
- data/lib/mangopay/api/service/oauth_tokens.rb +25 -0
- data/lib/mangopay/api/service/pay_ins.rb +260 -0
- data/lib/mangopay/api/service/pay_outs.rb +54 -0
- data/lib/mangopay/api/service/pre_authorizations.rb +69 -0
- data/lib/mangopay/api/service/refunds.rb +62 -0
- data/lib/mangopay/api/service/reports.rb +151 -0
- data/lib/mangopay/api/service/repudiations.rb +32 -0
- data/lib/mangopay/api/service/responses.rb +102 -0
- data/lib/mangopay/api/service/settlement_transfers.rb +55 -0
- data/lib/mangopay/api/service/transactions.rb +183 -0
- data/lib/mangopay/api/service/transfers.rb +54 -0
- data/lib/mangopay/api/service/ubo_declarations.rb +70 -0
- data/lib/mangopay/api/service/users.rb +163 -0
- data/lib/mangopay/api/service/wallets.rb +99 -0
- data/lib/mangopay/api/uri_provider.rb +35 -0
- data/lib/mangopay/common/json_tag_converter.rb +68 -0
- data/lib/mangopay/common/jsonifier.rb +249 -0
- data/lib/mangopay/common/log_provider.rb +34 -0
- data/lib/mangopay/common/rate_limit_interval.rb +17 -0
- data/lib/mangopay/common/read_only_fields.rb +27 -0
- data/lib/mangopay/common/response_error.rb +61 -0
- data/lib/mangopay/common/sort_direction.rb +15 -0
- data/lib/mangopay/common/sort_field.rb +13 -0
- data/lib/mangopay/common/template_url_options.rb +9 -0
- data/lib/mangopay/configuration.rb +39 -0
- data/lib/mangopay/environment.rb +66 -0
- data/lib/mangopay/model/address.rb +27 -0
- data/lib/mangopay/model/declared_ubo.rb +21 -0
- data/lib/mangopay/model/dispute_reason.rb +15 -0
- data/lib/mangopay/model/document_page_consult.rb +15 -0
- data/lib/mangopay/model/e_money.rb +18 -0
- data/lib/mangopay/model/entity/account/bank_account.rb +26 -0
- data/lib/mangopay/model/entity/account/ca_bank_account.rb +27 -0
- data/lib/mangopay/model/entity/account/gb_bank_account.rb +21 -0
- data/lib/mangopay/model/entity/account/iban_bank_account.rb +21 -0
- data/lib/mangopay/model/entity/account/other_bank_account.rb +24 -0
- data/lib/mangopay/model/entity/account/us_bank_account.rb +24 -0
- data/lib/mangopay/model/entity/card.rb +45 -0
- data/lib/mangopay/model/entity/card_registration.rb +43 -0
- data/lib/mangopay/model/entity/client.rb +63 -0
- data/lib/mangopay/model/entity/client_wallet.rb +23 -0
- data/lib/mangopay/model/entity/dispute.rb +50 -0
- data/lib/mangopay/model/entity/dispute_document.rb +29 -0
- data/lib/mangopay/model/entity/entity_base.rb +18 -0
- data/lib/mangopay/model/entity/hook.rb +26 -0
- data/lib/mangopay/model/entity/kyc_document.rb +28 -0
- data/lib/mangopay/model/entity/mandate.rb +51 -0
- data/lib/mangopay/model/entity/pay_in/bank_wire_direct_pay_in.rb +22 -0
- data/lib/mangopay/model/entity/pay_in/card_direct_pay_in.rb +33 -0
- data/lib/mangopay/model/entity/pay_in/card_pre_authorized_pay_in.rb +13 -0
- data/lib/mangopay/model/entity/pay_in/card_web_pay_in.rb +40 -0
- data/lib/mangopay/model/entity/pay_in/direct_debit_direct_pay_in.rb +23 -0
- data/lib/mangopay/model/entity/pay_in/direct_debit_web_pay_in.rb +38 -0
- data/lib/mangopay/model/entity/pay_in/pay_in.rb +16 -0
- data/lib/mangopay/model/entity/pay_out.rb +22 -0
- data/lib/mangopay/model/entity/pre_authorization.rb +68 -0
- data/lib/mangopay/model/entity/refund.rb +18 -0
- data/lib/mangopay/model/entity/report.rb +51 -0
- data/lib/mangopay/model/entity/repudiation.rb +18 -0
- data/lib/mangopay/model/entity/settlement_transfer.rb +17 -0
- data/lib/mangopay/model/entity/transaction.rb +52 -0
- data/lib/mangopay/model/entity/transfer.rb +13 -0
- data/lib/mangopay/model/entity/ubo_declaration.rb +32 -0
- data/lib/mangopay/model/entity/user/legal_user.rb +53 -0
- data/lib/mangopay/model/entity/user/natural_user.rb +50 -0
- data/lib/mangopay/model/entity/user/user.rb +18 -0
- data/lib/mangopay/model/entity/wallet.rb +28 -0
- data/lib/mangopay/model/enum/account_type.rb +24 -0
- data/lib/mangopay/model/enum/card_status.rb +15 -0
- data/lib/mangopay/model/enum/card_type.rb +33 -0
- data/lib/mangopay/model/enum/card_validity.rb +19 -0
- data/lib/mangopay/model/enum/country_iso.rb +759 -0
- data/lib/mangopay/model/enum/culture_code.rb +44 -0
- data/lib/mangopay/model/enum/currency_iso.rb +552 -0
- data/lib/mangopay/model/enum/declared_ubo_refused_reason_type.rb +16 -0
- data/lib/mangopay/model/enum/declared_ubo_status.rb +18 -0
- data/lib/mangopay/model/enum/deposit_type.rb +15 -0
- data/lib/mangopay/model/enum/direct_debit_type.rb +13 -0
- data/lib/mangopay/model/enum/dispute_doc_refused_reason_type.rb +25 -0
- data/lib/mangopay/model/enum/dispute_document_type.rb +23 -0
- data/lib/mangopay/model/enum/dispute_reason_type.rb +33 -0
- data/lib/mangopay/model/enum/dispute_status.rb +21 -0
- data/lib/mangopay/model/enum/dispute_type.rb +15 -0
- data/lib/mangopay/model/enum/document_status.rb +21 -0
- data/lib/mangopay/model/enum/download_format.rb +11 -0
- data/lib/mangopay/model/enum/event_type.rb +74 -0
- data/lib/mangopay/model/enum/funds_type.rb +15 -0
- data/lib/mangopay/model/enum/hook_status.rb +13 -0
- data/lib/mangopay/model/enum/hook_validity.rb +15 -0
- data/lib/mangopay/model/enum/income_range.rb +21 -0
- data/lib/mangopay/model/enum/kyc_doc_refused_reason_type.rb +37 -0
- data/lib/mangopay/model/enum/kyc_document_type.rb +19 -0
- data/lib/mangopay/model/enum/kyc_level.rb +13 -0
- data/lib/mangopay/model/enum/legal_person_type.rb +15 -0
- data/lib/mangopay/model/enum/mandate_culture_code.rb +23 -0
- data/lib/mangopay/model/enum/mandate_execution_type.rb +11 -0
- data/lib/mangopay/model/enum/mandate_scheme.rb +13 -0
- data/lib/mangopay/model/enum/mandate_status.rb +24 -0
- data/lib/mangopay/model/enum/mandate_type.rb +11 -0
- data/lib/mangopay/model/enum/natural_user_capacity.rb +15 -0
- data/lib/mangopay/model/enum/pay_in_execution_type.rb +18 -0
- data/lib/mangopay/model/enum/pay_in_payment_type.rb +21 -0
- data/lib/mangopay/model/enum/pay_out_payment_type.rb +11 -0
- data/lib/mangopay/model/enum/payment_status.rb +21 -0
- data/lib/mangopay/model/enum/person_type.rb +15 -0
- data/lib/mangopay/model/enum/platform_type.rb +23 -0
- data/lib/mangopay/model/enum/pre_authorization_execution_type.rb +11 -0
- data/lib/mangopay/model/enum/pre_authorization_status.rb +18 -0
- data/lib/mangopay/model/enum/refund_reason_type.rb +21 -0
- data/lib/mangopay/model/enum/report_status.rb +17 -0
- data/lib/mangopay/model/enum/report_type.rb +13 -0
- data/lib/mangopay/model/enum/secure_mode.rb +16 -0
- data/lib/mangopay/model/enum/transaction_nature.rb +17 -0
- data/lib/mangopay/model/enum/transaction_status.rb +15 -0
- data/lib/mangopay/model/enum/transaction_type.rb +15 -0
- data/lib/mangopay/model/enum/ubo_declaration_refused_reason_type.rb +19 -0
- data/lib/mangopay/model/enum/ubo_declaration_status.rb +21 -0
- data/lib/mangopay/model/event.rb +18 -0
- data/lib/mangopay/model/model.rb +194 -0
- data/lib/mangopay/model/money.rb +17 -0
- data/lib/mangopay/model/pay_in_web_extended_view.rb +31 -0
- data/lib/mangopay/model/refund_reason.rb +15 -0
- data/lib/mangopay/model/report_filter.rb +83 -0
- data/lib/mangopay/model/request/cancel_request.rb +16 -0
- data/lib/mangopay/model/request/complete_registration_request.rb +13 -0
- data/lib/mangopay/model/request/currency_request.rb +13 -0
- data/lib/mangopay/model/request/deactivation_request.rb +10 -0
- data/lib/mangopay/model/request/filter_request.rb +38 -0
- data/lib/mangopay/model/request/submit_document_request.rb +14 -0
- data/lib/mangopay/model/request/submit_ubo_declaration_request.rb +14 -0
- data/lib/mangopay/model/request/upload_file_request.rb +9 -0
- data/lib/mangopay/model/response_replica.rb +27 -0
- data/lib/mangopay/util/custom_formatter.rb +12 -0
- data/lib/mangopay/util/custom_logger.rb +34 -0
- data/lib/mangopay/util/enum.rb +52 -0
- data/lib/mangopay/util/file_encoder.rb +16 -0
- data/lib/mangopay/util/non_instantiable.rb +6 -0
- data/lib/mangopay/util/storage_strategy.rb +10 -0
- data/lib/mangopay/util/void_logger.rb +6 -0
- data/mangopay.gemspec +32 -0
- data/spec/context/address_context.rb +25 -0
- data/spec/context/bank_account_context.rb +138 -0
- data/spec/context/card_context.rb +46 -0
- data/spec/context/client_context.rb +45 -0
- data/spec/context/dispute_context.rb +37 -0
- data/spec/context/dispute_document_context.rb +20 -0
- data/spec/context/hook_context.rb +16 -0
- data/spec/context/kyc_document_context.rb +23 -0
- data/spec/context/mandate_context.rb +27 -0
- data/spec/context/pay_in_context.rb +225 -0
- data/spec/context/pay_out_context.rb +39 -0
- data/spec/context/pre_authorization_context.rb +41 -0
- data/spec/context/refund_context.rb +33 -0
- data/spec/context/report_context.rb +22 -0
- data/spec/context/repudiation_context.rb +19 -0
- data/spec/context/settlement_transfer_context.rb +28 -0
- data/spec/context/transfer_context.rb +51 -0
- data/spec/context/ubo_declaration_context.rb +25 -0
- data/spec/context/user_context.rb +83 -0
- data/spec/context/wallet_context.rb +53 -0
- data/spec/mangopay/bank_accounts_spec.rb +229 -0
- data/spec/mangopay/cards_spec.rb +135 -0
- data/spec/mangopay/client_wallets_spec.rb +148 -0
- data/spec/mangopay/clients_spec.rb +55 -0
- data/spec/mangopay/configuration_spec.rb +126 -0
- data/spec/mangopay/dispute_documents_spec.rb +174 -0
- data/spec/mangopay/disputes_spec.rb +265 -0
- data/spec/mangopay/e_money_spec.rb +38 -0
- data/spec/mangopay/events_spec.rb +50 -0
- data/spec/mangopay/hooks_spec.rb +71 -0
- data/spec/mangopay/kyc_documents_spec.rb +180 -0
- data/spec/mangopay/mandates_spec.rb +219 -0
- data/spec/mangopay/oauth_tokens_spec.rb +41 -0
- data/spec/mangopay/pay_ins_spec.rb +181 -0
- data/spec/mangopay/pay_outs_spec.rb +39 -0
- data/spec/mangopay/pre_authorizations_spec.rb +58 -0
- data/spec/mangopay/refunds_spec.rb +40 -0
- data/spec/mangopay/reports_spec.rb +121 -0
- data/spec/mangopay/responses_spec.rb +295 -0
- data/spec/mangopay/settlement_transfers_spec.rb +37 -0
- data/spec/mangopay/transactions_spec.rb +233 -0
- data/spec/mangopay/transfers_spec.rb +38 -0
- data/spec/mangopay/ubo_declarations_spec.rb +65 -0
- data/spec/mangopay/users_spec.rb +146 -0
- data/spec/mangopay/wallets_spec.rb +104 -0
- data/spec/resources/logo.png +0 -0
- data/spec/resources/test_pdf.pdf +0 -0
- data/spec/spec_helper.rb +72 -0
- 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
data/.rubocop.yml
ADDED
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
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)
|