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,39 @@
|
|
1
|
+
module Iugu
|
2
|
+
module HandleCallbacks
|
3
|
+
module Referrals
|
4
|
+
class BankVerification < Iugu::HandleCallbacks::Referrals::Base
|
5
|
+
def call
|
6
|
+
super
|
7
|
+
|
8
|
+
@sub_account = SubAccount.find_by(account_id: @params["data"]["account_id"])
|
9
|
+
|
10
|
+
return 404 unless @sub_account.present?
|
11
|
+
|
12
|
+
if @params["data"]["status"] == "accepted"
|
13
|
+
change_current_household
|
14
|
+
else
|
15
|
+
delete_household(@sub_account.households.last)
|
16
|
+
end
|
17
|
+
|
18
|
+
return 200
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def change_current_household
|
24
|
+
last_household = @sub_account.households.last
|
25
|
+
first_household = @sub_account.households.first
|
26
|
+
|
27
|
+
@sub_account.update(current_household: last_household)
|
28
|
+
|
29
|
+
delete_household(first_household)
|
30
|
+
end
|
31
|
+
|
32
|
+
def delete_household(household)
|
33
|
+
household.destroy
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Iugu
|
2
|
+
module HandleCallbacks
|
3
|
+
module Referrals
|
4
|
+
class Verification < Iugu::HandleCallbacks::Referrals::Base
|
5
|
+
def call
|
6
|
+
super
|
7
|
+
@sub_account = JeraPayment::SubAccount.find_by(account_id: @params["data"]["id"])
|
8
|
+
|
9
|
+
return 404 unless @sub_account.present?
|
10
|
+
|
11
|
+
if @params["data"]["status"] == 'accepted'
|
12
|
+
@sub_account.update_columns(can_receive?: true, is_verified?: true)
|
13
|
+
@sub_account.households.last.update(status: :accepted)
|
14
|
+
else
|
15
|
+
@sub_account.update_columns(last_verification_request_feedback: @params["data"]["feedback"])
|
16
|
+
end
|
17
|
+
|
18
|
+
return 200
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Iugu
|
2
|
+
module HandleCallbacks
|
3
|
+
module WithdrawRequest
|
4
|
+
class StatusChanged
|
5
|
+
def call
|
6
|
+
super
|
7
|
+
|
8
|
+
@withdrawal = JeraPayment::Withdrawal.find_by(api_id: @params["data"]["id"])
|
9
|
+
|
10
|
+
return 404 unless @withdrawal.present?
|
11
|
+
|
12
|
+
@withdrawal.update(status: @params["data"]["status"], feedback: @params["data"]["feedback"])
|
13
|
+
|
14
|
+
return 200
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module JeraPayment
|
2
|
+
module Services
|
3
|
+
module Iugu
|
4
|
+
module Households
|
5
|
+
class Create < JeraPayment::Services::Iugu::Base
|
6
|
+
def call
|
7
|
+
iugu_household = JeraPayment::Api::Iugu::Household.create(JeraPayment::Parsers::Iugu::HouseholdParser.create_household(@resource),
|
8
|
+
@resource&.sub_account&.api_token)
|
9
|
+
|
10
|
+
add_error(iugu_household[:errors]) if iugu_household[:errors].present?
|
11
|
+
|
12
|
+
@resource.errors.blank?
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module JeraPayment
|
2
|
+
module Services
|
3
|
+
module Iugu
|
4
|
+
module Invoices
|
5
|
+
class Create < JeraPayment::Services::Iugu::Base
|
6
|
+
def call
|
7
|
+
iugu_invoice = JeraPayment::Api::Iugu::Invoice.create(JeraPayment::Parsers::Iugu::InvoiceParser.invoice_creation(@resource),
|
8
|
+
@resource&.sub_account&.api_token)
|
9
|
+
|
10
|
+
if iugu_invoice[:errors].present?
|
11
|
+
add_error(iugu_invoice[:errors])
|
12
|
+
else
|
13
|
+
set_api_attributes(iugu_invoice)
|
14
|
+
end
|
15
|
+
|
16
|
+
@resource.errors.blank?
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
def set_api_attributes(attributes)
|
21
|
+
@resource.api_id = attributes[:id]
|
22
|
+
@resource.assign_attributes(attributes.slice(:total_cents, :secure_url, :items)
|
23
|
+
.merge( { digitable_line: attributes[:bank_slip][:digitable_line],
|
24
|
+
barcode_data: attributes[:bank_slip][:barcode_data],
|
25
|
+
barcode: attributes[:bank_slip][:barcode] } ) )
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module JeraPayment
|
2
|
+
module Services
|
3
|
+
module Iugu
|
4
|
+
module Invoices
|
5
|
+
class Duplicate < JeraPayment::Services::Iugu::Base
|
6
|
+
def initialize(resource, attributes)
|
7
|
+
@resource = resource
|
8
|
+
@attributes = attributes
|
9
|
+
end
|
10
|
+
|
11
|
+
def call
|
12
|
+
begin
|
13
|
+
ApplicationRecord.transaction do
|
14
|
+
iugu_invoice_duplicated = JeraPayment::Api::Iugu::Invoice.duplicate(@resource.api_id, @attributes,
|
15
|
+
@resource&.sub_account&.api_token)
|
16
|
+
|
17
|
+
raise(StandardError, iugu_invoice_duplicated[:errors]) if iugu_invoice_duplicated[:errors].present?
|
18
|
+
|
19
|
+
invoice_duplicated = set_new_invoice(iugu_invoice_duplicated)
|
20
|
+
|
21
|
+
raise(StandardError, invoice_duplicated[:errors]) if invoice_duplicated[:errors].present?
|
22
|
+
|
23
|
+
@resource = invoice_duplicated
|
24
|
+
end
|
25
|
+
rescue Exception => error
|
26
|
+
add_error(error.message)
|
27
|
+
end
|
28
|
+
@resource
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def set_new_invoice(iugu_invoice_duplicated)
|
34
|
+
invoice_duplicated = JeraPayment::Invoice.new(@resource.attributes.except('id', 'api_id'))
|
35
|
+
|
36
|
+
invoice_duplicated.api_id = iugu_invoice_duplicated[:id]
|
37
|
+
|
38
|
+
invoice_duplicated.assign_attributes(iugu_invoice_duplicated.slice(:total_cents, :secure_url, :digitable_line,
|
39
|
+
:barcode_data, :barcode, :items, :ignore_due_email,
|
40
|
+
:ignore_canceled_email, :current_fines_option,
|
41
|
+
:keep_early_payment_discount, :due_date))
|
42
|
+
|
43
|
+
invoice_duplicated.duplicated = true
|
44
|
+
|
45
|
+
invoice_duplicated.save
|
46
|
+
|
47
|
+
invoice_duplicated
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module JeraPayment
|
2
|
+
module Services
|
3
|
+
module Iugu
|
4
|
+
module Invoices
|
5
|
+
class SendEmail < JeraPayment::Services::Iugu::Base
|
6
|
+
def call
|
7
|
+
send_email = JeraPayment::Api::Iugu::Invoice.send_email(@resource.api_id,
|
8
|
+
@resource&.sub_account&.api_token)
|
9
|
+
|
10
|
+
add_error(send_email[:errors]) if send_email[:errors].present?
|
11
|
+
|
12
|
+
@resource.errors.blank?
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module JeraPayment
|
2
|
+
module Services
|
3
|
+
module Iugu
|
4
|
+
module Invoices
|
5
|
+
class UpdateStatus < JeraPayment::Services::Iugu::Base
|
6
|
+
def initialize(resource, method)
|
7
|
+
@resource = resource
|
8
|
+
@method = method
|
9
|
+
end
|
10
|
+
|
11
|
+
def call
|
12
|
+
begin
|
13
|
+
ApplicationRecord.transaction do
|
14
|
+
status_update = eval("JeraPayment::Api::Iugu::Invoice.#{@method.to_s}(@resource.api_id,
|
15
|
+
@resource&.sub_account&.api_token)")
|
16
|
+
if status_update[:errors].present?
|
17
|
+
raise(StandardError, status_update[:errors])
|
18
|
+
else
|
19
|
+
@resource.update_columns(status: status_update[:status])
|
20
|
+
end
|
21
|
+
end
|
22
|
+
rescue Exception => error
|
23
|
+
add_error(error.message)
|
24
|
+
end
|
25
|
+
@resource
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|