mangopay 2.0.0 → 3.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.
- checksums.yaml +4 -4
- data/.gitignore +24 -0
- data/.rspec +2 -0
- data/Gemfile +1 -2
- data/LICENSE +20 -0
- data/README.md +19 -90
- data/bin/mangopay +9 -0
- data/lib/generators/mangopay/install_generator.rb +60 -0
- data/lib/generators/templates/mangopay.rb +5 -0
- data/lib/mangopay.rb +94 -24
- data/lib/mangopay/bank_account.rb +21 -0
- data/lib/mangopay/client.rb +17 -0
- data/lib/mangopay/errors.rb +4 -0
- data/lib/mangopay/http_calls.rb +53 -0
- data/lib/mangopay/json.rb +21 -0
- data/lib/mangopay/legal_user.rb +14 -0
- data/lib/mangopay/natural_user.rb +14 -0
- data/lib/mangopay/payin.rb +17 -0
- data/lib/mangopay/payout.rb +15 -0
- data/lib/mangopay/resource.rb +22 -0
- data/lib/mangopay/transaction.rb +11 -0
- data/lib/mangopay/transfer.rb +4 -55
- data/lib/mangopay/user.rb +4 -145
- data/lib/mangopay/version.rb +3 -0
- data/lib/mangopay/wallet.rb +4 -90
- data/mangopay.gemspec +33 -0
- data/spec/lib/mangopay/bank_account_spec.rb +26 -0
- data/spec/lib/mangopay/client_spec.rb +27 -0
- data/spec/lib/mangopay/payin_spec.rb +31 -0
- data/spec/lib/mangopay/payout_spec.rb +24 -0
- data/spec/lib/mangopay/shared_resources.rb +183 -0
- data/spec/lib/mangopay/transaction_spec.rb +14 -0
- data/spec/lib/mangopay/transfer_spec.rb +25 -81
- data/spec/lib/mangopay/user_spec.rb +37 -103
- data/spec/lib/mangopay/wallet_spec.rb +24 -73
- data/spec/spec_helper.rb +9 -38
- metadata +60 -97
- data/CONTRIBUTING.md +0 -51
- data/Rakefile +0 -5
- data/lib/mangopay/beneficiary.rb +0 -72
- data/lib/mangopay/card.rb +0 -42
- data/lib/mangopay/contribution.rb +0 -61
- data/lib/mangopay/expense.rb +0 -17
- data/lib/mangopay/immediate_contribution.rb +0 -58
- data/lib/mangopay/operation.rb +0 -16
- data/lib/mangopay/recurrent_contribution.rb +0 -62
- data/lib/mangopay/ressource.rb +0 -96
- data/lib/mangopay/strong_authentication.rb +0 -28
- data/lib/mangopay/withdrawal.rb +0 -40
- data/lib/mangopay/withdrawal_contribution.rb +0 -32
- data/spec/lib/mangopay/beneficiary_spec.rb +0 -124
- data/spec/lib/mangopay/card_spec.rb +0 -52
- data/spec/lib/mangopay/contribution_spec.rb +0 -65
- data/spec/lib/mangopay/expense_spec.rb +0 -10
- data/spec/lib/mangopay/immediate_contribution_spec.rb +0 -73
- data/spec/lib/mangopay/operation_spec.rb +0 -8
- data/spec/lib/mangopay/recurrent_contribution_spec.rb +0 -55
- data/spec/lib/mangopay/ressource_spec.rb +0 -5
- data/spec/lib/mangopay/strong_authentication_spec.rb +0 -82
- data/spec/lib/mangopay/withdrawal_contribution_spec.rb +0 -44
- data/spec/lib/mangopay/withdrawal_spec.rb +0 -98
- data/spec/support-files/example.pem +0 -49
- data/spec/support-files/test_upload.gif +0 -0
- data/spec/support-files/test_upload.jpg +0 -0
- data/spec/support-files/test_upload.pdf +0 -0
- data/spec/support-files/test_upload.png +0 -0
@@ -0,0 +1,53 @@
|
|
1
|
+
module MangoPay
|
2
|
+
module HTTPCalls
|
3
|
+
module Create
|
4
|
+
module ClassMethods
|
5
|
+
|
6
|
+
def create(*id, params)
|
7
|
+
id = id.empty? ? nil : id[0]
|
8
|
+
response = MangoPay.request(:post, url(id), params)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.included(base)
|
13
|
+
base.extend(ClassMethods)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
module Update
|
18
|
+
module ClassMethods
|
19
|
+
def update(id = nil, params = {})
|
20
|
+
response = MangoPay.request(:put, url(id), params)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.included(base)
|
25
|
+
base.extend(ClassMethods)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
module Fetch
|
30
|
+
module ClassMethods
|
31
|
+
def fetch(id = nil, filters = {})
|
32
|
+
response = MangoPay.request(:get, url(id), filters)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.included(base)
|
37
|
+
base.extend(ClassMethods)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
module Refund
|
42
|
+
module ClassMethods
|
43
|
+
def refund(id = nil, params = {})
|
44
|
+
MangoPay.request(:post, url(id) + '/refunds', params)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def self.included(base)
|
49
|
+
base.extend(ClassMethods)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module MangoPay
|
2
|
+
module JSON
|
3
|
+
if MultiJson.respond_to?(:dump)
|
4
|
+
def self.dump(*args)
|
5
|
+
MultiJson.dump(*args)
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.load(*args)
|
9
|
+
MultiJson.load(*args)
|
10
|
+
end
|
11
|
+
else
|
12
|
+
def self.dump(*args)
|
13
|
+
MultiJson.encode(*args)
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.load(*args)
|
17
|
+
MultiJson.decode(*args)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module MangoPay
|
2
|
+
class LegalUser < User
|
3
|
+
|
4
|
+
private
|
5
|
+
|
6
|
+
def self.url(id = nil)
|
7
|
+
if id
|
8
|
+
"/v2/#{MangoPay.configuration.client_id}/users/legal/#{CGI.escape(id)}"
|
9
|
+
else
|
10
|
+
"/v2/#{MangoPay.configuration.client_id}/users/legal"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module MangoPay
|
2
|
+
class NaturalUser < User
|
3
|
+
|
4
|
+
private
|
5
|
+
|
6
|
+
def self.url(id = nil)
|
7
|
+
if id
|
8
|
+
"/v2/#{MangoPay.configuration.client_id}/users/natural/#{CGI.escape(id)}"
|
9
|
+
else
|
10
|
+
"/v2/#{MangoPay.configuration.client_id}/users/natural"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module MangoPay
|
2
|
+
class PayIn < Resource
|
3
|
+
include MangoPay::HTTPCalls::Fetch
|
4
|
+
include MangoPay::HTTPCalls::Refund
|
5
|
+
module Card
|
6
|
+
class Web < Resource
|
7
|
+
include MangoPay::HTTPCalls::Create
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
def self.url(id = nil)
|
12
|
+
"/v2/#{MangoPay.configuration.client_id}/payins/card/#{CGI.escape(class_name.downcase)}"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module MangoPay
|
2
|
+
class PayOut < Resource
|
3
|
+
include MangoPay::HTTPCalls::Fetch
|
4
|
+
|
5
|
+
class BankWire < Resource
|
6
|
+
include MangoPay::HTTPCalls::Create
|
7
|
+
|
8
|
+
private
|
9
|
+
|
10
|
+
def self.url(id = nil)
|
11
|
+
"/v2/#{MangoPay.configuration.client_id}/payouts/bankwire"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module MangoPay
|
2
|
+
# @abstract
|
3
|
+
class Resource
|
4
|
+
|
5
|
+
protected
|
6
|
+
|
7
|
+
def self.class_name
|
8
|
+
self.name.split('::')[-1]
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.url(id = nil)
|
12
|
+
if self == Resource
|
13
|
+
raise NotImplementedError.new('Resource is an abstract class. Do not use it directly.')
|
14
|
+
end
|
15
|
+
if id
|
16
|
+
"/v2/#{MangoPay.configuration.client_id}/#{CGI.escape(class_name.downcase)}s/#{CGI.escape(id)}"
|
17
|
+
else
|
18
|
+
"/v2/#{MangoPay.configuration.client_id}/#{CGI.escape(class_name.downcase)}s"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/mangopay/transfer.rb
CHANGED
@@ -1,58 +1,7 @@
|
|
1
1
|
module MangoPay
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
#
|
7
|
-
# * *Args* :
|
8
|
-
# - +data+ -> A JSON with the following attributes (Square brackets for optionals):
|
9
|
-
# * [Tag]
|
10
|
-
# * [PayerID]
|
11
|
-
# * [BeneficiaryID]
|
12
|
-
# * Amount
|
13
|
-
# * [ClientFeeAmount] (In preproduction environnment only, soon in production)
|
14
|
-
# * [PayerWalletID]
|
15
|
-
# * [BeneficiaryWalletID]
|
16
|
-
# * *Returns* :
|
17
|
-
# - A transfer object
|
18
|
-
#
|
19
|
-
def self.create(data)
|
20
|
-
post_request('transfers', data)
|
21
|
-
end
|
22
|
-
|
23
|
-
# Get a transfer
|
24
|
-
#
|
25
|
-
# * *Args* :
|
26
|
-
# - +tranfer_id+ -> The id of the transfer you want to retrieve
|
27
|
-
# * *Returns* :
|
28
|
-
# - A transfer object
|
29
|
-
#
|
30
|
-
def self.details(transfer_id)
|
31
|
-
get_request(File.join('transfers', transfer_id.to_s))
|
32
|
-
end
|
33
|
-
|
34
|
-
# Refund a contribution from a personal wallet to a shared walletTransferID
|
35
|
-
#
|
36
|
-
# * *Args* :
|
37
|
-
# - +data+ -> A JSON with the following attributes (Square brackets for optionals):
|
38
|
-
# * TransfertID
|
39
|
-
# * UserID
|
40
|
-
# * *Returns* :
|
41
|
-
# - A transfer refund object
|
42
|
-
#
|
43
|
-
def self.refund(data)
|
44
|
-
post_request(File.join('transfer-refunds'), data)
|
45
|
-
end
|
46
|
-
|
47
|
-
# Get a refund transfer object
|
48
|
-
#
|
49
|
-
# * *Args* :
|
50
|
-
# - +transfer_refund_id+ -> The id of the transfer refund you want to retrieve
|
51
|
-
# * *Returns* :
|
52
|
-
# - A transfer refund object
|
53
|
-
#
|
54
|
-
def self.get_refund(transfer_refund_id)
|
55
|
-
get_request(File.join('transfer-refunds', transfer_refund_id.to_s))
|
56
|
-
end
|
2
|
+
class Transfer < Resource
|
3
|
+
include MangoPay::HTTPCalls::Create
|
4
|
+
include MangoPay::HTTPCalls::Fetch
|
5
|
+
include MangoPay::HTTPCalls::Refund
|
57
6
|
end
|
58
7
|
end
|
data/lib/mangopay/user.rb
CHANGED
@@ -1,148 +1,7 @@
|
|
1
1
|
module MangoPay
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
#
|
7
|
-
# * *Args* :
|
8
|
-
# - +data+ -> A JSON with the following attributes (Square brackets for optionals):
|
9
|
-
# * [Tag]
|
10
|
-
# * [Email]
|
11
|
-
# * [FirstName]
|
12
|
-
# * [LastName]
|
13
|
-
# * [CanRegisterMeanOfPayment] true by default
|
14
|
-
# * IP
|
15
|
-
# * [Birthday]
|
16
|
-
# * [Password]
|
17
|
-
# * *Returns* :
|
18
|
-
# - A user object
|
19
|
-
#
|
20
|
-
def self.create(data)
|
21
|
-
post_request('users', data)
|
22
|
-
end
|
23
|
-
|
24
|
-
# Get a user
|
25
|
-
#
|
26
|
-
# * *Args* :
|
27
|
-
# - +user_id+ -> The id of the user you want to retrieve
|
28
|
-
# * *Returns* :
|
29
|
-
# - A user object
|
30
|
-
#
|
31
|
-
def self.details(user_id)
|
32
|
-
get_request(File.join('users', user_id.to_s))
|
33
|
-
end
|
34
|
-
|
35
|
-
# Update a given user
|
36
|
-
#
|
37
|
-
# * *Args* :
|
38
|
-
# - +user_id+ -> The id of the user you want to update
|
39
|
-
# - +data+ -> A JSON with the following attributes (Square brackets for optionals):
|
40
|
-
# * [Tag]
|
41
|
-
# * [Email]
|
42
|
-
# * [FirstName]
|
43
|
-
# * [LastName]
|
44
|
-
# * [CanRegisterMeanOfPayment]
|
45
|
-
# * [Password]
|
46
|
-
# * *Returns* :
|
47
|
-
# - A user object
|
48
|
-
#
|
49
|
-
def self.update(user_id, data)
|
50
|
-
put_request(File.join('users', user_id.to_s), data)
|
51
|
-
end
|
52
|
-
|
53
|
-
# Get a list of the given user wallets
|
54
|
-
#
|
55
|
-
# * *Args* :
|
56
|
-
# - +user_id+ -> The id of the user you want to retrieve wallets from
|
57
|
-
# * *Returns* :
|
58
|
-
# - An array of wallets objects
|
59
|
-
#
|
60
|
-
def self.get_wallets(user_id)
|
61
|
-
get_request(File.join('users', user_id.to_s, 'wallets'))
|
62
|
-
end
|
63
|
-
|
64
|
-
# Get a list of the given user payment cards
|
65
|
-
#
|
66
|
-
# * *Args* :
|
67
|
-
# - +user_id+ -> The id of the user you want to retrieve cards from
|
68
|
-
# * *Returns* :
|
69
|
-
# - An array of registered payment cards objects
|
70
|
-
#
|
71
|
-
def self.cards(user_id)
|
72
|
-
get_request(File.join('users', user_id.to_s, 'cards'))
|
73
|
-
end
|
74
|
-
|
75
|
-
# Get operations associated with a user
|
76
|
-
#
|
77
|
-
# * *Args* :
|
78
|
-
# - +user_id+ -> The id of the user you want to retrieve operations from
|
79
|
-
# * *Returns* :
|
80
|
-
# - An array of operations objects
|
81
|
-
#
|
82
|
-
def self.operations(user_id)
|
83
|
-
get_request(File.join('users', user_id.to_s, 'operations'))
|
84
|
-
end
|
85
|
-
|
86
|
-
# Get operations from the given user personal account
|
87
|
-
#
|
88
|
-
# * *Args* :
|
89
|
-
# - +user_id+ -> The id of the user you want to retrieve operations from
|
90
|
-
# * *Returns* :
|
91
|
-
# - An array of operations objects
|
92
|
-
#
|
93
|
-
def self.personal_operations(user_id)
|
94
|
-
get_request(File.join('users', user_id.to_s, 'operations', 'personal'))
|
95
|
-
end
|
96
|
-
|
97
|
-
# Create a request of strong user authentication.
|
98
|
-
# If a strongAuthentication object already exist for the user, this request returns the existing object.
|
99
|
-
#
|
100
|
-
# * *Args* :
|
101
|
-
# - +user_id+ -> The id of the user you want to strongly authenticate
|
102
|
-
# - +data+ -> A JSON with the following attributes (Square brackets for optionals):
|
103
|
-
# * [Tag]
|
104
|
-
# * *Returns* :
|
105
|
-
# - A Strong Authentication object
|
106
|
-
#
|
107
|
-
def self.create_strong_authentication(user_id, data)
|
108
|
-
post_request(File.join('users', user_id.to_s, 'strongAuthentication'), data)
|
109
|
-
end
|
110
|
-
|
111
|
-
# Get a Strong Authentication object
|
112
|
-
#
|
113
|
-
# * *Args* :
|
114
|
-
# - +user_id+ -> The id of the user you want to retrieve the strong authentication object from
|
115
|
-
# * *Returns* :
|
116
|
-
# - A Strong Authentication object
|
117
|
-
#
|
118
|
-
def self.get_strong_authentication(user_id)
|
119
|
-
get_request(File.join('users', user_id.to_s, 'strongAuthentication'))
|
120
|
-
end
|
121
|
-
|
122
|
-
# Update a Strong Authentication object
|
123
|
-
#
|
124
|
-
# * *Args* :
|
125
|
-
# - +user_id+ -> The id of the user you want to update the strong authentication object from
|
126
|
-
# - +data+ -> A JSON with the following attributes (Square brackets for optionals):
|
127
|
-
# * [Tag]
|
128
|
-
# * [IsDocumentsTransmitted]
|
129
|
-
# * *Returns* :
|
130
|
-
# - A Strong Authentication object
|
131
|
-
#
|
132
|
-
def self.update_strong_authentication(user_id, data)
|
133
|
-
put_request(File.join('users', user_id.to_s, 'strongAuthentication'), data)
|
134
|
-
end
|
135
|
-
|
136
|
-
# Get the expense sites for a given user
|
137
|
-
#
|
138
|
-
# * *Args* :
|
139
|
-
# - +user_id+ -> The id of the user you want to retrieve the expense sites from
|
140
|
-
# - +wallet_id+ -> The id of the wallet you want to retrieve the expense sites from
|
141
|
-
# * *Returns* :
|
142
|
-
# - An array of expense site objects
|
143
|
-
#
|
144
|
-
def self.expense_sites(user_id, wallet_id)
|
145
|
-
get_request(File.join('expense-sites'), "userID=#{user_id.to_s}&walletID=#{wallet_id.to_s}")
|
146
|
-
end
|
2
|
+
class User < Resource
|
3
|
+
include MangoPay::HTTPCalls::Create
|
4
|
+
include MangoPay::HTTPCalls::Update
|
5
|
+
include MangoPay::HTTPCalls::Fetch
|
147
6
|
end
|
148
7
|
end
|
data/lib/mangopay/wallet.rb
CHANGED
@@ -1,93 +1,7 @@
|
|
1
1
|
module MangoPay
|
2
|
-
class Wallet <
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
# * *Args* :
|
7
|
-
# - +data+ -> A JSON with the following attributes (Square brackets for optionals):
|
8
|
-
# * [Tag]
|
9
|
-
# * Owners (an array of user IDs, but only one is supported now)
|
10
|
-
# * [Name]
|
11
|
-
# * [Description]
|
12
|
-
# * [RaisingGoalAmount]
|
13
|
-
# * [ContributionLimitDate]
|
14
|
-
# * *Returns* :
|
15
|
-
# - A wallet object
|
16
|
-
#
|
17
|
-
def self.create(data)
|
18
|
-
post_request('wallets', data)
|
19
|
-
end
|
20
|
-
|
21
|
-
# Get a wallet
|
22
|
-
#
|
23
|
-
# * *Args* :
|
24
|
-
# - +wallet_id+ -> The id of the wallet you want to retrieve
|
25
|
-
# * *Returns* :
|
26
|
-
# - A wallet object
|
27
|
-
#
|
28
|
-
def self.details(wallet_id)
|
29
|
-
get_request(File.join('wallets', wallet_id.to_s))
|
30
|
-
end
|
31
|
-
|
32
|
-
# Update a wallet
|
33
|
-
#
|
34
|
-
# * *Args* :
|
35
|
-
# - +wallet_id+ -> The id of the wallet you want to update
|
36
|
-
# - +data+ -> A JSON with the following attributes (Square brackets for optionals):
|
37
|
-
# * [Name]
|
38
|
-
# * [Description]
|
39
|
-
# * [RaisingGoalAmount]
|
40
|
-
# * [SuggestedAmount]
|
41
|
-
# * [ExpirationDate] [Tag]
|
42
|
-
# * *Returns* :
|
43
|
-
# - A wallet object
|
44
|
-
#
|
45
|
-
def self.update(wallet_id, data)
|
46
|
-
put_request(File.join('wallets', wallet_id.to_s), data)
|
47
|
-
end
|
48
|
-
|
49
|
-
# Get the owners of a wallet
|
50
|
-
#
|
51
|
-
# * *Args* :
|
52
|
-
# - +wallet_id+ -> The id of the wallet you want to retrieve the owners from
|
53
|
-
# * *Returns* :
|
54
|
-
# - An array of users objects
|
55
|
-
#
|
56
|
-
def self.get_owners(wallet_id)
|
57
|
-
get_request(File.join('wallets', wallet_id.to_s, 'users'), 'owners=1')
|
58
|
-
end
|
59
|
-
|
60
|
-
# Get the contributors of a wallet
|
61
|
-
#
|
62
|
-
# * *Args* :
|
63
|
-
# - +wallet_id+ -> The id of the wallet you want to retrieve the contributors from
|
64
|
-
# * *Returns* :
|
65
|
-
# - An array of users objects
|
66
|
-
#
|
67
|
-
def self.get_contributors(wallet_id)
|
68
|
-
get_request(File.join('wallets', wallet_id.to_s, 'users'), 'contributors=1')
|
69
|
-
end
|
70
|
-
|
71
|
-
# Get the refunded users of a wallet
|
72
|
-
#
|
73
|
-
# * *Args* :
|
74
|
-
# - +wallet_id+ -> The id of the wallet you want to refunded users the owners from
|
75
|
-
# * *Returns* :
|
76
|
-
# - An array of users objects
|
77
|
-
#
|
78
|
-
def self.get_refunded(wallet_id)
|
79
|
-
get_request(File.join('wallets', wallet_id.to_s, 'users'), 'refunded=1')
|
80
|
-
end
|
81
|
-
|
82
|
-
# Get the operations for a given wallet
|
83
|
-
#
|
84
|
-
# * *Args* :
|
85
|
-
# - +wallet_id+ -> The is of the wallet you want to retrieve operations from
|
86
|
-
# * *Returns* :
|
87
|
-
# - An array of operations objects
|
88
|
-
#
|
89
|
-
def self.operations(wallet_id)
|
90
|
-
get_request(File.join('wallets', wallet_id.to_s, 'operations'))
|
91
|
-
end
|
2
|
+
class Wallet < Resource
|
3
|
+
include MangoPay::HTTPCalls::Create
|
4
|
+
include MangoPay::HTTPCalls::Update
|
5
|
+
include MangoPay::HTTPCalls::Fetch
|
92
6
|
end
|
93
7
|
end
|