mp_api 0.1.8 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 25bbc0e3b8f592463032d3bb549647a6a6d8f49489b11d303bc9027e8422b4af
4
- data.tar.gz: b4f29ee32c428589423a1c199c41b969743089bf15a0f7d97e02a7ffb913a933
3
+ metadata.gz: 41b57c5bd90138e2152481283d9d873c550e4e019cf904d7ea4eb9332535cab6
4
+ data.tar.gz: 9d48cc465911ca89738e30116bc7634b3430d4fc96b5404d5d812fb8a0cd0751
5
5
  SHA512:
6
- metadata.gz: 8033add8df41e4c1b8200657926ec9c080801c29861fe039d4e83c886298a2e1fbd70c3e9740cb0374f52a613aa42a52be880d2fb53c0f42d73c637ba37e26c1
7
- data.tar.gz: a472148d5368e384d2025e80e4498841f3175a33e1bc5486ebfec309d2789717bf27f636f1e2592f62454e10c2789456e54be201ccce232307d9d0d4e725ba7e
6
+ metadata.gz: 48911409a2221b723a972067988d02ebc7db00128f3863c445ef3ec171dd3f38812b25bf50f44a69e6b53ea57c93277df4d6e1326bd4f2fc9ef18cb0459eea1a
7
+ data.tar.gz: c75af862f424527d5034f4feeca1a6526339e80864fcf2fa340e275c82c1478594f78ef284eba99cb4be804fc6582e2c2c717da2af1f0d57232b1f979833c26c
data/lib/mp_api/client.rb CHANGED
@@ -1,55 +1,60 @@
1
- module MpApi
2
- class Client < Ac::Base
3
- BASE_URL = "https://api.mercadopago.com/v1/"
4
- MAX_RETRIES = 2
5
- attr_reader :access_token
6
- def initialize(access_token=MpApi.configuration.access_token)
7
- @headers = {
8
- "Content-Type": "application/json",
9
- 'x-idempotency-key' => SecureRandom.uuid
10
- }
11
- super access_token
12
- end
13
-
14
- def create_payment(body)
15
- response = post("/payments", body: body, headers: @headers) do |response|
16
- p response.json unless response.success?
17
- ![500, 429].include?(response.code) || response['id']
18
- end
19
- response.json
20
- end
21
-
22
- def get_payment(payment_id)
23
- response = get("/payments/#{payment_id}") do |response|
24
- p response.json unless response.success?
25
- ![500, 429].include?(response.code) || response['id']
26
- end
27
- response.json
28
- end
29
-
30
- def create_token(card_token_data)
31
- response = post("/card_tokens", body: card_token_data, headers: @headers) do |response|
32
- p response.json unless response.success?
33
- ![500, 429].include?(response.code) || response['id']
34
- end
35
- response.json
36
- end
37
-
38
- def search_payment_methods(query)
39
- response = get("/payment_methods/search", params: query) do |response|
40
- p response.json unless response.success?
41
- ![500, 429].include?(response.code) || response.json['results'][0]
42
- end
43
- response.json
44
- end
45
-
46
- def get_payment_methods
47
- response = get("/payment_methods") do |response|
48
- p response.json unless response.success?
49
- ![500, 429].include?(response.code) || response['id']
50
- end
51
- response.json
52
- end
53
-
54
- end
1
+ module MpApi
2
+ class Client < Ac::Base
3
+ BASE_URL = "https://api.mercadopago.com/v1/"
4
+ MAX_RETRIES = 2
5
+ attr_reader :access_token
6
+ def initialize(access_token=MpApi.configuration.access_token)
7
+ @headers = {
8
+ "Content-Type": "application/json",
9
+ 'x-idempotency-key' => SecureRandom.uuid
10
+ }
11
+ super access_token
12
+ end
13
+
14
+ def create_payment(body)
15
+ response = post("/payments", body: body, headers: @headers) do |response|
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
21
+ end
22
+
23
+ def get_payment(payment_id)
24
+ response = get("/payments/#{payment_id}") do |response|
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
30
+ end
31
+
32
+ def create_token(card_token_data)
33
+ response = post("/card_tokens", body: card_token_data, headers: @headers) do |response|
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
39
+ end
40
+
41
+ def search_payment_methods(query)
42
+ response = get("/payment_methods/search", params: query) do |response|
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
48
+ end
49
+
50
+ def get_payment_methods
51
+ response = get("/payment_methods") do |response|
52
+ p response.json unless response.success?
53
+ ![500, 429].include?(response.code) || response['id']
54
+ end
55
+ raise RequestError.new(response.json['message']) if ![200,201].include?(response.code)
56
+ response.json
57
+ end
58
+
59
+ end
55
60
  end
@@ -10,8 +10,8 @@ module MpApi
10
10
  new(**build_hash(response))
11
11
  end
12
12
 
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
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)
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)
15
15
  @id = id
16
16
  @description = description
17
17
  @date_approved = date_approved
@@ -35,6 +35,16 @@ module MpApi
35
35
  @three_ds_info_external_resource_url = three_ds_info_external_resource_url
36
36
  @three_ds_info_creq = three_ds_info_creq
37
37
  @status_detail = status_detail
38
+ @statement_descriptor = statement_descriptor
39
+ @items = items
40
+ # Array example:
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
+ # }
38
48
  end
39
49
 
40
50
  def build_json
@@ -45,6 +55,10 @@ module MpApi
45
55
  {
46
56
  transaction_amount: amount,
47
57
  description: description,
58
+ statement_descriptor: statement_descriptor,
59
+ additional_info: {
60
+ items: @items
61
+ },
48
62
  payment_method_id: payment_method,
49
63
  payer: {
50
64
  email: payer_email,
@@ -3,7 +3,11 @@ module MpApi
3
3
  class PaymentMethod
4
4
 
5
5
  def self.find_by_first_six_digits(first_six_digits, credit: true)
6
- response = Client.new.search_payment_methods(build_query(first_six_digits))
6
+ begin
7
+ response = Client.new.search_payment_methods(build_query(first_six_digits))
8
+ rescue RuntimeError => e
9
+ e.message == 'Too many retries' ? raise(TooManyRequestsError) : raise(e)
10
+ end
7
11
  new(**build_hash(response, credit))
8
12
  end
9
13
 
data/lib/mp_api/token.rb CHANGED
@@ -25,8 +25,12 @@ module MpApi
25
25
  end
26
26
 
27
27
  def create
28
- response = Client.new.create_token(JSON.dump(build_json))
29
- self.class.new(**self.class.build_hash(response))
28
+ begin
29
+ response = Client.new.create_token(JSON.dump(build_json))
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
30
34
  end
31
35
 
32
36
  def self.build_hash(response)
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
-
3
- module MpApi
4
- VERSION = "0.1.8"
5
- end
1
+ # frozen_string_literal: true
2
+
3
+ module MpApi
4
+ VERSION = "0.2.0"
5
+ end
data/lib/mp_api.rb CHANGED
@@ -15,6 +15,12 @@ module MpApi
15
15
  end
16
16
  end
17
17
 
18
+ class RequestError < StandardError
19
+ def initialize(message="Request error")
20
+ super(message)
21
+ end
22
+ end
23
+
18
24
  class Configuration
19
25
  attr_accessor :access_token, :public_key
20
26
 
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.1.8
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - caio
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-12-07 00:00:00.000000000 Z
11
+ date: 2023-12-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ac
@@ -64,7 +64,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
64
64
  - !ruby/object:Gem::Version
65
65
  version: '0'
66
66
  requirements: []
67
- rubygems_version: 3.4.19
67
+ rubygems_version: 3.4.6
68
68
  signing_key:
69
69
  specification_version: 4
70
70
  summary: ''