mp_api 0.2.0 → 0.3.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/README.md +10 -26
- data/lib/mp_api/client.rb +13 -31
- data/lib/mp_api/payment.rb +12 -27
- data/lib/mp_api/payment_error.rb +107 -0
- data/lib/mp_api/payment_method.rb +16 -18
- data/lib/mp_api/token.rb +9 -25
- data/lib/mp_api/version.rb +1 -1
- data/lib/mp_api.rb +1 -6
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c7b356595131871a92d83ed3c6b65dadc8e291b02c1a1ad4b53db37b60496ca7
|
4
|
+
data.tar.gz: 3a46534f5c479ccf7030b241923ef61d70c8d2348083df66b1f69b690fe47064
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e4730a189dc028ff8fb7ec793a579ab0c01ec8e3b2d3be7c930044d3c2a116783b2c8106d8376ed2eef8197f8febe1bca66f82d603d5cf206e0154c8406980ab
|
7
|
+
data.tar.gz: 0736ee512a1748cd78e44367b1fc349accaf3fe40e8d9dd1a8582f694b75553291c348ee3703d34c614d9b48b0f85fb02f168769d09316ad6c108cc63a7f325c
|
data/README.md
CHANGED
@@ -1,35 +1,19 @@
|
|
1
|
-
#
|
2
|
-
|
3
|
-
TODO: Delete this and the text below, and describe your gem
|
4
|
-
|
5
|
-
Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/mercado_pago_api`. To experiment with that code, run `bin/console` for an interactive prompt.
|
1
|
+
# MpApi
|
6
2
|
|
7
3
|
## Installation
|
8
4
|
|
9
|
-
|
10
|
-
|
11
|
-
Install the gem and add to the application's Gemfile by executing:
|
12
|
-
|
13
|
-
$ bundle add UPDATE_WITH_YOUR_GEM_NAME_PRIOR_TO_RELEASE_TO_RUBYGEMS_ORG
|
14
|
-
|
15
|
-
If bundler is not being used to manage dependencies, install the gem by executing:
|
16
|
-
|
17
|
-
$ gem install UPDATE_WITH_YOUR_GEM_NAME_PRIOR_TO_RELEASE_TO_RUBYGEMS_ORG
|
18
|
-
|
19
|
-
## Usage
|
20
|
-
|
21
|
-
TODO: Write usage instructions here
|
22
|
-
|
23
|
-
## Development
|
24
|
-
|
25
|
-
After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
5
|
+
Add solidus_bling to your Gemfile:
|
26
6
|
|
27
|
-
|
7
|
+
```ruby
|
8
|
+
gem 'mp_api'
|
9
|
+
```
|
28
10
|
|
29
|
-
|
11
|
+
Bundle your dependencies and run the installation generator:
|
30
12
|
|
31
|
-
|
13
|
+
```shell
|
14
|
+
bin/rails generate mp_api:install
|
15
|
+
```
|
32
16
|
|
33
17
|
## License
|
34
18
|
|
35
|
-
|
19
|
+
Copyright (c) 2023 CaioGarcia1, released under the New BSD License.
|
data/lib/mp_api/client.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module MpApi
|
2
2
|
class Client < Ac::Base
|
3
3
|
BASE_URL = "https://api.mercadopago.com/v1/"
|
4
|
-
MAX_RETRIES =
|
4
|
+
MAX_RETRIES = 1
|
5
5
|
attr_reader :access_token
|
6
6
|
def initialize(access_token=MpApi.configuration.access_token)
|
7
7
|
@headers = {
|
@@ -12,48 +12,30 @@ module MpApi
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def create_payment(body)
|
15
|
-
|
16
|
-
p response.json unless response.success?
|
17
|
-
![500, 429].include?(response.code) || response['id']
|
18
|
-
end
|
19
|
-
raise RequestError.new(response.json['message']) if ![200,201].include?(response.code)
|
20
|
-
response.json
|
15
|
+
post("/payments", body: body, headers: @headers) { |response| validate_response(response, 'id')}
|
21
16
|
end
|
22
17
|
|
23
18
|
def get_payment(payment_id)
|
24
|
-
|
25
|
-
p response.json unless response.success?
|
26
|
-
![500, 429].include?(response.code) || response['id']
|
27
|
-
end
|
28
|
-
raise RequestError.new(response.json['message']) if ![200,201].include?(response.code)
|
29
|
-
response.json
|
19
|
+
get("/payments/#{payment_id}") { |response| validate_response(response, 'id')}
|
30
20
|
end
|
31
21
|
|
32
22
|
def create_token(card_token_data)
|
33
|
-
|
34
|
-
p response.json unless response.success?
|
35
|
-
![500, 429].include?(response.code) || response['id']
|
36
|
-
end
|
37
|
-
raise RequestError.new(response.json['message']) if ![200,201].include?(response.code)
|
38
|
-
response.json
|
23
|
+
post("/card_tokens", body: card_token_data, headers: @headers) { |response| validate_response(response, 'id')}
|
39
24
|
end
|
40
25
|
|
41
26
|
def search_payment_methods(query)
|
42
|
-
|
43
|
-
p response.json unless response.success?
|
44
|
-
![500, 429].include?(response.code) || response.json['results'][0]
|
45
|
-
end
|
46
|
-
raise RequestError.new(response.json['message']) if ![200,201].include?(response.code)
|
47
|
-
response.json
|
27
|
+
get("/payment_methods/search", params: query) { |response| validate_response(response, ['results', 0])}
|
48
28
|
end
|
49
29
|
|
50
30
|
def get_payment_methods
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
31
|
+
get("/payment_methods") { |response| validate_response(response, 'id')}
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def validate_response(response, required_response_key)
|
37
|
+
puts response.json unless response.success?
|
38
|
+
![500, 429].include?(response.code) || response.json.dig(*required_response_key)
|
57
39
|
end
|
58
40
|
|
59
41
|
end
|
data/lib/mp_api/payment.rb
CHANGED
@@ -1,17 +1,8 @@
|
|
1
1
|
module MpApi
|
2
2
|
class Payment
|
3
|
-
|
4
|
-
def self.find_by_id(payment_id)
|
5
|
-
begin
|
6
|
-
response = Client.new.get_payment(payment_id)
|
7
|
-
rescue RuntimeError => e
|
8
|
-
e.message == 'Too many retries' ? raise(TooManyRequestsError) : raise(e)
|
9
|
-
end
|
10
|
-
new(**build_hash(response))
|
11
|
-
end
|
12
3
|
|
13
|
-
attr_reader :status_detail, :three_ds_info_creq, :three_ds_info_external_resource_url, :three_d_secure_mode, :id, :description, :date_approved, :date_created, :money_release_date, :payer_email, :payer_identification_type, :payer_identification_number, :payment_method, :payment_type, :qr_code, :qr_code_base_64, :transaction_id, :ticket_url, :status, :amount, :token, :issuer_id, :installments, :statement_descriptor, :items
|
14
|
-
def initialize(status_detail:nil, three_ds_info_creq:nil, three_ds_info_external_resource_url:nil, three_d_secure_mode:nil, id:nil, description:nil, date_approved:nil, date_created:nil, money_release_date:nil, payer_email:, payer_identification_type:, payer_identification_number:, payment_method:, payment_type:nil, qr_code:nil, qr_code_base_64:nil, transaction_id:nil, ticket_url:nil, status:nil, amount:, token:nil, issuer_id:nil, installments:nil, items:nil, statement_descriptor:nil)
|
4
|
+
attr_reader :status_detail, :three_ds_info_creq, :three_ds_info_external_resource_url, :three_d_secure_mode, :id, :description, :date_approved, :date_created, :money_release_date, :payer_email, :payer_identification_type, :payer_identification_number, :payment_method, :payment_type, :qr_code, :qr_code_base_64, :transaction_id, :ticket_url, :status, :amount, :token, :issuer_id, :installments, :statement_descriptor, :items, :errors
|
5
|
+
def initialize(status_detail:nil, three_ds_info_creq:nil, three_ds_info_external_resource_url:nil, three_d_secure_mode:nil, id:nil, description:nil, date_approved:nil, date_created:nil, money_release_date:nil, payer_email:, payer_identification_type:, payer_identification_number:, payment_method:, payment_type:nil, qr_code:nil, qr_code_base_64:nil, transaction_id:nil, ticket_url:nil, status:nil, amount:, token:nil, issuer_id:nil, installments:nil, items:nil, statement_descriptor:nil, errors:nil)
|
15
6
|
@id = id
|
16
7
|
@description = description
|
17
8
|
@date_approved = date_approved
|
@@ -37,14 +28,7 @@ module MpApi
|
|
37
28
|
@status_detail = status_detail
|
38
29
|
@statement_descriptor = statement_descriptor
|
39
30
|
@items = items
|
40
|
-
|
41
|
-
# {
|
42
|
-
# id: "100002",
|
43
|
-
# title: "Retrovisor Jeep",
|
44
|
-
# picture_url: "https://http2.mlstatic.com/D_NQ_NP_2X_754724-MLB73109764910_122023-F.webp",
|
45
|
-
# quantity: 4,
|
46
|
-
# unit_price: 3
|
47
|
-
# }
|
31
|
+
@errors = errors
|
48
32
|
end
|
49
33
|
|
50
34
|
def build_json
|
@@ -80,12 +64,13 @@ module MpApi
|
|
80
64
|
end
|
81
65
|
|
82
66
|
def create
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
67
|
+
response = Client.new.create_payment(JSON.dump(build_json))
|
68
|
+
self.class.new(**self.class.build_hash(response.json))
|
69
|
+
end
|
70
|
+
|
71
|
+
def self.find_by_id(payment_id)
|
72
|
+
response = Client.new.get_payment(payment_id)
|
73
|
+
new(**build_hash(response.json))
|
89
74
|
end
|
90
75
|
|
91
76
|
def self.build_hash json_response
|
@@ -108,9 +93,9 @@ module MpApi
|
|
108
93
|
ticket_url: json_response.dig('point_of_interaction', 'transaction_data', 'ticket_url'),
|
109
94
|
status: json_response.dig('status'),
|
110
95
|
status_detail: json_response.dig('status_detail'),
|
111
|
-
amount: json_response.dig('transaction_amount')
|
96
|
+
amount: json_response.dig('transaction_amount'),
|
97
|
+
errors: PaymentError.new(json_response: json_response).errors
|
112
98
|
}
|
113
99
|
end
|
114
|
-
|
115
100
|
end
|
116
101
|
end
|
@@ -0,0 +1,107 @@
|
|
1
|
+
module MpApi
|
2
|
+
class PaymentError
|
3
|
+
|
4
|
+
attr_reader :json_response
|
5
|
+
def initialize(json_response:)
|
6
|
+
@json_response = json_response
|
7
|
+
end
|
8
|
+
|
9
|
+
def errors
|
10
|
+
return nil unless json_response['error']
|
11
|
+
json_response['cause'].map {|cause| message_by_error_code(cause['code']) || cause['description']}
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
def message_by_error_code(code)
|
16
|
+
{
|
17
|
+
1 => "Erro nos parâmetros.",
|
18
|
+
3 => "O token deve ser de teste.",
|
19
|
+
5 => "É necessário fornecer seu access_token para prosseguir.",
|
20
|
+
23 => "Os seguintes parâmetros devem ter uma data válida e no formato (aaaa-MM-dd'T'HH:mm:ssz) date_of_expiration.",
|
21
|
+
1000 => "Número de linhas excedeu os limites.",
|
22
|
+
1001 => "O formato da data deve ser aaaa-MM-dd'T'HH:mm:ss.SSSZ.",
|
23
|
+
2001 => "Já foi enviada a mesma solicitação no último minuto.",
|
24
|
+
2002 => "Cliente não encontrado.",
|
25
|
+
2004 => "Falha ao enviar POST para a API de Transações do Gateway.",
|
26
|
+
2006 => "Token do cartão não encontrado.",
|
27
|
+
2007 => "Falha na conexão com a API de Token do Cartão.",
|
28
|
+
2009 => "O emissor do token do cartão não pode ser nulo.",
|
29
|
+
2011 => "Id do método de pagamento inválido.",
|
30
|
+
2034 => "Erro estranho do mercado pago de usuarios envolvidos, normalmente causado pelo email do pagador.",
|
31
|
+
2060 => "O cliente não pode ser igual ao coletor.",
|
32
|
+
2062 => "Token do cartão inválido.",
|
33
|
+
2067 => "Número de identificação do usuário inválido.",
|
34
|
+
2072 => "Valor inválido para transaction_amount.",
|
35
|
+
2077 => "Captura diferida não suportada.",
|
36
|
+
2123 => "Operadores inválidos envolvidos.",
|
37
|
+
2131 => "Não é possível inferir o Método de Pagamento.",
|
38
|
+
3000 => "Você deve fornecer o nome do titular do cartão com seus dados do cartão.",
|
39
|
+
3001 => "Você deve fornecer o id do emissor do cartão com seus dados do cartão.",
|
40
|
+
3003 => "Id do token do cartão inválido.",
|
41
|
+
3004 => "Parâmetro site_id inválido.",
|
42
|
+
3005 => "Ação inválida, o recurso está em um estado que não permite esta operação. Para mais informações, consulte o estado que o recurso possui.",
|
43
|
+
3006 => "Parâmetro id do token do cartão inválido.",
|
44
|
+
3007 => "O parâmetro client_id não pode ser nulo ou vazio.",
|
45
|
+
3008 => "Token do Cartão não encontrado.",
|
46
|
+
3009 => "client_id não autorizado.",
|
47
|
+
3010 => "Cartão não encontrado na lista branca.",
|
48
|
+
3011 => "Método de pagamento não encontrado.",
|
49
|
+
3012 => "Parâmetro comprimento do código de segurança inválido.",
|
50
|
+
3013 => "O parâmetro código de segurança é um campo obrigatório e não pode ser nulo ou vazio.",
|
51
|
+
3014 => "Parâmetro método de pagamento inválido.",
|
52
|
+
3015 => "Parâmetro comprimento do número do cartão inválido.",
|
53
|
+
3016 => "Parâmetro número do cartão inválido.",
|
54
|
+
3017 => "O parâmetro id do número do cartão não pode ser nulo ou vazio.",
|
55
|
+
3018 => "O parâmetro mês de vencimento não pode ser nulo ou vazio.",
|
56
|
+
3019 => "O parâmetro ano de vencimento não pode ser nulo ou vazio.",
|
57
|
+
3020 => "O parâmetro nome do titular do cartão não pode ser nulo ou vazio.",
|
58
|
+
3021 => "O parâmetro número do documento do titular do cartão não pode ser nulo ou vazio.",
|
59
|
+
3022 => "O parâmetro tipo de documento do titular do cartão não pode ser nulo ou vazio.",
|
60
|
+
3023 => "O parâmetro subtipo de documento do titular do cartão não pode ser nulo ou vazio.",
|
61
|
+
3024 => "Ação inválida - reembolso parcial não suportado para esta transação.",
|
62
|
+
3025 => "Código de autenticação inválido.",
|
63
|
+
3026 => "Id do cartão inválido para este id do método de pagamento.",
|
64
|
+
3027 => "Id do tipo de pagamento inválido.",
|
65
|
+
3028 => "Id do método de pagamento inválido.",
|
66
|
+
3029 => "Mês de vencimento do cartão inválido.",
|
67
|
+
3030 => "Ano de vencimento do cartão inválido.",
|
68
|
+
3031 => "Secure_code_id não pode ser nulo.",
|
69
|
+
3032 => "Comprimento inválido do código de segurança 3033 3034 - Validação do número do cartão inválida.",
|
70
|
+
4000 => "Atributo do cartão não pode ser nulo.",
|
71
|
+
4001 => "Atributo do id do método de pagamento não pode ser nulo.",
|
72
|
+
4002 => "Atributo do valor da transação não pode ser nulo.",
|
73
|
+
4003 => "Atributo do valor da transação deve ser numérico.",
|
74
|
+
4004 => "Atributo de parcelas não pode ser nulo.",
|
75
|
+
4005 => "Atributo de parcelas deve ser numérico.",
|
76
|
+
4006 => "Atributo do pagador está malformado.",
|
77
|
+
4007 => "Atributo do site_id não pode ser nulo.",
|
78
|
+
4012 => "Atributo do id do pagador não pode ser nulo.",
|
79
|
+
4013 => "Atributo do tipo de pagador não pode ser nulo.",
|
80
|
+
4015 => "Atributo do id de referência do método de pagamento não pode ser nulo.",
|
81
|
+
4016 => "Atributo do id de referência do método de pagamento deve ser numérico.",
|
82
|
+
4017 => "Atributo do status não pode ser nulo.",
|
83
|
+
4018 => "Atributo do id do pagamento não pode ser nulo.",
|
84
|
+
4019 => "Atributo do id do pagamento deve ser numérico.",
|
85
|
+
4020 => "Atributo notificaction_url deve ser uma URL válida.",
|
86
|
+
4021 => "Atributo notificaction_url deve ter menos de 500 caracteres.",
|
87
|
+
4022 => "Atributo metadata deve ser um JSON válido.",
|
88
|
+
4023 => "Atributo do valor da transação não pode ser nulo.",
|
89
|
+
4024 => "Atributo do valor da transação deve ser numérico.",
|
90
|
+
4025 => "Id do reembolso não pode ser nulo.",
|
91
|
+
4026 => "Valor do cupom inválido.",
|
92
|
+
4027 => "Atributo do id da campanha deve ser numérico.",
|
93
|
+
4028 => "Atributo do valor do cupom deve ser numérico.",
|
94
|
+
4029 => "Tipo de pagador inválido.",
|
95
|
+
4037 => "Valor da transação inválido.",
|
96
|
+
4038 => "A taxa de aplicação não pode ser maior que o valor da transação.",
|
97
|
+
4039 => "A taxa de aplicação não pode ser um valor negativo.",
|
98
|
+
4049 => "Atributo do valor da transação deve ser positivo.",
|
99
|
+
4050 => "O email do pagador deve ser um email válido.",
|
100
|
+
4051 => "O email do pagador deve ter menos de 254 caracteres.",
|
101
|
+
6033 => "Usuário indisponível.",
|
102
|
+
7523 => "Data de vencimento inválida."
|
103
|
+
}[code]
|
104
|
+
end
|
105
|
+
|
106
|
+
end
|
107
|
+
end
|
@@ -1,14 +1,18 @@
|
|
1
1
|
module MpApi
|
2
2
|
|
3
3
|
class PaymentMethod
|
4
|
-
|
4
|
+
|
5
|
+
attr_reader :payment_method_id, :issuer_id, :installments, :errors
|
6
|
+
def initialize(payment_method_id: , issuer_id: , installments:, errors:nil)
|
7
|
+
@payment_method_id = payment_method_id
|
8
|
+
@issuer_id = issuer_id
|
9
|
+
@installments = installments
|
10
|
+
@errors = errors
|
11
|
+
end
|
12
|
+
|
5
13
|
def self.find_by_first_six_digits(first_six_digits, credit: true)
|
6
|
-
|
7
|
-
|
8
|
-
rescue RuntimeError => e
|
9
|
-
e.message == 'Too many retries' ? raise(TooManyRequestsError) : raise(e)
|
10
|
-
end
|
11
|
-
new(**build_hash(response, credit))
|
14
|
+
response = Client.new.search_payment_methods(build_query(first_six_digits))
|
15
|
+
new(**build_hash(response.json, credit))
|
12
16
|
end
|
13
17
|
|
14
18
|
def self.build_query(first_six_digits)
|
@@ -21,21 +25,15 @@ module MpApi
|
|
21
25
|
|
22
26
|
def self.build_hash(response, credit)
|
23
27
|
payment_type_id = credit ? 'credit_card' : 'debit_card'
|
24
|
-
payment_method = response.dig('results')
|
28
|
+
payment_method = response.dig('results')&.find {|pm| pm['payment_type_id'] == payment_type_id}
|
25
29
|
{
|
26
|
-
payment_method_id: payment_method
|
27
|
-
issuer_id: payment_method
|
28
|
-
installments: payment_method
|
30
|
+
payment_method_id: payment_method&.dig('id'),
|
31
|
+
issuer_id: payment_method&.dig('issuer', 'id'),
|
32
|
+
installments: payment_method&.dig('payer_costs'),
|
33
|
+
errors: response.dig('message')
|
29
34
|
}
|
30
35
|
end
|
31
36
|
|
32
|
-
attr_reader :payment_method_id, :issuer_id, :installments
|
33
|
-
def initialize(payment_method_id: , issuer_id: , installments:)
|
34
|
-
@payment_method_id = payment_method_id
|
35
|
-
@issuer_id = issuer_id
|
36
|
-
@installments = installments
|
37
|
-
end
|
38
|
-
|
39
37
|
end
|
40
38
|
|
41
39
|
end
|
data/lib/mp_api/token.rb
CHANGED
@@ -2,14 +2,15 @@ module MpApi
|
|
2
2
|
|
3
3
|
class Token
|
4
4
|
|
5
|
-
attr_reader :card_number, :expiration_year, :expiration_month, :security_code, :cardholder_name, :id
|
6
|
-
def initialize(card_number
|
5
|
+
attr_reader :card_number, :expiration_year, :expiration_month, :security_code, :cardholder_name, :id, :errors
|
6
|
+
def initialize(card_number:, expiration_year:, expiration_month:, security_code:, cardholder_name:, id:nil, errors:nil)
|
7
7
|
@card_number = card_number
|
8
8
|
@expiration_year = expiration_year
|
9
9
|
@expiration_month = expiration_month
|
10
10
|
@security_code = security_code
|
11
11
|
@cardholder_name = cardholder_name
|
12
12
|
@id = id
|
13
|
+
@errors = errors
|
13
14
|
end
|
14
15
|
|
15
16
|
def build_json
|
@@ -25,12 +26,8 @@ module MpApi
|
|
25
26
|
end
|
26
27
|
|
27
28
|
def create
|
28
|
-
|
29
|
-
|
30
|
-
self.class.new(**self.class.build_hash(response))
|
31
|
-
rescue RuntimeError => e
|
32
|
-
e.message == 'Too many retries' ? raise(TooManyRequestsError) : raise(e)
|
33
|
-
end
|
29
|
+
response = Client.new.create_token(JSON.dump(build_json))
|
30
|
+
self.class.new(**self.class.build_hash(response.json))
|
34
31
|
end
|
35
32
|
|
36
33
|
def self.build_hash(response)
|
@@ -38,25 +35,12 @@ module MpApi
|
|
38
35
|
id: response['id'],
|
39
36
|
expiration_year: response['expiration_year'],
|
40
37
|
expiration_month: response['expiration_month'],
|
41
|
-
cardholder_name: response
|
38
|
+
cardholder_name: response.dig('cardholder', 'name'),
|
39
|
+
card_number: response['card_number'],
|
40
|
+
security_code: response['security_code'],
|
41
|
+
errors: response['error']
|
42
42
|
}
|
43
43
|
end
|
44
44
|
|
45
45
|
end
|
46
46
|
end
|
47
|
-
|
48
|
-
# {"id"=>"78558e7bbb73b8939df27269fb6dcbf5",
|
49
|
-
# "first_six_digits"=>"503143",
|
50
|
-
# "expiration_month"=>11,
|
51
|
-
# "expiration_year"=>2025,
|
52
|
-
# "last_four_digits"=>"6351",
|
53
|
-
# "cardholder"=>{"identification"=>{}, "name"=>"APRO"},
|
54
|
-
# "status"=>"active",
|
55
|
-
# "date_created"=>"2023-11-27T09:42:13.887-04:00",
|
56
|
-
# "date_last_updated"=>"2023-11-27T09:42:13.887-04:00",
|
57
|
-
# "date_due"=>"2023-12-05T09:42:13.887-04:00",
|
58
|
-
# "luhn_validation"=>true,
|
59
|
-
# "live_mode"=>false,
|
60
|
-
# "require_esc"=>false,
|
61
|
-
# "card_number_length"=>16,
|
62
|
-
# "security_code_length"=>3}
|
data/lib/mp_api/version.rb
CHANGED
data/lib/mp_api.rb
CHANGED
@@ -3,17 +3,12 @@
|
|
3
3
|
require "ac"
|
4
4
|
require_relative "mp_api/client"
|
5
5
|
require_relative "mp_api/payment"
|
6
|
+
require_relative "mp_api/payment_error"
|
6
7
|
require_relative "mp_api/token"
|
7
8
|
require_relative "mp_api/payment_method"
|
8
9
|
require_relative "mp_api/version"
|
9
10
|
module MpApi
|
10
11
|
class Error < StandardError; end
|
11
|
-
|
12
|
-
class TooManyRequestsError < StandardError
|
13
|
-
def message
|
14
|
-
"Too many requests"
|
15
|
-
end
|
16
|
-
end
|
17
12
|
|
18
13
|
class RequestError < StandardError
|
19
14
|
def initialize(message="Request error")
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mp_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- caio
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-01-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ac
|
@@ -39,6 +39,7 @@ files:
|
|
39
39
|
- lib/mp_api.rb
|
40
40
|
- lib/mp_api/client.rb
|
41
41
|
- lib/mp_api/payment.rb
|
42
|
+
- lib/mp_api/payment_error.rb
|
42
43
|
- lib/mp_api/payment_method.rb
|
43
44
|
- lib/mp_api/token.rb
|
44
45
|
- lib/mp_api/version.rb
|