lib/mp_api/payment.rb in mp_api-0.2.0 vs lib/mp_api/payment.rb in mp_api-0.3.0
- old
+ new
@@ -1,19 +1,10 @@
module MpApi
class Payment
-
- 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
- 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
- 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)
+ 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
+ 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)
@id = id
@description = description
@date_approved = date_approved
@date_created = date_created
@money_release_date = money_release_date
@@ -35,18 +26,11 @@
@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
- # }
+ @errors = errors
end
def build_json
send("build_json_#{payment_method == 'pix' ? 'pix' : 'credit_card'}").except(:description)
end
@@ -78,17 +62,18 @@
three_d_secure_mode: three_d_secure_mode ? 'optional' : 'not_supported'
})
end
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))
+ response = Client.new.create_payment(JSON.dump(build_json))
+ self.class.new(**self.class.build_hash(response.json))
end
+
+ def self.find_by_id(payment_id)
+ response = Client.new.get_payment(payment_id)
+ new(**build_hash(response.json))
+ end
def self.build_hash json_response
{
id: json_response.dig('id'),
description: json_response.dig('description'),
@@ -106,11 +91,11 @@
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')
+ amount: json_response.dig('transaction_amount'),
+ errors: PaymentError.new(json_response: json_response).errors
}
end
-
end
end