diff --git a/app/controllers/eis_billing/payment_status_controller.rb b/app/controllers/eis_billing/payment_status_controller.rb new file mode 100644 index 000000000..9c5d30fa8 --- /dev/null +++ b/app/controllers/eis_billing/payment_status_controller.rb @@ -0,0 +1,52 @@ +module EisBilling + class PaymentStatusController < ApplicationController + skip_authorization_check # Temporary solution + skip_before_action :verify_authenticity_token # Temporary solution + + TYPE = "PaymentOrders::EveryPay".freeze + + def update + invoice_number = params[:order_reference] + paid_at = params[:transaction_time] + sum = params[:standing_amount] + everypay_response = params + payment_status = nil + + if PaymentOrders::EveryPay::SUCCESSFUL_PAYMENT.include? params[:payment_state] + payment_status = :paid + elsif params[:payment_state] == 'failed' + payment_status = :failed + end + + invoice = Invoice.find_by(number: invoice_number) + + bank = BankTransaction.new + bank.description = invoice.order + bank.reference_no = invoice.reference_no + bank.currency = invoice.currency + bank.iban = invoice.seller_iban + bank.sum = sum + bank.paid_at = paid_at + bank.buyer_name = invoice.buyer_name + bank.save + + p "++++ BANK TRANSACTION ERRORS ? ++++" + p bank.errors + + payment = PaymentOrder.new + payment.type = TYPE + payment.invoice = invoice + payment.response = everypay_response + payment.status = payment_status + payment.save + + p "++++ PAYMENT ORDER ERRORS ? ++++" + p bank.errors + + registrar = Registrar.find_by(reference_no: params[:reference_number]) + bank.create_activity(registrar, invoice) + + render status: 200, json: { status: 'ok' } + end + end +end diff --git a/config/routes.rb b/config/routes.rb index 4ba44300d..5a3cff4a2 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -11,6 +11,10 @@ Rails.application.routes.draw do mount PgHero::Engine, at: "pghero" end + namespace :eis_billing do + put '/payment_status', to: 'payment_status#update', as: 'payment_status' + end + namespace :epp do constraints(EppConstraint.new(:session)) do get 'session/hello', to: 'sessions#hello', as: 'hello'