diff --git a/app/controllers/eis_billing/base_controller.rb b/app/controllers/eis_billing/base_controller.rb new file mode 100644 index 000000000..213806ce1 --- /dev/null +++ b/app/controllers/eis_billing/base_controller.rb @@ -0,0 +1,12 @@ +module EisBilling + class BaseController < ApplicationController + skip_authorization_check # Temporary solution + skip_before_action :verify_authenticity_token # Temporary solution + end + + protected + + def logger + @logger ||= Rails.logger + end +end diff --git a/app/controllers/eis_billing/lhv_connect_transactions_controller.rb b/app/controllers/eis_billing/lhv_connect_transactions_controller.rb new file mode 100644 index 000000000..321191bf8 --- /dev/null +++ b/app/controllers/eis_billing/lhv_connect_transactions_controller.rb @@ -0,0 +1,39 @@ +module EisBilling + class LhvConnectTransactionsController < EisBilling::BaseController + def create + params["_json"].each do |incoming_transaction| + process_transactions(incoming_transaction["table"]) + end + + render status: 200, json: { message: 'RECEIVED', status: :ok, params: params } + end + + private + + def process_transactions(incoming_transaction) + logger.info 'Got incoming transactions' + logger.info incoming_transaction + + bank_statement = BankStatement.new(bank_code: Setting.registry_bank_code, + iban: Setting.registry_iban) + + ActiveRecord::Base.transaction do + bank_statement.save! + + transaction_attributes = { sum: incoming_transaction["amount"], + currency: incoming_transaction["currency"], + paid_at: incoming_transaction["date"], + reference_no: incoming_transaction["payment_reference_number"], + description: incoming_transaction["payment_description"] } + transaction = bank_statement.bank_transactions.create!(transaction_attributes) + + next if transaction.registrar.blank? + + unless transaction.non_canceled? + Invoice.create_from_transaction!(transaction) unless transaction.autobindable? + transaction.autobind_invoice + end + end + end + end +end diff --git a/app/controllers/eis_billing/payment_status_controller.rb b/app/controllers/eis_billing/payment_status_controller.rb index c4df90c5c..6f16dcb2d 100644 --- a/app/controllers/eis_billing/payment_status_controller.rb +++ b/app/controllers/eis_billing/payment_status_controller.rb @@ -1,8 +1,5 @@ module EisBilling - class PaymentStatusController < ApplicationController - skip_authorization_check # Temporary solution - skip_before_action :verify_authenticity_token # Temporary solution - + class PaymentStatusController < EisBilling::BaseController TYPE = 'PaymentOrders::EveryPay'.freeze def update @@ -62,9 +59,5 @@ module EisBilling bank end - - def logger - @logger ||= Rails.logger - end end end diff --git a/config/routes.rb b/config/routes.rb index 5a3cff4a2..68be463f5 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -13,6 +13,7 @@ Rails.application.routes.draw do namespace :eis_billing do put '/payment_status', to: 'payment_status#update', as: 'payment_status' + post '/lhv_connect_transactions', to: 'lhv_connect_transactions#create', as: 'lhv_connect_transactions' end namespace :epp do