mirror of
https://github.com/internetee/registry.git
synced 2025-07-29 22:16:19 +02:00
63 lines
1.7 KiB
Ruby
63 lines
1.7 KiB
Ruby
module EisBilling
|
|
class PaymentStatusController < EisBilling::BaseController
|
|
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 = define_payment_status(params[:payment_state])
|
|
|
|
invoice = Invoice.find_by(number: invoice_number)
|
|
|
|
bank = create_bank_transfer(invoice: invoice, sum: sum, paid_at: paid_at)
|
|
create_payment_order(invoice: invoice, everypay_response: everypay_response, payment_status: payment_status)
|
|
|
|
registrar = invoice.buyer
|
|
bank.create_activity(registrar, invoice)
|
|
|
|
render status: 200, json: { status: :ok }
|
|
end
|
|
|
|
private
|
|
|
|
def define_payment_status(status)
|
|
return :paid if PaymentOrders::EveryPay::SUCCESSFUL_PAYMENT.include? status
|
|
|
|
:failed
|
|
end
|
|
|
|
def create_payment_order(invoice:, everypay_response:, payment_status:)
|
|
payment = PaymentOrder.new
|
|
payment.type = TYPE
|
|
payment.invoice = invoice
|
|
payment.response = everypay_response
|
|
payment.status = payment_status
|
|
payment.save
|
|
|
|
logger.info '++++ PAYMENT ORDER ERRORS ? ++++'
|
|
logger.info payment.errors
|
|
|
|
payment
|
|
end
|
|
|
|
def create_bank_transfer(invoice:, sum:, paid_at:)
|
|
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
|
|
|
|
logger.info '++++ BANK TRANSACTION ERRORS ? ++++'
|
|
logger.info bank.errors
|
|
|
|
bank
|
|
end
|
|
end
|
|
end
|