jera_payment 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/Rakefile +2 -0
  4. data/app/controllers/jera_payment/callbacks_controller.rb +22 -0
  5. data/app/controllers/jera_payment/jera_payment_controller.rb +5 -0
  6. data/config/locale/jera_payment.pt-BR.yml +243 -0
  7. data/config/routes.rb +5 -0
  8. data/lib/generators/active_record/jera_payment_generator.rb +59 -0
  9. data/lib/generators/active_record/templates/create_jera_payment_charges.rb +36 -0
  10. data/lib/generators/active_record/templates/create_jera_payment_credit_cards.rb +20 -0
  11. data/lib/generators/active_record/templates/create_jera_payment_customers.rb +22 -0
  12. data/lib/generators/active_record/templates/create_jera_payment_households.rb +18 -0
  13. data/lib/generators/active_record/templates/create_jera_payment_invoices.rb +42 -0
  14. data/lib/generators/active_record/templates/create_jera_payment_plans.rb +18 -0
  15. data/lib/generators/active_record/templates/create_jera_payment_sub_accounts.rb +39 -0
  16. data/lib/generators/active_record/templates/create_jera_payment_subscriptions.rb +26 -0
  17. data/lib/generators/active_record/templates/create_jera_payment_transfers.rb +15 -0
  18. data/lib/generators/active_record/templates/create_jera_payment_withdrawals.rb +15 -0
  19. data/lib/generators/jera_payment/install_generator.rb +68 -0
  20. data/lib/generators/jera_payment/jera_payment_generator.rb +46 -0
  21. data/lib/generators/jera_payment/templates/jera_payment.rb +9 -0
  22. data/lib/jera_payment.rb +39 -0
  23. data/lib/jera_payment/api/iugu/base.rb +55 -0
  24. data/lib/jera_payment/api/iugu/charge.rb +12 -0
  25. data/lib/jera_payment/api/iugu/customer.rb +37 -0
  26. data/lib/jera_payment/api/iugu/household.rb +13 -0
  27. data/lib/jera_payment/api/iugu/invoice.rb +55 -0
  28. data/lib/jera_payment/api/iugu/payment_method.rb +39 -0
  29. data/lib/jera_payment/api/iugu/payment_token.rb +12 -0
  30. data/lib/jera_payment/api/iugu/plan.rb +42 -0
  31. data/lib/jera_payment/api/iugu/sub_account.rb +40 -0
  32. data/lib/jera_payment/api/iugu/subscription.rb +72 -0
  33. data/lib/jera_payment/api/iugu/transfer.rb +24 -0
  34. data/lib/jera_payment/api/iugu/withdrawal.rb +26 -0
  35. data/lib/jera_payment/application.rb +79 -0
  36. data/lib/jera_payment/engine.rb +5 -0
  37. data/lib/jera_payment/models/charge.rb +30 -0
  38. data/lib/jera_payment/models/concerns/household_methods.rb +33 -0
  39. data/lib/jera_payment/models/concerns/invoice_methods.rb +42 -0
  40. data/lib/jera_payment/models/concerns/resource_callbacks.rb +40 -0
  41. data/lib/jera_payment/models/concerns/sub_account_methods.rb +18 -0
  42. data/lib/jera_payment/models/concerns/subscription_methods.rb +34 -0
  43. data/lib/jera_payment/models/concerns/transfer_methods.rb +18 -0
  44. data/lib/jera_payment/models/concerns/withdrawal_methods.rb +18 -0
  45. data/lib/jera_payment/models/credit_card.rb +16 -0
  46. data/lib/jera_payment/models/customer.rb +14 -0
  47. data/lib/jera_payment/models/household.rb +51 -0
  48. data/lib/jera_payment/models/invoice.rb +49 -0
  49. data/lib/jera_payment/models/plan.rb +16 -0
  50. data/lib/jera_payment/models/sub_account.rb +53 -0
  51. data/lib/jera_payment/models/subscription.rb +29 -0
  52. data/lib/jera_payment/models/transfer.rb +20 -0
  53. data/lib/jera_payment/models/withdrawal.rb +24 -0
  54. data/lib/jera_payment/parsers/iugu/charge_parser.rb +39 -0
  55. data/lib/jera_payment/parsers/iugu/credit_card_parser.rb +31 -0
  56. data/lib/jera_payment/parsers/iugu/household_parser.rb +16 -0
  57. data/lib/jera_payment/parsers/iugu/invoice_parser.rb +31 -0
  58. data/lib/jera_payment/parsers/iugu/sub_account_parser.rb +26 -0
  59. data/lib/jera_payment/parsers/iugu/transfer_parser.rb +15 -0
  60. data/lib/jera_payment/services/iugu/base.rb +23 -0
  61. data/lib/jera_payment/services/iugu/charges/create.rb +30 -0
  62. data/lib/jera_payment/services/iugu/credit_cards/create.rb +40 -0
  63. data/lib/jera_payment/services/iugu/credit_cards/destroy.rb +23 -0
  64. data/lib/jera_payment/services/iugu/credit_cards/update.rb +19 -0
  65. data/lib/jera_payment/services/iugu/customers/create.rb +27 -0
  66. data/lib/jera_payment/services/iugu/customers/destroy.rb +22 -0
  67. data/lib/jera_payment/services/iugu/customers/update.rb +30 -0
  68. data/lib/jera_payment/services/iugu/handle_callbacks/invoice/base.rb +24 -0
  69. data/lib/jera_payment/services/iugu/handle_callbacks/invoice/created.rb +8 -0
  70. data/lib/jera_payment/services/iugu/handle_callbacks/invoice/due.rb +8 -0
  71. data/lib/jera_payment/services/iugu/handle_callbacks/invoice/dunning_action.rb +8 -0
  72. data/lib/jera_payment/services/iugu/handle_callbacks/invoice/installment_released.rb +8 -0
  73. data/lib/jera_payment/services/iugu/handle_callbacks/invoice/payment_failed.rb +8 -0
  74. data/lib/jera_payment/services/iugu/handle_callbacks/invoice/refund.rb +8 -0
  75. data/lib/jera_payment/services/iugu/handle_callbacks/invoice/released.rb +8 -0
  76. data/lib/jera_payment/services/iugu/handle_callbacks/invoice/status_changed.rb +8 -0
  77. data/lib/jera_payment/services/iugu/handle_callbacks/referrals/bank_verification.rb +39 -0
  78. data/lib/jera_payment/services/iugu/handle_callbacks/referrals/base.rb +16 -0
  79. data/lib/jera_payment/services/iugu/handle_callbacks/referrals/verification.rb +24 -0
  80. data/lib/jera_payment/services/iugu/handle_callbacks/subscription/activated.rb +12 -0
  81. data/lib/jera_payment/services/iugu/handle_callbacks/subscription/base.rb +18 -0
  82. data/lib/jera_payment/services/iugu/handle_callbacks/subscription/changed.rb +12 -0
  83. data/lib/jera_payment/services/iugu/handle_callbacks/subscription/created.rb +12 -0
  84. data/lib/jera_payment/services/iugu/handle_callbacks/subscription/expired.rb +12 -0
  85. data/lib/jera_payment/services/iugu/handle_callbacks/subscription/renewed.rb +12 -0
  86. data/lib/jera_payment/services/iugu/handle_callbacks/subscription/suspended.rb +8 -0
  87. data/lib/jera_payment/services/iugu/handle_callbacks/withdraw_request/base.rb +16 -0
  88. data/lib/jera_payment/services/iugu/handle_callbacks/withdraw_request/created.rb +8 -0
  89. data/lib/jera_payment/services/iugu/handle_callbacks/withdraw_request/status_changed.rb +20 -0
  90. data/lib/jera_payment/services/iugu/households/create.rb +19 -0
  91. data/lib/jera_payment/services/iugu/invoices/create.rb +31 -0
  92. data/lib/jera_payment/services/iugu/invoices/duplicate.rb +54 -0
  93. data/lib/jera_payment/services/iugu/invoices/send_email.rb +18 -0
  94. data/lib/jera_payment/services/iugu/invoices/update_status.rb +31 -0
  95. data/lib/jera_payment/services/iugu/plans/create.rb +26 -0
  96. data/lib/jera_payment/services/iugu/plans/destroy.rb +17 -0
  97. data/lib/jera_payment/services/iugu/plans/update.rb +18 -0
  98. data/lib/jera_payment/services/iugu/sub_accounts/create.rb +26 -0
  99. data/lib/jera_payment/services/iugu/sub_accounts/update.rb +19 -0
  100. data/lib/jera_payment/services/iugu/sub_accounts/verify.rb +38 -0
  101. data/lib/jera_payment/services/iugu/subscriptions/change_plan.rb +41 -0
  102. data/lib/jera_payment/services/iugu/subscriptions/create.rb +29 -0
  103. data/lib/jera_payment/services/iugu/subscriptions/destroy.rb +26 -0
  104. data/lib/jera_payment/services/iugu/subscriptions/update.rb +18 -0
  105. data/lib/jera_payment/services/iugu/subscriptions/update_credits.rb +37 -0
  106. data/lib/jera_payment/services/iugu/subscriptions/update_situation.rb +36 -0
  107. data/lib/jera_payment/services/iugu/transfers/create.rb +28 -0
  108. data/lib/jera_payment/services/iugu/withdrawals/create.rb +27 -0
  109. data/lib/jera_payment/version.rb +3 -0
  110. metadata +208 -0
@@ -0,0 +1,8 @@
1
+ module Iugu
2
+ module HandleCallbacks
3
+ module Invoice
4
+ class Created < Iugu::HandleCallbacks::Invoice::Base
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Iugu
2
+ module HandleCallbacks
3
+ module Invoice
4
+ class Due < Iugu::HandleCallbacks::Invoice::Base
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Iugu
2
+ module HandleCallbacks
3
+ module Invoice
4
+ class DunningAction < Iugu::HandleCallbacks::Invoice::Base
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Iugu
2
+ module HandleCallbacks
3
+ module Invoice
4
+ class InstallmentReleased < Iugu::HandleCallbacks::Invoice::Base
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Iugu
2
+ module HandleCallbacks
3
+ module Invoice
4
+ class PaymentFailed < Iugu::HandleCallbacks::Invoice::Base
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Iugu
2
+ module HandleCallbacks
3
+ module Invoice
4
+ class Refund < Iugu::HandleCallbacks::Invoice::Base
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Iugu
2
+ module HandleCallbacks
3
+ module Invoice
4
+ class Released < Iugu::HandleCallbacks::Invoice::Base
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Iugu
2
+ module HandleCallbacks
3
+ module Invoice
4
+ class StatusChanged < Iugu::HandleCallbacks::Invoice::Base
5
+ end
6
+ end
7
+ end
8
+ end
@@ -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,16 @@
1
+ module Iugu
2
+ module HandleCallbacks
3
+ module Referrals
4
+ class Base
5
+ def initialize(params)
6
+ @params = params
7
+ end
8
+
9
+ def call
10
+ Rails.logger.info("======> #{@params}")
11
+ end
12
+
13
+ end
14
+ end
15
+ end
16
+ 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,12 @@
1
+ module JeraPayment
2
+ module Services
3
+ module Iugu
4
+ module HandleCallbacks
5
+ module Subscription
6
+ class Activated < Iugu::HandleCallbacks::Subscription::Base
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,18 @@
1
+ module Iugu
2
+ module HandleCallbacks
3
+ module Subscription
4
+ class Base
5
+ def initialize(params)
6
+ @params = params
7
+ end
8
+
9
+ def call
10
+ Rails.logger.info("======> #{@params}")
11
+
12
+ return 200
13
+ end
14
+
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,12 @@
1
+ module JeraPayment
2
+ module Services
3
+ module Iugu
4
+ module HandleCallbacks
5
+ module Subscription
6
+ class Changed < Iugu::HandleCallbacks::Subscription::Base
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ module JeraPayment
2
+ module Services
3
+ module Iugu
4
+ module HandleCallbacks
5
+ module Subscription
6
+ class Created < Iugu::HandleCallbacks::Subscription::Base
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ module JeraPayment
2
+ module Services
3
+ module Iugu
4
+ module HandleCallbacks
5
+ module Subscription
6
+ class Expired < Iugu::HandleCallbacks::Subscription::Base
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ module JeraPayment
2
+ module Services
3
+ module Iugu
4
+ module HandleCallbacks
5
+ module Subscription
6
+ class Renewed < Iugu::HandleCallbacks::Subscription::Base
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,8 @@
1
+ module Iugu
2
+ module HandleCallbacks
3
+ module Subscription
4
+ class Suspended < Iugu::HandleCallbacks::Subscription::Base
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,16 @@
1
+ module Iugu
2
+ module HandleCallbacks
3
+ module WithdrawRequest
4
+ class Base
5
+ def initialize(params)
6
+ @params = params
7
+ end
8
+
9
+ def call
10
+ Rails.logger.info("======> #{@params}")
11
+ end
12
+
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,8 @@
1
+ module Iugu
2
+ module HandleCallbacks
3
+ module WithdrawRequest
4
+ class Created
5
+ end
6
+ end
7
+ end
8
+ 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