jera_payment 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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