mangopay 3.0.25 → 3.0.26

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +30 -28
  3. data/.rspec +2 -2
  4. data/.travis.yml +13 -4
  5. data/Gemfile +2 -2
  6. data/LICENSE +20 -20
  7. data/README.md +126 -126
  8. data/bin/mangopay +9 -9
  9. data/lib/generators/mangopay/install_generator.rb +60 -60
  10. data/lib/generators/templates/mangopay.rb.erb +5 -5
  11. data/lib/mangopay.rb +228 -225
  12. data/lib/mangopay/authorization_token.rb +88 -88
  13. data/lib/mangopay/bank_account.rb +38 -38
  14. data/lib/mangopay/bankingaliases.rb +29 -0
  15. data/lib/mangopay/bankingaliases_iban.rb +16 -0
  16. data/lib/mangopay/card.rb +8 -8
  17. data/lib/mangopay/card_registration.rb +9 -9
  18. data/lib/mangopay/client.rb +74 -74
  19. data/lib/mangopay/dispute.rb +130 -130
  20. data/lib/mangopay/errors.rb +61 -61
  21. data/lib/mangopay/event.rb +18 -18
  22. data/lib/mangopay/filter_parameters.rb +46 -46
  23. data/lib/mangopay/hook.rb +9 -9
  24. data/lib/mangopay/http_calls.rb +85 -85
  25. data/lib/mangopay/json.rb +14 -14
  26. data/lib/mangopay/kyc_document.rb +70 -70
  27. data/lib/mangopay/legal_user.rb +15 -15
  28. data/lib/mangopay/mandate.rb +32 -32
  29. data/lib/mangopay/natural_user.rb +14 -14
  30. data/lib/mangopay/pay_in.rb +96 -85
  31. data/lib/mangopay/pay_out.rb +14 -14
  32. data/lib/mangopay/pre_authorization.rb +13 -13
  33. data/lib/mangopay/refund.rb +7 -7
  34. data/lib/mangopay/report.rb +17 -17
  35. data/lib/mangopay/resource.rb +21 -21
  36. data/lib/mangopay/transaction.rb +24 -24
  37. data/lib/mangopay/transfer.rb +9 -9
  38. data/lib/mangopay/user.rb +43 -43
  39. data/lib/mangopay/version.rb +3 -3
  40. data/lib/mangopay/wallet.rb +17 -17
  41. data/mangopay.gemspec +30 -30
  42. data/spec/mangopay/authorization_token_spec.rb +70 -70
  43. data/spec/mangopay/bank_account_spec.rb +97 -97
  44. data/spec/mangopay/bankingaliases_spec.rb +29 -0
  45. data/spec/mangopay/card_registration_spec.rb +73 -73
  46. data/spec/mangopay/client_spec.rb +110 -110
  47. data/spec/mangopay/configuration_spec.rb +95 -95
  48. data/spec/mangopay/dispute_spec.rb +262 -262
  49. data/spec/mangopay/event_spec.rb +31 -31
  50. data/spec/mangopay/fetch_filters_spec.rb +63 -63
  51. data/spec/mangopay/hook_spec.rb +37 -37
  52. data/spec/mangopay/idempotency_spec.rb +41 -41
  53. data/spec/mangopay/kyc_document_spec.rb +103 -103
  54. data/spec/mangopay/log_requests_filter_spec.rb +25 -25
  55. data/spec/mangopay/mandate_spec.rb +92 -92
  56. data/spec/mangopay/payin_bankwire_direct_spec.rb +74 -74
  57. data/spec/mangopay/payin_card_direct_spec.rb +68 -68
  58. data/spec/mangopay/payin_card_web_spec.rb +47 -38
  59. data/spec/mangopay/payin_directdebit_direct_spec.rb +37 -37
  60. data/spec/mangopay/payin_directdebit_web_spec.rb +38 -38
  61. data/spec/mangopay/payin_paypal_web_spec.rb +38 -38
  62. data/spec/mangopay/payin_preauthorized_direct_spec.rb +68 -68
  63. data/spec/mangopay/payout_bankwire_spec.rb +54 -54
  64. data/spec/mangopay/preauthorization_spec.rb +42 -42
  65. data/spec/mangopay/refund_spec.rb +21 -21
  66. data/spec/mangopay/report_spec.rb +39 -39
  67. data/spec/mangopay/shared_resources.rb +397 -381
  68. data/spec/mangopay/transaction_spec.rb +54 -54
  69. data/spec/mangopay/transfer_spec.rb +69 -69
  70. data/spec/mangopay/user_spec.rb +137 -137
  71. data/spec/mangopay/wallet_spec.rb +80 -80
  72. data/spec/spec_helper.rb +31 -31
  73. metadata +7 -6
  74. data/lib/mangopay/temp.rb +0 -74
  75. data/spec/mangopay/temp_paymentcard_spec.rb +0 -31
data/lib/mangopay/hook.rb CHANGED
@@ -1,9 +1,9 @@
1
- module MangoPay
2
-
3
- # See http://docs.mangopay.com/api-references/notifications/
4
- class Hook < Resource
5
- include HTTPCalls::Create
6
- include HTTPCalls::Update
7
- include HTTPCalls::Fetch
8
- end
9
- end
1
+ module MangoPay
2
+
3
+ # See http://docs.mangopay.com/api-references/notifications/
4
+ class Hook < Resource
5
+ include HTTPCalls::Create
6
+ include HTTPCalls::Update
7
+ include HTTPCalls::Fetch
8
+ end
9
+ end
@@ -1,85 +1,85 @@
1
- module MangoPay
2
- module HTTPCalls
3
- module Create
4
- module ClassMethods
5
-
6
- def create(params, id = nil, idempotency_key = nil)
7
- # LEGACY SUPPORT FOR OLD SIGNATURE: def create(*id, params)
8
- if !params.is_a?(Hash) && id.is_a?(Hash)
9
- temp = params
10
- params = id
11
- id = temp
12
- end
13
- MangoPay.request(:post, url(id), params, {}, idempotency_key)
14
- end
15
- end
16
-
17
- def self.included(base)
18
- base.extend(ClassMethods)
19
- end
20
- end
21
-
22
- module Update
23
- module ClassMethods
24
- def update(id = nil, params = {})
25
- MangoPay.request(:put, url(id), params)
26
- end
27
- end
28
-
29
- def self.included(base)
30
- base.extend(ClassMethods)
31
- end
32
- end
33
-
34
- module Fetch
35
- module ClassMethods
36
-
37
- # - Fetching _single_entity_ by +id+:
38
- #
39
- # MangoPay::User.fetch("user-id") # => {"FirstName"=>"Mango", "LastName"=>"Pay", ...}
40
- #
41
- # - or fetching _multiple_entities_ with _optional_ +filters+ hash,
42
- # including _pagination_ and _sorting_ params
43
- # +page+, +per_page+, +sort+ (see http://docs.mangopay.com/api-references/pagination/):
44
- #
45
- # MangoPay::User.fetch() # => [{...}, ...]: list of user data hashes (10 per page by default)
46
- # MangoPay::User.fetch({'page' => 2, 'per_page' => 3}) # => list of 3 hashes from 2nd page
47
- # MangoPay::BankAccount.fetch(user_id, {'sort' => 'CreationDate:desc'}) # => bank accounts by user, sorting by date descending (with default pagination)
48
- # MangoPay::BankAccount.fetch(user_id, {'sort' => 'CreationDate:desc', 'page' => 2, 'per_page' => 3}) # both sorting and pagination params provided
49
- #
50
- # - For paginated queries the +filters+ param will be supplemented by +total_pages+ and +total_items+ info:
51
- #
52
- # MangoPay::User.fetch(filter = {'page' => 2, 'per_page' => 3})
53
- # filter # => {"page"=>2, "per_page"=>3, "total_pages"=>1969, "total_items"=>5905}
54
- #
55
- def fetch(id_or_filters = nil)
56
- id, filters = HTTPCalls::Fetch.parse_id_or_filters(id_or_filters)
57
- response = MangoPay.request(:get, url(id), {}, filters)
58
- end
59
- end
60
-
61
- def self.included(base)
62
- base.extend(ClassMethods)
63
- end
64
-
65
- def self.parse_id_or_filters(id_or_filters = nil)
66
- id_or_filters.is_a?(Hash) ? [nil, id_or_filters] : [id_or_filters, {}]
67
- end
68
- end
69
-
70
- module Refund
71
- module ClassMethods
72
-
73
- # See http://docs.mangopay.com/api-references/refund/%E2%80%A2-refund-a-pay-in/
74
- # See http://docs.mangopay.com/api-references/refund/%E2%80%A2-refund-a-transfer/
75
- def refund(id = nil, params = {}, idempotency_key = nil)
76
- MangoPay.request(:post, url(id) + '/refunds', params, {}, idempotency_key)
77
- end
78
- end
79
-
80
- def self.included(base)
81
- base.extend(ClassMethods)
82
- end
83
- end
84
- end
85
- end
1
+ module MangoPay
2
+ module HTTPCalls
3
+ module Create
4
+ module ClassMethods
5
+
6
+ def create(params, id = nil, idempotency_key = nil)
7
+ # LEGACY SUPPORT FOR OLD SIGNATURE: def create(*id, params)
8
+ if !params.is_a?(Hash) && id.is_a?(Hash)
9
+ temp = params
10
+ params = id
11
+ id = temp
12
+ end
13
+ MangoPay.request(:post, url(id), params, {}, idempotency_key)
14
+ end
15
+ end
16
+
17
+ def self.included(base)
18
+ base.extend(ClassMethods)
19
+ end
20
+ end
21
+
22
+ module Update
23
+ module ClassMethods
24
+ def update(id = nil, params = {})
25
+ MangoPay.request(:put, url(id), params)
26
+ end
27
+ end
28
+
29
+ def self.included(base)
30
+ base.extend(ClassMethods)
31
+ end
32
+ end
33
+
34
+ module Fetch
35
+ module ClassMethods
36
+
37
+ # - Fetching _single_entity_ by +id+:
38
+ #
39
+ # MangoPay::User.fetch("user-id") # => {"FirstName"=>"Mango", "LastName"=>"Pay", ...}
40
+ #
41
+ # - or fetching _multiple_entities_ with _optional_ +filters+ hash,
42
+ # including _pagination_ and _sorting_ params
43
+ # +page+, +per_page+, +sort+ (see http://docs.mangopay.com/api-references/pagination/):
44
+ #
45
+ # MangoPay::User.fetch() # => [{...}, ...]: list of user data hashes (10 per page by default)
46
+ # MangoPay::User.fetch({'page' => 2, 'per_page' => 3}) # => list of 3 hashes from 2nd page
47
+ # MangoPay::BankAccount.fetch(user_id, {'sort' => 'CreationDate:desc'}) # => bank accounts by user, sorting by date descending (with default pagination)
48
+ # MangoPay::BankAccount.fetch(user_id, {'sort' => 'CreationDate:desc', 'page' => 2, 'per_page' => 3}) # both sorting and pagination params provided
49
+ #
50
+ # - For paginated queries the +filters+ param will be supplemented by +total_pages+ and +total_items+ info:
51
+ #
52
+ # MangoPay::User.fetch(filter = {'page' => 2, 'per_page' => 3})
53
+ # filter # => {"page"=>2, "per_page"=>3, "total_pages"=>1969, "total_items"=>5905}
54
+ #
55
+ def fetch(id_or_filters = nil)
56
+ id, filters = HTTPCalls::Fetch.parse_id_or_filters(id_or_filters)
57
+ response = MangoPay.request(:get, url(id), {}, filters)
58
+ end
59
+ end
60
+
61
+ def self.included(base)
62
+ base.extend(ClassMethods)
63
+ end
64
+
65
+ def self.parse_id_or_filters(id_or_filters = nil)
66
+ id_or_filters.is_a?(Hash) ? [nil, id_or_filters] : [id_or_filters, {}]
67
+ end
68
+ end
69
+
70
+ module Refund
71
+ module ClassMethods
72
+
73
+ # See http://docs.mangopay.com/api-references/refund/%E2%80%A2-refund-a-pay-in/
74
+ # See http://docs.mangopay.com/api-references/refund/%E2%80%A2-refund-a-transfer/
75
+ def refund(id = nil, params = {}, idempotency_key = nil)
76
+ MangoPay.request(:post, url(id) + '/refunds', params, {}, idempotency_key)
77
+ end
78
+ end
79
+
80
+ def self.included(base)
81
+ base.extend(ClassMethods)
82
+ end
83
+ end
84
+ end
85
+ end
data/lib/mangopay/json.rb CHANGED
@@ -1,14 +1,14 @@
1
- # We can use MultiJson directly , why do we even have this module ?
2
- module MangoPay
3
- module JSON
4
- class << self
5
- def dump(*args)
6
- MultiJson.dump(*args)
7
- end
8
-
9
- def load(*args)
10
- MultiJson.load(*args)
11
- end
12
- end
13
- end
14
- end
1
+ # We can use MultiJson directly , why do we even have this module ?
2
+ module MangoPay
3
+ module JSON
4
+ class << self
5
+ def dump(*args)
6
+ MultiJson.dump(*args)
7
+ end
8
+
9
+ def load(*args)
10
+ MultiJson.load(*args)
11
+ end
12
+ end
13
+ end
14
+ end
@@ -1,70 +1,70 @@
1
- require 'base64'
2
-
3
- module MangoPay
4
-
5
- # See http://docs.mangopay.com/api-references/kyc/documents/
6
- class KycDocument < Resource
7
- class << self
8
- def create(user_id, params, idempotency_key = nil)
9
- MangoPay.request(:post, url(user_id), params, {}, idempotency_key)
10
- end
11
-
12
- def update(user_id, document_id, params = {})
13
- MangoPay.request(:put, url(user_id, document_id), params)
14
- end
15
-
16
- # Fetches the KYC document belonging to the given +user_id+, with the given +document_id+.
17
- def fetch(user_id, document_id)
18
- url = (user_id) ? url(user_id, document_id) : "#{MangoPay.api_path}/KYC/documents/#{CGI.escape(document_id.to_s)}"
19
- MangoPay.request(:get, url)
20
- end
21
-
22
- # Fetches list of KYC documents:
23
- # - for the particular user if +user_id+ is provided (not nil)
24
- # - or for all users otherwise.
25
- #
26
- # Optional +filters+ is a hash accepting following keys:
27
- # - +page+, +per_page+, +sort+: pagination and sorting params (see MangoPay::HTTPCalls::Fetch::ClassMethods#fetch)
28
- # - filters such as +Type+ (e.g. 'IDENTITY_PROOF') and +Status+ (e.g. 'VALIDATED')
29
- # - +BeforeDate+ (timestamp): filters documents with CreationDate _before_ this date
30
- # - +AfterDate+ (timestamp): filters documents with CreationDate _after_ this date
31
- #
32
- def fetch_all(user_id = nil, filters = {})
33
- url = (user_id) ? url(user_id) : "#{MangoPay.api_path}/KYC/documents"
34
- MangoPay.request(:get, url, {}, filters)
35
- end
36
-
37
- # Adds the file page (attachment) to the given document.
38
- #
39
- # See http://docs.mangopay.com/api-references/kyc/pages/ :
40
- # - Document have to be in 'CREATED' Status
41
- # - You can create as many pages as needed
42
- # - Change Status to 'VALIDATION_ASKED' to submit KYC documents
43
- #
44
- # The file_content_base64 param may be:
45
- # - Base64 encoded file content
46
- # - or nil: in this case pass the file path in the next param
47
- #
48
- def create_page(user_id, document_id, file_content_base64, file_path = nil, idempotency_key = nil)
49
- if file_content_base64.nil? && !file_path.nil?
50
- bts = File.open(file_path, 'rb') { |f| f.read }
51
- file_content_base64 = Base64.encode64(bts)
52
- end
53
- # normally it returns 204 HTTP code on success
54
- begin
55
- MangoPay.request(:post, url(user_id, document_id) + '/pages', {'File' => file_content_base64}, {}, idempotency_key)
56
- rescue ResponseError => ex
57
- raise ex unless ex.code == '204'
58
- end
59
- end
60
-
61
- def url(user_id, document_id = nil)
62
- if document_id
63
- "#{MangoPay.api_path}/users/#{CGI.escape(user_id.to_s)}/KYC/documents/#{CGI.escape(document_id.to_s)}"
64
- else
65
- "#{MangoPay.api_path}/users/#{CGI.escape(user_id.to_s)}/KYC/documents"
66
- end
67
- end
68
- end
69
- end
70
- end
1
+ require 'base64'
2
+
3
+ module MangoPay
4
+
5
+ # See http://docs.mangopay.com/api-references/kyc/documents/
6
+ class KycDocument < Resource
7
+ class << self
8
+ def create(user_id, params, idempotency_key = nil)
9
+ MangoPay.request(:post, url(user_id), params, {}, idempotency_key)
10
+ end
11
+
12
+ def update(user_id, document_id, params = {})
13
+ MangoPay.request(:put, url(user_id, document_id), params)
14
+ end
15
+
16
+ # Fetches the KYC document belonging to the given +user_id+, with the given +document_id+.
17
+ def fetch(user_id, document_id)
18
+ url = (user_id) ? url(user_id, document_id) : "#{MangoPay.api_path}/KYC/documents/#{CGI.escape(document_id.to_s)}"
19
+ MangoPay.request(:get, url)
20
+ end
21
+
22
+ # Fetches list of KYC documents:
23
+ # - for the particular user if +user_id+ is provided (not nil)
24
+ # - or for all users otherwise.
25
+ #
26
+ # Optional +filters+ is a hash accepting following keys:
27
+ # - +page+, +per_page+, +sort+: pagination and sorting params (see MangoPay::HTTPCalls::Fetch::ClassMethods#fetch)
28
+ # - filters such as +Type+ (e.g. 'IDENTITY_PROOF') and +Status+ (e.g. 'VALIDATED')
29
+ # - +BeforeDate+ (timestamp): filters documents with CreationDate _before_ this date
30
+ # - +AfterDate+ (timestamp): filters documents with CreationDate _after_ this date
31
+ #
32
+ def fetch_all(user_id = nil, filters = {})
33
+ url = (user_id) ? url(user_id) : "#{MangoPay.api_path}/KYC/documents"
34
+ MangoPay.request(:get, url, {}, filters)
35
+ end
36
+
37
+ # Adds the file page (attachment) to the given document.
38
+ #
39
+ # See http://docs.mangopay.com/api-references/kyc/pages/ :
40
+ # - Document have to be in 'CREATED' Status
41
+ # - You can create as many pages as needed
42
+ # - Change Status to 'VALIDATION_ASKED' to submit KYC documents
43
+ #
44
+ # The file_content_base64 param may be:
45
+ # - Base64 encoded file content
46
+ # - or nil: in this case pass the file path in the next param
47
+ #
48
+ def create_page(user_id, document_id, file_content_base64, file_path = nil, idempotency_key = nil)
49
+ if file_content_base64.nil? && !file_path.nil?
50
+ bts = File.open(file_path, 'rb') { |f| f.read }
51
+ file_content_base64 = Base64.encode64(bts)
52
+ end
53
+ # normally it returns 204 HTTP code on success
54
+ begin
55
+ MangoPay.request(:post, url(user_id, document_id) + '/pages', {'File' => file_content_base64}, {}, idempotency_key)
56
+ rescue ResponseError => ex
57
+ raise ex unless ex.code == '204'
58
+ end
59
+ end
60
+
61
+ def url(user_id, document_id = nil)
62
+ if document_id
63
+ "#{MangoPay.api_path}/users/#{CGI.escape(user_id.to_s)}/KYC/documents/#{CGI.escape(document_id.to_s)}"
64
+ else
65
+ "#{MangoPay.api_path}/users/#{CGI.escape(user_id.to_s)}/KYC/documents"
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -1,15 +1,15 @@
1
- module MangoPay
2
-
3
- # See http://docs.mangopay.com/api-references/users/legal-users/
4
- # See also parent class MangoPay::User
5
- class LegalUser < User
6
-
7
- def self.url(id = nil)
8
- if id
9
- "#{MangoPay.api_path}/users/legal/#{CGI.escape(id.to_s)}"
10
- else
11
- "#{MangoPay.api_path}/users/legal"
12
- end
13
- end
14
- end
15
- end
1
+ module MangoPay
2
+
3
+ # See http://docs.mangopay.com/api-references/users/legal-users/
4
+ # See also parent class MangoPay::User
5
+ class LegalUser < User
6
+
7
+ def self.url(id = nil)
8
+ if id
9
+ "#{MangoPay.api_path}/users/legal/#{CGI.escape(id.to_s)}"
10
+ else
11
+ "#{MangoPay.api_path}/users/legal"
12
+ end
13
+ end
14
+ end
15
+ end
@@ -1,32 +1,32 @@
1
- module MangoPay
2
-
3
- # See https://docs.mangopay.com/api-references/mandates/
4
- class Mandate < Resource
5
- include HTTPCalls::Fetch
6
-
7
- class << self
8
-
9
- # +params+: hash; see https://docs.mangopay.com/api-references/mandates/
10
- def create(params, idempotency_key = nil)
11
- url = "#{MangoPay.api_path}/mandates/directdebit/web"
12
- MangoPay.request(:post, url, params, {}, idempotency_key)
13
- end
14
-
15
- def cancel(id)
16
- url = "#{MangoPay.api_path}/mandates/#{id}/cancel"
17
- MangoPay.request(:put, url)
18
- end
19
-
20
- def fetch_for_user(user_id, filters = {})
21
- url = "#{MangoPay.api_path}/users/#{user_id}/mandates"
22
- MangoPay.request(:get, url, {}, filters)
23
- end
24
-
25
- def fetch_for_user_bank_account(user_id, bank_account_id, filters = {})
26
- url = "#{MangoPay.api_path}/users/#{user_id}/bankaccounts/#{bank_account_id}/mandates"
27
- MangoPay.request(:get, url, {}, filters)
28
- end
29
-
30
- end
31
- end
32
- end
1
+ module MangoPay
2
+
3
+ # See https://docs.mangopay.com/api-references/mandates/
4
+ class Mandate < Resource
5
+ include HTTPCalls::Fetch
6
+
7
+ class << self
8
+
9
+ # +params+: hash; see https://docs.mangopay.com/api-references/mandates/
10
+ def create(params, idempotency_key = nil)
11
+ url = "#{MangoPay.api_path}/mandates/directdebit/web"
12
+ MangoPay.request(:post, url, params, {}, idempotency_key)
13
+ end
14
+
15
+ def cancel(id)
16
+ url = "#{MangoPay.api_path}/mandates/#{id}/cancel"
17
+ MangoPay.request(:put, url)
18
+ end
19
+
20
+ def fetch_for_user(user_id, filters = {})
21
+ url = "#{MangoPay.api_path}/users/#{user_id}/mandates"
22
+ MangoPay.request(:get, url, {}, filters)
23
+ end
24
+
25
+ def fetch_for_user_bank_account(user_id, bank_account_id, filters = {})
26
+ url = "#{MangoPay.api_path}/users/#{user_id}/bankaccounts/#{bank_account_id}/mandates"
27
+ MangoPay.request(:get, url, {}, filters)
28
+ end
29
+
30
+ end
31
+ end
32
+ end