Class: MpApi::Payment

Inherits:
Object
  • Object
show all
Defined in:
lib/mp_api/payment.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#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) ⇒ Payment

Returns a new instance of Payment.



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/mp_api/payment.rb', line 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)
  @id = id
  @description = description
  @date_approved = date_approved
  @date_created = date_created
  @money_release_date = money_release_date
  @payer_email = payer_email
  @payer_identification_type = payer_identification_type
  @payer_identification_number = payer_identification_number
  @payment_method = payment_method
  @payment_type = payment_type
  @qr_code = qr_code
  @qr_code_base_64 = qr_code_base_64
  @transaction_id = transaction_id
  @ticket_url = ticket_url
  @status = status
  @amount = amount
  @token = token
  @issuer_id = issuer_id
  @installments = installments
  @three_d_secure_mode = three_d_secure_mode
  @three_ds_info_external_resource_url = three_ds_info_external_resource_url
  @three_ds_info_creq = three_ds_info_creq
  @status_detail = status_detail
  @statement_descriptor = statement_descriptor
  @items = items
  # Array example:
  # {
  #   id: "100002",
  #   title: "Retrovisor Jeep",
  #   picture_url: "https://http2.mlstatic.com/D_NQ_NP_2X_754724-MLB73109764910_122023-F.webp",
  #   quantity: 4,
  #   unit_price: 3
  # }
end

Instance Attribute Details

#amountObject (readonly)

Returns the value of attribute amount.



13
14
15
# File 'lib/mp_api/payment.rb', line 13

def amount
  @amount
end

#date_approvedObject (readonly)

Returns the value of attribute date_approved.



13
14
15
# File 'lib/mp_api/payment.rb', line 13

def date_approved
  @date_approved
end

#date_createdObject (readonly)

Returns the value of attribute date_created.



13
14
15
# File 'lib/mp_api/payment.rb', line 13

def date_created
  @date_created
end

#descriptionObject (readonly)

Returns the value of attribute description.



13
14
15
# File 'lib/mp_api/payment.rb', line 13

def description
  @description
end

#idObject (readonly)

Returns the value of attribute id.



13
14
15
# File 'lib/mp_api/payment.rb', line 13

def id
  @id
end

#installmentsObject (readonly)

Returns the value of attribute installments.



13
14
15
# File 'lib/mp_api/payment.rb', line 13

def installments
  @installments
end

#issuer_idObject (readonly)

Returns the value of attribute issuer_id.



13
14
15
# File 'lib/mp_api/payment.rb', line 13

def issuer_id
  @issuer_id
end

#itemsObject (readonly)

Returns the value of attribute items.



13
14
15
# File 'lib/mp_api/payment.rb', line 13

def items
  @items
end

#money_release_dateObject (readonly)

Returns the value of attribute money_release_date.



13
14
15
# File 'lib/mp_api/payment.rb', line 13

def money_release_date
  @money_release_date
end

#payer_emailObject (readonly)

Returns the value of attribute payer_email.



13
14
15
# File 'lib/mp_api/payment.rb', line 13

def payer_email
  @payer_email
end

#payer_identification_numberObject (readonly)

Returns the value of attribute payer_identification_number.



13
14
15
# File 'lib/mp_api/payment.rb', line 13

def payer_identification_number
  @payer_identification_number
end

#payer_identification_typeObject (readonly)

Returns the value of attribute payer_identification_type.



13
14
15
# File 'lib/mp_api/payment.rb', line 13

def payer_identification_type
  @payer_identification_type
end

#payment_methodObject (readonly)

Returns the value of attribute payment_method.



13
14
15
# File 'lib/mp_api/payment.rb', line 13

def payment_method
  @payment_method
end

#payment_typeObject (readonly)

Returns the value of attribute payment_type.



13
14
15
# File 'lib/mp_api/payment.rb', line 13

def payment_type
  @payment_type
end

#qr_codeObject (readonly)

Returns the value of attribute qr_code.



13
14
15
# File 'lib/mp_api/payment.rb', line 13

def qr_code
  @qr_code
end

#qr_code_base_64Object (readonly)

Returns the value of attribute qr_code_base_64.



13
14
15
# File 'lib/mp_api/payment.rb', line 13

def qr_code_base_64
  @qr_code_base_64
end

#statement_descriptorObject (readonly)

Returns the value of attribute statement_descriptor.



13
14
15
# File 'lib/mp_api/payment.rb', line 13

def statement_descriptor
  @statement_descriptor
end

#statusObject (readonly)

Returns the value of attribute status.



13
14
15
# File 'lib/mp_api/payment.rb', line 13

def status
  @status
end

#status_detailObject (readonly)

Returns the value of attribute status_detail.



13
14
15
# File 'lib/mp_api/payment.rb', line 13

def status_detail
  @status_detail
end

#three_d_secure_modeObject (readonly)

Returns the value of attribute three_d_secure_mode.



13
14
15
# File 'lib/mp_api/payment.rb', line 13

def three_d_secure_mode
  @three_d_secure_mode
end

#three_ds_info_creqObject (readonly)

Returns the value of attribute three_ds_info_creq.



13
14
15
# File 'lib/mp_api/payment.rb', line 13

def three_ds_info_creq
  @three_ds_info_creq
end

#three_ds_info_external_resource_urlObject (readonly)

Returns the value of attribute three_ds_info_external_resource_url.



13
14
15
# File 'lib/mp_api/payment.rb', line 13

def three_ds_info_external_resource_url
  @three_ds_info_external_resource_url
end

#ticket_urlObject (readonly)

Returns the value of attribute ticket_url.



13
14
15
# File 'lib/mp_api/payment.rb', line 13

def ticket_url
  @ticket_url
end

#tokenObject (readonly)

Returns the value of attribute token.



13
14
15
# File 'lib/mp_api/payment.rb', line 13

def token
  @token
end

#transaction_idObject (readonly)

Returns the value of attribute transaction_id.



13
14
15
# File 'lib/mp_api/payment.rb', line 13

def transaction_id
  @transaction_id
end

Class Method Details

.build_hash(json_response) ⇒ Object



91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# File 'lib/mp_api/payment.rb', line 91

def self.build_hash json_response
  {
    id: json_response.dig('id'),
    description: json_response.dig('description'),
    date_approved: json_response.dig('date_approved'),
    date_created: json_response.dig('date_created'),
    money_release_date: json_response.dig('money_release_date'),
    payer_email: json_response.dig('payer', 'email'),
    payer_identification_type: json_response.dig('payer', 'identification', 'type'),
    payer_identification_number: json_response.dig('payer', 'identification', 'number'),
    payment_method: json_response.dig('payment_method_id'),
    payment_type: json_response.dig('payment_type_id'),
    qr_code: json_response.dig('point_of_interaction', 'transaction_data', 'qr_code'),
    qr_code_base_64: json_response.dig('point_of_interaction', 'transaction_data', 'qr_code_base64'),
    three_ds_info_external_resource_url: json_response.dig('three_ds_info', 'external_resource_url'),
    three_ds_info_creq: json_response.dig('three_ds_info', 'creq'),
    transaction_id: json_response.dig('point_of_interaction', 'transaction_data', 'transaction_id'),
    ticket_url: json_response.dig('point_of_interaction', 'transaction_data', 'ticket_url'),
    status: json_response.dig('status'),
    status_detail: json_response.dig('status_detail'),
    amount: json_response.dig('transaction_amount')
  }
end

.find_by_id(payment_id) ⇒ Object



4
5
6
7
8
9
10
11
# File 'lib/mp_api/payment.rb', line 4

def self.find_by_id(payment_id)
  begin
    response = Client.new.get_payment(payment_id)
  rescue RuntimeError => e
    e.message == 'Too many retries' ? raise(TooManyRequestsError) : raise(e)
  end
  new(**build_hash(response))
end

Instance Method Details

#build_jsonObject



50
51
52
# File 'lib/mp_api/payment.rb', line 50

def build_json
  send("build_json_#{payment_method == 'pix' ? 'pix' : 'credit_card'}").except(:description)
end

#build_json_credit_cardObject



73
74
75
76
77
78
79
80
# File 'lib/mp_api/payment.rb', line 73

def build_json_credit_card
  build_json_pix.merge({
    token: token,
    issuer_id: issuer_id,
    installments: installments,
    three_d_secure_mode: three_d_secure_mode ? 'optional' : 'not_supported'
  })
end

#build_json_pixObject



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/mp_api/payment.rb', line 54

def build_json_pix
  {
    transaction_amount: amount,
    description: description,
    statement_descriptor: statement_descriptor,
    additional_info: {
      items: @items
    },
    payment_method_id: payment_method,
    payer: {
      email: payer_email,
      identification: {
        type: payer_identification_type,
        number: payer_identification_number
      }
    }
  }
end

#createObject



82
83
84
85
86
87
88
89
# File 'lib/mp_api/payment.rb', line 82

def create
  begin
    response = Client.new.create_payment(JSON.dump(build_json))
  rescue RuntimeError => e
    e.message == 'Too many retries' ? raise(TooManyRequestsError) : raise(e)
  end
  self.class.new(**self.class.build_hash(response))
end