jera_payment 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/Rakefile +2 -0
- data/app/controllers/jera_payment/callbacks_controller.rb +22 -0
- data/app/controllers/jera_payment/jera_payment_controller.rb +5 -0
- data/config/locale/jera_payment.pt-BR.yml +243 -0
- data/config/routes.rb +5 -0
- data/lib/generators/active_record/jera_payment_generator.rb +59 -0
- data/lib/generators/active_record/templates/create_jera_payment_charges.rb +36 -0
- data/lib/generators/active_record/templates/create_jera_payment_credit_cards.rb +20 -0
- data/lib/generators/active_record/templates/create_jera_payment_customers.rb +22 -0
- data/lib/generators/active_record/templates/create_jera_payment_households.rb +18 -0
- data/lib/generators/active_record/templates/create_jera_payment_invoices.rb +42 -0
- data/lib/generators/active_record/templates/create_jera_payment_plans.rb +18 -0
- data/lib/generators/active_record/templates/create_jera_payment_sub_accounts.rb +39 -0
- data/lib/generators/active_record/templates/create_jera_payment_subscriptions.rb +26 -0
- data/lib/generators/active_record/templates/create_jera_payment_transfers.rb +15 -0
- data/lib/generators/active_record/templates/create_jera_payment_withdrawals.rb +15 -0
- data/lib/generators/jera_payment/install_generator.rb +68 -0
- data/lib/generators/jera_payment/jera_payment_generator.rb +46 -0
- data/lib/generators/jera_payment/templates/jera_payment.rb +9 -0
- data/lib/jera_payment.rb +39 -0
- data/lib/jera_payment/api/iugu/base.rb +55 -0
- data/lib/jera_payment/api/iugu/charge.rb +12 -0
- data/lib/jera_payment/api/iugu/customer.rb +37 -0
- data/lib/jera_payment/api/iugu/household.rb +13 -0
- data/lib/jera_payment/api/iugu/invoice.rb +55 -0
- data/lib/jera_payment/api/iugu/payment_method.rb +39 -0
- data/lib/jera_payment/api/iugu/payment_token.rb +12 -0
- data/lib/jera_payment/api/iugu/plan.rb +42 -0
- data/lib/jera_payment/api/iugu/sub_account.rb +40 -0
- data/lib/jera_payment/api/iugu/subscription.rb +72 -0
- data/lib/jera_payment/api/iugu/transfer.rb +24 -0
- data/lib/jera_payment/api/iugu/withdrawal.rb +26 -0
- data/lib/jera_payment/application.rb +79 -0
- data/lib/jera_payment/engine.rb +5 -0
- data/lib/jera_payment/models/charge.rb +30 -0
- data/lib/jera_payment/models/concerns/household_methods.rb +33 -0
- data/lib/jera_payment/models/concerns/invoice_methods.rb +42 -0
- data/lib/jera_payment/models/concerns/resource_callbacks.rb +40 -0
- data/lib/jera_payment/models/concerns/sub_account_methods.rb +18 -0
- data/lib/jera_payment/models/concerns/subscription_methods.rb +34 -0
- data/lib/jera_payment/models/concerns/transfer_methods.rb +18 -0
- data/lib/jera_payment/models/concerns/withdrawal_methods.rb +18 -0
- data/lib/jera_payment/models/credit_card.rb +16 -0
- data/lib/jera_payment/models/customer.rb +14 -0
- data/lib/jera_payment/models/household.rb +51 -0
- data/lib/jera_payment/models/invoice.rb +49 -0
- data/lib/jera_payment/models/plan.rb +16 -0
- data/lib/jera_payment/models/sub_account.rb +53 -0
- data/lib/jera_payment/models/subscription.rb +29 -0
- data/lib/jera_payment/models/transfer.rb +20 -0
- data/lib/jera_payment/models/withdrawal.rb +24 -0
- data/lib/jera_payment/parsers/iugu/charge_parser.rb +39 -0
- data/lib/jera_payment/parsers/iugu/credit_card_parser.rb +31 -0
- data/lib/jera_payment/parsers/iugu/household_parser.rb +16 -0
- data/lib/jera_payment/parsers/iugu/invoice_parser.rb +31 -0
- data/lib/jera_payment/parsers/iugu/sub_account_parser.rb +26 -0
- data/lib/jera_payment/parsers/iugu/transfer_parser.rb +15 -0
- data/lib/jera_payment/services/iugu/base.rb +23 -0
- data/lib/jera_payment/services/iugu/charges/create.rb +30 -0
- data/lib/jera_payment/services/iugu/credit_cards/create.rb +40 -0
- data/lib/jera_payment/services/iugu/credit_cards/destroy.rb +23 -0
- data/lib/jera_payment/services/iugu/credit_cards/update.rb +19 -0
- data/lib/jera_payment/services/iugu/customers/create.rb +27 -0
- data/lib/jera_payment/services/iugu/customers/destroy.rb +22 -0
- data/lib/jera_payment/services/iugu/customers/update.rb +30 -0
- data/lib/jera_payment/services/iugu/handle_callbacks/invoice/base.rb +24 -0
- data/lib/jera_payment/services/iugu/handle_callbacks/invoice/created.rb +8 -0
- data/lib/jera_payment/services/iugu/handle_callbacks/invoice/due.rb +8 -0
- data/lib/jera_payment/services/iugu/handle_callbacks/invoice/dunning_action.rb +8 -0
- data/lib/jera_payment/services/iugu/handle_callbacks/invoice/installment_released.rb +8 -0
- data/lib/jera_payment/services/iugu/handle_callbacks/invoice/payment_failed.rb +8 -0
- data/lib/jera_payment/services/iugu/handle_callbacks/invoice/refund.rb +8 -0
- data/lib/jera_payment/services/iugu/handle_callbacks/invoice/released.rb +8 -0
- data/lib/jera_payment/services/iugu/handle_callbacks/invoice/status_changed.rb +8 -0
- data/lib/jera_payment/services/iugu/handle_callbacks/referrals/bank_verification.rb +39 -0
- data/lib/jera_payment/services/iugu/handle_callbacks/referrals/base.rb +16 -0
- data/lib/jera_payment/services/iugu/handle_callbacks/referrals/verification.rb +24 -0
- data/lib/jera_payment/services/iugu/handle_callbacks/subscription/activated.rb +12 -0
- data/lib/jera_payment/services/iugu/handle_callbacks/subscription/base.rb +18 -0
- data/lib/jera_payment/services/iugu/handle_callbacks/subscription/changed.rb +12 -0
- data/lib/jera_payment/services/iugu/handle_callbacks/subscription/created.rb +12 -0
- data/lib/jera_payment/services/iugu/handle_callbacks/subscription/expired.rb +12 -0
- data/lib/jera_payment/services/iugu/handle_callbacks/subscription/renewed.rb +12 -0
- data/lib/jera_payment/services/iugu/handle_callbacks/subscription/suspended.rb +8 -0
- data/lib/jera_payment/services/iugu/handle_callbacks/withdraw_request/base.rb +16 -0
- data/lib/jera_payment/services/iugu/handle_callbacks/withdraw_request/created.rb +8 -0
- data/lib/jera_payment/services/iugu/handle_callbacks/withdraw_request/status_changed.rb +20 -0
- data/lib/jera_payment/services/iugu/households/create.rb +19 -0
- data/lib/jera_payment/services/iugu/invoices/create.rb +31 -0
- data/lib/jera_payment/services/iugu/invoices/duplicate.rb +54 -0
- data/lib/jera_payment/services/iugu/invoices/send_email.rb +18 -0
- data/lib/jera_payment/services/iugu/invoices/update_status.rb +31 -0
- data/lib/jera_payment/services/iugu/plans/create.rb +26 -0
- data/lib/jera_payment/services/iugu/plans/destroy.rb +17 -0
- data/lib/jera_payment/services/iugu/plans/update.rb +18 -0
- data/lib/jera_payment/services/iugu/sub_accounts/create.rb +26 -0
- data/lib/jera_payment/services/iugu/sub_accounts/update.rb +19 -0
- data/lib/jera_payment/services/iugu/sub_accounts/verify.rb +38 -0
- data/lib/jera_payment/services/iugu/subscriptions/change_plan.rb +41 -0
- data/lib/jera_payment/services/iugu/subscriptions/create.rb +29 -0
- data/lib/jera_payment/services/iugu/subscriptions/destroy.rb +26 -0
- data/lib/jera_payment/services/iugu/subscriptions/update.rb +18 -0
- data/lib/jera_payment/services/iugu/subscriptions/update_credits.rb +37 -0
- data/lib/jera_payment/services/iugu/subscriptions/update_situation.rb +36 -0
- data/lib/jera_payment/services/iugu/transfers/create.rb +28 -0
- data/lib/jera_payment/services/iugu/withdrawals/create.rb +27 -0
- data/lib/jera_payment/version.rb +3 -0
- metadata +208 -0
@@ -0,0 +1,20 @@
|
|
1
|
+
class JeraPayment::Transfer < ActiveRecord::Base
|
2
|
+
include JeraPayment::Concerns::ResourceCallbacks
|
3
|
+
include JeraPayment::Concerns::TransferMethods
|
4
|
+
|
5
|
+
attr_readonly :api_id, :sub_account_id, :receiver, :amount_cents, :amount_localized, :custom_variables
|
6
|
+
|
7
|
+
self.table_name = 'jera_payment_transfers'
|
8
|
+
|
9
|
+
belongs_to :sub_account, class_name: 'JeraPayment::SubAccount'
|
10
|
+
belongs_to :receiver, class_name: 'JeraPayment::SubAccount'
|
11
|
+
|
12
|
+
def custom_variables=(value)
|
13
|
+
write_attribute(:custom_variables, value&.to_json)
|
14
|
+
end
|
15
|
+
|
16
|
+
def custom_variables
|
17
|
+
ActiveSupport::JSON.decode(self[:custom_variables]).map{ |item| item.deep_symbolize_keys } if self[:custom_variables]
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
class JeraPayment::Withdrawal < ActiveRecord::Base
|
2
|
+
require 'enumerize'
|
3
|
+
|
4
|
+
include JeraPayment::Concerns::ResourceCallbacks
|
5
|
+
include JeraPayment::Concerns::WithdrawalMethods
|
6
|
+
extend Enumerize
|
7
|
+
|
8
|
+
attr_readonly :api_id, :sub_account, :amount, :custom_variables
|
9
|
+
|
10
|
+
self.table_name = 'jera_payment_withdrawals'
|
11
|
+
|
12
|
+
belongs_to :sub_account, class_name: 'JeraPayment::SubAccount'
|
13
|
+
|
14
|
+
enumerize :status, in: { pending: 0, processing: 1, rejected: 2, accepted: 3 }, predicates: true, scope: true, default: :pending
|
15
|
+
|
16
|
+
def custom_variables=(value)
|
17
|
+
write_attribute(:custom_variables, value&.to_json)
|
18
|
+
end
|
19
|
+
|
20
|
+
def custom_variables
|
21
|
+
ActiveSupport::JSON.decode(self[:custom_variables]).map{ |item| item.deep_symbolize_keys } if self[:custom_variables]
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module JeraPayment
|
2
|
+
module Parsers
|
3
|
+
module Iugu
|
4
|
+
class ChargeParser
|
5
|
+
def self.charge_body(resource)
|
6
|
+
{
|
7
|
+
invoice_id: resource&.invoice&.api_id,
|
8
|
+
customer_payment_method_id: resource.customer_payment_method_api_id,
|
9
|
+
restrict_payment_method: resource.restrict_payment_method,
|
10
|
+
customer_id: resource.customer_api_id,
|
11
|
+
email: resource.email,
|
12
|
+
months: resource.months,
|
13
|
+
discount_cents: resource.discount_cents,
|
14
|
+
bank_slip_extra_days: resource.bank_slip_extra_days,
|
15
|
+
keep_dunning: resource.keep_dunning,
|
16
|
+
items: resource.items,
|
17
|
+
payer: {
|
18
|
+
cpf_cnpj: resource.cpf_cnpj,
|
19
|
+
name: resource.name,
|
20
|
+
phone_prefix: resource.phone_prefix,
|
21
|
+
phone: resource.phone,
|
22
|
+
email: resource.email,
|
23
|
+
address: {
|
24
|
+
zip_code: resource.zip_code,
|
25
|
+
street: resource.street,
|
26
|
+
number: resource.number,
|
27
|
+
neighborhood: resource.neighborhood,
|
28
|
+
city: resource.city,
|
29
|
+
state: resource.state,
|
30
|
+
country: resource.country,
|
31
|
+
complement: resource.complement
|
32
|
+
},
|
33
|
+
},
|
34
|
+
}
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module JeraPayment
|
2
|
+
module Parsers
|
3
|
+
module Iugu
|
4
|
+
class CreditCardParser
|
5
|
+
def self.parse_payment_token(resource)
|
6
|
+
{
|
7
|
+
account_id: resource&.customer&.sub_account&.present? ? resource&.customer&.sub_account&.account_id : JeraPayment.account_id,
|
8
|
+
method: 'credit_card',
|
9
|
+
test: resource.test,
|
10
|
+
data: {
|
11
|
+
number: resource.number,
|
12
|
+
verification_value: resource.cvv,
|
13
|
+
first_name: resource.first_name,
|
14
|
+
last_name: resource.last_name,
|
15
|
+
month: resource.month,
|
16
|
+
year: resource.year
|
17
|
+
}
|
18
|
+
}
|
19
|
+
end
|
20
|
+
def self.parse_payment_method(resource, credit_card_token_id)
|
21
|
+
{
|
22
|
+
token: credit_card_token_id,
|
23
|
+
description: resource.description,
|
24
|
+
set_as_default: true
|
25
|
+
}
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module JeraPayment
|
2
|
+
module Parsers
|
3
|
+
module Iugu
|
4
|
+
class HouseholdParser
|
5
|
+
def self.create_household(household)
|
6
|
+
{
|
7
|
+
agency: household.agency,
|
8
|
+
account: household.account,
|
9
|
+
account_type: household.account_type.checking? ? 'cc' : 'cp',
|
10
|
+
bank: household.bank_iugu_code
|
11
|
+
}
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module JeraPayment
|
2
|
+
module Parsers
|
3
|
+
module Iugu
|
4
|
+
class InvoiceParser
|
5
|
+
def self.invoice_creation(resource)
|
6
|
+
{
|
7
|
+
email: resource.email,
|
8
|
+
cc_emails: resource.cc_emails,
|
9
|
+
due_date: resource.due_date,
|
10
|
+
ensure_workday_due_date: resource.ensure_workday_due_date,
|
11
|
+
items: resource.items,
|
12
|
+
return_url: resource.return_url,
|
13
|
+
expired_url: resource.expired_url,
|
14
|
+
notification_url: resource.notification_url,
|
15
|
+
fines: resource.fines,
|
16
|
+
late_payment_fine: resource.late_payment_fine,
|
17
|
+
per_day_interest: resource.per_day_interest,
|
18
|
+
discount_cents: resource.discount_cents,
|
19
|
+
ignore_due_email: resource.ignore_due_email,
|
20
|
+
subscription_id: resource.subscription_api_id,
|
21
|
+
payable_with: resource.payable_with,
|
22
|
+
credits: resource.credits,
|
23
|
+
early_payment_discount: resource.early_payment_discount,
|
24
|
+
early_payment_discounts: resource.early_payment_discounts,
|
25
|
+
payer: resource.payer
|
26
|
+
}
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module JeraPayment
|
2
|
+
module Parsers
|
3
|
+
module Iugu
|
4
|
+
class SubAccountParser
|
5
|
+
def self.parse_account_configuration(resource)
|
6
|
+
{
|
7
|
+
comissions: resource.comissions,
|
8
|
+
auto_withdraw: resource.auto_withdraw,
|
9
|
+
fines: resource.fines,
|
10
|
+
per_day_interest: resource.per_day_interest,
|
11
|
+
late_payment_fine: resource.late_payment_fine,
|
12
|
+
auto_advance: resource.auto_advance,
|
13
|
+
auto_advance_type: resource.auto_advance_type,
|
14
|
+
auto_advance_option: resource.auto_advance_option,
|
15
|
+
bank_slip: resource.bank_slip,
|
16
|
+
credit_card: resource.credit_card,
|
17
|
+
payment_email_notification: resource.payment_email_notification,
|
18
|
+
payment_email_notification_receiver: resource.payment_email_notification_receiver,
|
19
|
+
early_payment_discount: resource.early_payment_discount,
|
20
|
+
early_payment_discounts: resource.early_payment_discounts
|
21
|
+
}
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module JeraPayment
|
2
|
+
module Parsers
|
3
|
+
module Iugu
|
4
|
+
class TransferParser
|
5
|
+
def self.parse_creation(resource)
|
6
|
+
{
|
7
|
+
receiver_id: resource.receiver.api_id,
|
8
|
+
amount_cents: resource.amount_cents,
|
9
|
+
custom_variables: resource.custom_variables
|
10
|
+
}
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module JeraPayment
|
2
|
+
module Services
|
3
|
+
module Iugu
|
4
|
+
class Base
|
5
|
+
def initialize(resource)
|
6
|
+
@resource = resource
|
7
|
+
@attributes = @resource.attributes
|
8
|
+
end
|
9
|
+
|
10
|
+
private
|
11
|
+
def add_error(errors)
|
12
|
+
if errors.is_a?(Hash)
|
13
|
+
errors.each{ |key, error| @resource.errors.messages.merge!( { "#{key}": error } ) }
|
14
|
+
elsif errors.is_a?(String)
|
15
|
+
@resource.errors.add(:base, errors)
|
16
|
+
elsif errors.is_a?(Array)
|
17
|
+
errors.each{ |error| @resource.errors.add(:base, error) }
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module JeraPayment
|
2
|
+
module Services
|
3
|
+
module Iugu
|
4
|
+
module Charges
|
5
|
+
class Create < JeraPayment::Services::Iugu::Base
|
6
|
+
def call
|
7
|
+
charge_body = JeraPayment::Parsers::Iugu::ChargeParser.charge_body(@resource)
|
8
|
+
charge_body.merge!({ method: @resource.method}) if @resource.method.present?
|
9
|
+
charge_body.merge!({ token: @resource.token}) if @resource.token.present?
|
10
|
+
|
11
|
+
iugu_charge = JeraPayment::Api::Iugu::Charge.create(charge_body, @resource&.sub_account&.api_token)
|
12
|
+
|
13
|
+
if iugu_charge[:errors].present?
|
14
|
+
add_error(iugu_charge[:errors])
|
15
|
+
else
|
16
|
+
set_api_attributes(iugu_charge)
|
17
|
+
end
|
18
|
+
|
19
|
+
@resource.errors.blank?
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
def set_api_attributes(attributes)
|
24
|
+
@resource.assign_attributes(attributes.slice(:url, :pdf, :identification))
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module JeraPayment
|
2
|
+
module Services
|
3
|
+
module Iugu
|
4
|
+
module CreditCards
|
5
|
+
class Create < JeraPayment::Services::Iugu::Base
|
6
|
+
def call
|
7
|
+
credit_card_token = create_credit_card_token
|
8
|
+
|
9
|
+
add_error(credit_card_token[:errors]) and return false if credit_card_token[:errors].present?
|
10
|
+
|
11
|
+
set_payment_token_attributes(credit_card_token)
|
12
|
+
|
13
|
+
link_credit_card_response = link_credit_card(credit_card_token[:id])
|
14
|
+
|
15
|
+
add_error(link_credit_card_response[:errors]) and return false if link_credit_card_response[:errors].present?
|
16
|
+
|
17
|
+
@resource.api_id = link_credit_card_response[:id]
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
def create_credit_card_token
|
22
|
+
JeraPayment::Api::Iugu::PaymentToken.create(JeraPayment::Parsers::Iugu::CreditCardParser.parse_payment_token(@resource),
|
23
|
+
@resource.customer&.sub_account&.api_token)
|
24
|
+
end
|
25
|
+
|
26
|
+
def set_payment_token_attributes(credit_card_token)
|
27
|
+
@resource.assign_attributes(brand: credit_card_token[:extra_info][:brand], number: credit_card_token[:extra_info][:display_number], cvv: nil)
|
28
|
+
end
|
29
|
+
|
30
|
+
def link_credit_card(credit_card_token_id)
|
31
|
+
eval("JeraPayment::Api::Iugu::PaymentMethod.create(@resource.customer.api_id,
|
32
|
+
JeraPayment::Parsers::Iugu::CreditCardParser.parse_payment_method(@resource, credit_card_token_id),
|
33
|
+
@resource.customer&.sub_account&.api_token)")
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module JeraPayment
|
2
|
+
module Services
|
3
|
+
module Iugu
|
4
|
+
module CreditCards
|
5
|
+
class Destroy < JeraPayment::Services::Iugu::Base
|
6
|
+
def call
|
7
|
+
iugu_delete = JeraPayment::Api::Iugu::PaymentMethod.destroy(@resource.customer.api_id, @resource.api_id,
|
8
|
+
@resource.customer&.sub_account&.api_token)
|
9
|
+
|
10
|
+
if iugu_delete[:errors].present?
|
11
|
+
add_error(iugu_delete[:errors])
|
12
|
+
else
|
13
|
+
@resource.destroy
|
14
|
+
end
|
15
|
+
|
16
|
+
@resource.errors.blank?
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module JeraPayment
|
2
|
+
module Services
|
3
|
+
module Iugu
|
4
|
+
module CreditCards
|
5
|
+
class Update < JeraPayment::Services::Iugu::Base
|
6
|
+
def call
|
7
|
+
iugu_credit_card = JeraPayment::Api::Iugu::PaymentMethod.update(@resource.customer.api_id, @resource.api_id, @resource.attributes,
|
8
|
+
@resource.customer&.sub_account&.api_token)
|
9
|
+
|
10
|
+
add_error(iugu_credit_card[:errors]) if iugu_credit_card[:errors].present?
|
11
|
+
|
12
|
+
@resource.errors.blank?
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module JeraPayment
|
2
|
+
module Services
|
3
|
+
module Iugu
|
4
|
+
module Customers
|
5
|
+
class Create < JeraPayment::Services::Iugu::Base
|
6
|
+
def call
|
7
|
+
iugu_customer = JeraPayment::Api::Iugu::Customer.create(@attributes, @resource&.sub_account&.api_token)
|
8
|
+
|
9
|
+
if iugu_customer[:errors].present?
|
10
|
+
add_error(iugu_customer[:errors])
|
11
|
+
else
|
12
|
+
set_api_attributes(iugu_customer)
|
13
|
+
end
|
14
|
+
|
15
|
+
@resource.errors.blank?
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
def set_api_attributes(attributes)
|
20
|
+
@resource.api_id = attributes[:id]
|
21
|
+
@resource.assign_attributes(attributes.slice(:email, :name, :phone, :cpf_cpnj, :city, :state, :street, :number, :zip_code))
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module JeraPayment
|
2
|
+
module Services
|
3
|
+
module Iugu
|
4
|
+
module Customers
|
5
|
+
class Destroy < JeraPayment::Services::Iugu::Base
|
6
|
+
def call
|
7
|
+
iugu_delete = JeraPayment::Api::Iugu::Customer.destroy(@resource.api_id, @resource&.sub_account&.api_token)
|
8
|
+
|
9
|
+
if iugu_delete[:errors].present?
|
10
|
+
add_error(iugu_delete[:errors])
|
11
|
+
else
|
12
|
+
@resource.destroy
|
13
|
+
end
|
14
|
+
|
15
|
+
@resource.errors.blank?
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module JeraPayment
|
2
|
+
module Services
|
3
|
+
module Iugu
|
4
|
+
module Customers
|
5
|
+
class Update < JeraPayment::Services::Iugu::Base
|
6
|
+
def call
|
7
|
+
iugu_customer = JeraPayment::Api::Iugu::Customer.update(
|
8
|
+
@resource.api_id,
|
9
|
+
@attributes,
|
10
|
+
@resource&.sub_account&.api_token
|
11
|
+
)
|
12
|
+
|
13
|
+
if iugu_customer[:errors].present?
|
14
|
+
add_error(iugu_customer[:errors])
|
15
|
+
else
|
16
|
+
set_api_attributes(iugu_customer)
|
17
|
+
end
|
18
|
+
|
19
|
+
@resource.errors.blank?
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
def set_api_attributes(attributes)
|
24
|
+
@resource.assign_attributes(attributes.slice(:email, :name, :phone, :cpf_cpnj))
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Iugu
|
2
|
+
module HandleCallbacks
|
3
|
+
module Invoice
|
4
|
+
class Base
|
5
|
+
def initialize(params)
|
6
|
+
@params = params
|
7
|
+
end
|
8
|
+
|
9
|
+
def call
|
10
|
+
Rails.logger.info("======> #{@params}")
|
11
|
+
|
12
|
+
@invoice = ::JeraPayment::Invoice.find_by(api_id: @params["data"]["id"])
|
13
|
+
|
14
|
+
return 404 unless @invoice.present?
|
15
|
+
|
16
|
+
return 200 if @invoice.update(status: @params["data"]["status"])
|
17
|
+
|
18
|
+
return 500
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|