mp_api 1.0.1 → 1.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: 14d24c337abe28eab714ae937b8cc427a8bfa7a6c63d1f97a3e81af62ce7c8ac
4
- data.tar.gz: 32eeff608351f09cc4266392edef78cd60e6dbdbd5095b50034a79c8f1f4a5e7
3
+ metadata.gz: acb1327c5e7bdeb10e34f09b348fff419d38451506f7f4e18f75bdeeceec5294
4
+ data.tar.gz: 170333900c1568e4937e0dbd5b333ea764f1f548871acaab5dd1825e238c6605
5
5
  SHA512:
6
- metadata.gz: b4e8c968cc02439b3e73f21e4269098744586aab0540ec339bce6e2a02c9a8a3f302f32eba0c2e15b672450d53f2205434795bc26f4e48a7ff3761075868ec15
7
- data.tar.gz: 16ecb53202057e817de0d3a80085f4f83359cffdc0e242c7b9bc0d264de974253802859b8e420fb7b720dd9cafe942e93026b6eb057e600242e4a82c688ee3b7
6
+ metadata.gz: 77a6f9bc3cdce5dfddf47c90dc2de04af4b3f0da903cbd502c41325cdf910f9573a25757f22ef5dd99bcd822841cfd9cd23aa88950fac49315539f45ae4569cc
7
+ data.tar.gz: de19a66ddb638012c114f1df58b679affe37be5345ab418253c37bb8376f99b0634181353a26ce3ca61c5dca093c5fa0eec926a39fc8fc32beccb6208b63234c
@@ -0,0 +1,46 @@
1
+ module MpApi
2
+ class Card
3
+ attr_reader :token, :customer_id, :external_id, :cardholder_name, :expiration_month, :expiration_year, :first_six_digits, :last_four_digits, :issuer_id, :mp_payment_method_id, :error, :error_detail
4
+
5
+ def initialize(token: nil, customer_id: nil, external_id: nil, cardholder_name: nil, expiration_month: nil, expiration_year: nil, first_six_digits: nil, last_four_digits: nil, issuer_id: nil, mp_payment_method_id: nil, error: nil, error_detail: nil)
6
+ @token = token
7
+ @customer_id = customer_id
8
+ @external_id = external_id
9
+ @cardholder_name = cardholder_name
10
+ @expiration_month = expiration_month
11
+ @expiration_year = expiration_year
12
+ @first_six_digits = first_six_digits
13
+ @last_four_digits = last_four_digits
14
+ @issuer_id = issuer_id
15
+ @mp_payment_method_id = mp_payment_method_id
16
+ @error = error
17
+ @error_detail = error_detail
18
+ end
19
+
20
+ def build_json
21
+ {
22
+ token: token
23
+ }
24
+ end
25
+
26
+ def create
27
+ response = Client.new.create_card(customer_id, JSON.dump(build_json))
28
+ self.class.new(**self.class.build_hash(response.json))
29
+ end
30
+
31
+ def self.build_hash(response)
32
+ {
33
+ external_id: response.dig("id"),
34
+ cardholder_name: response.dig("cardholder", "name"),
35
+ expiration_month: response.dig("expiration_month"),
36
+ expiration_year: response.dig("expiration_year"),
37
+ first_six_digits: response.dig("first_six_digits"),
38
+ last_four_digits: response.dig("last_four_digits"),
39
+ issuer_id: response.dig("issuer", "id"),
40
+ mp_payment_method_id: response.dig("payment_method", "id"),
41
+ error: response.dig("message"),
42
+ error_detail: response.dig("cause")
43
+ }
44
+ end
45
+ end
46
+ end
data/lib/mp_api/client.rb CHANGED
@@ -35,6 +35,14 @@ module MpApi
35
35
  get("/payment_methods") { |response| validate_response(response, "id") }
36
36
  end
37
37
 
38
+ def create_customer(body)
39
+ post("/customers", body: body, headers: @headers) { |response| validate_response(response, "id") }
40
+ end
41
+
42
+ def create_card(customer_id, body)
43
+ post("/customers/#{customer_id}/cards", body: body, headers: @headers) { |response| validate_response(response, "id") }
44
+ end
45
+
38
46
  private
39
47
 
40
48
  def validate_response(response, required_response_key)
@@ -0,0 +1,54 @@
1
+ module MpApi
2
+ class Customer
3
+
4
+ attr_reader :external_id, :email, :first_name, :identification_type, :identification_number, :phone_area_code, :phone_number, :status, :error, :error_detail
5
+ def initialize(external_id: nil, email:, first_name: nil, identification_type:, identification_number:, phone_area_code: "55", phone_number: nil, status: nil, error: nil, error_detail: nil)
6
+ @external_id = external_id
7
+ @email = email
8
+ @first_name = first_name
9
+ @identification_type = identification_type
10
+ @identification_number = identification_number
11
+ @phone_area_code = phone_area_code
12
+ @phone_number = phone_number
13
+ @status = status
14
+ @error = error
15
+ @error_detail = error_detail
16
+ end
17
+
18
+ def build_json
19
+ {
20
+ email: email,
21
+ first_name: first_name,
22
+ identification: {
23
+ type: identification_type,
24
+ number: identification_number
25
+ },
26
+ phone: {
27
+ area_code: phone_area_code,
28
+ number: phone_number
29
+ }
30
+ }
31
+ end
32
+
33
+ def create
34
+ response = Client.new.create_customer(JSON.dump(build_json))
35
+ self.class.new(**self.class.build_hash(response.json))
36
+ end
37
+
38
+ def self.build_hash(response)
39
+ {
40
+ external_id: response.dig("id"),
41
+ email: response.dig("email"),
42
+ first_name: response.dig("first_name"),
43
+ identification_type: response.dig("identification", "type"),
44
+ identification_number: response.dig("identification", "number"),
45
+ phone_area_code: response.dig("phone", "area_code"),
46
+ phone_number: response.dig("phone", "number"),
47
+ status: response.dig("status"),
48
+ error: response.dig("message"),
49
+ error_detail: response.dig("cause")
50
+ }
51
+ end
52
+
53
+ end
54
+ end
@@ -1,7 +1,7 @@
1
1
  module MpApi
2
2
  class Payment
3
- 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, :last_four_digits, :payment_type, :qr_code, :qr_code_base_64, :transaction_id, :ticket_url, :status, :amount, :token, :issuer_id, :installments, :statement_descriptor, :items, :error, :internal_error, :capture, :date_of_expiration
4
- def initialize(payer_email:, payer_identification_type:, payer_identification_number:, payment_method:, last_four_digits: nil, amount:, 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, payment_type: nil, qr_code: nil, qr_code_base_64: nil, transaction_id: nil, ticket_url: nil, status: nil, token: nil, issuer_id: nil, installments: nil, items: nil, statement_descriptor: nil, error: nil, internal_error: nil, capture: nil, date_of_expiration: nil)
3
+ 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, :last_four_digits, :payment_type, :qr_code, :qr_code_base_64, :transaction_id, :ticket_url, :status, :amount, :token, :issuer_id, :installments, :statement_descriptor, :items, :error, :internal_error, :capture, :date_of_expiration, :saved_card, :customer_id
4
+ def initialize(payer_email:, payer_identification_type:, payer_identification_number:, payment_method:, last_four_digits: nil, amount:, 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, payment_type: nil, qr_code: nil, qr_code_base_64: nil, transaction_id: nil, ticket_url: nil, status: nil, token: nil, issuer_id: nil, installments: nil, items: nil, statement_descriptor: nil, error: nil, internal_error: nil, capture: nil, date_of_expiration: nil, saved_card: false, customer_id: nil)
5
5
  @id = id
6
6
  @description = description
7
7
  @date_approved = date_approved
@@ -32,6 +32,8 @@ module MpApi
32
32
  @internal_error = internal_error
33
33
  @capture = capture
34
34
  @date_of_expiration = date_of_expiration
35
+ @saved_card = saved_card
36
+ @customer_id = customer_id
35
37
  end
36
38
 
37
39
  def build_json
@@ -68,13 +70,25 @@ module MpApi
68
70
  end
69
71
 
70
72
  def build_json_credit_card
71
- build_json_pix.merge({
72
- capture: capture,
73
- token: token,
74
- issuer_id: issuer_id,
75
- installments: installments,
76
- three_d_secure_mode: three_d_secure_mode ? "optional" : "not_supported"
77
- }.compact)
73
+ if saved_card
74
+ {
75
+ transaction_amount: amount,
76
+ token: token,
77
+ installments: installments,
78
+ payer: {
79
+ type: "customer",
80
+ id: customer_id
81
+ }
82
+ }
83
+ else
84
+ build_json_pix.merge({
85
+ capture: capture,
86
+ token: token,
87
+ issuer_id: issuer_id,
88
+ installments: installments,
89
+ three_d_secure_mode: three_d_secure_mode ? "optional" : "not_supported"
90
+ }.compact)
91
+ end
78
92
  end
79
93
 
80
94
  def create
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MpApi
4
- VERSION = "1.0.1"
4
+ VERSION = "1.2.0"
5
5
  end
data/lib/mp_api.rb CHANGED
@@ -1,11 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "ac"
4
+ require "securerandom"
4
5
  require_relative "mp_api/client"
5
6
  require_relative "mp_api/payment"
6
7
  require_relative "mp_api/payment_error"
7
8
  require_relative "mp_api/token"
8
9
  require_relative "mp_api/payment_method"
10
+ require_relative "mp_api/customer"
11
+ require_relative "mp_api/card"
9
12
  require_relative "mp_api/version"
10
13
 
11
14
  module MpApi
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: 1.0.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Todas Essas Coisas
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-06-11 00:00:00.000000000 Z
11
+ date: 2024-07-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ac
@@ -37,7 +37,9 @@ files:
37
37
  - lib/generators/mp_api/install/install_generator.rb
38
38
  - lib/generators/mp_api/install/templates/initializer.rb
39
39
  - lib/mp_api.rb
40
+ - lib/mp_api/card.rb
40
41
  - lib/mp_api/client.rb
42
+ - lib/mp_api/customer.rb
41
43
  - lib/mp_api/payment.rb
42
44
  - lib/mp_api/payment_error.rb
43
45
  - lib/mp_api/payment_method.rb
@@ -65,7 +67,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
65
67
  - !ruby/object:Gem::Version
66
68
  version: '0'
67
69
  requirements: []
68
- rubygems_version: 3.5.9
70
+ rubygems_version: 3.5.11
69
71
  signing_key:
70
72
  specification_version: 4
71
73
  summary: ''