add auditing for qrpay gateway

This commit is contained in:
Dev Team
2025-06-18 16:23:34 +06:30
parent 46ab479c86
commit 5bb7fa807d
5 changed files with 95 additions and 0 deletions

View File

@@ -241,6 +241,17 @@ class Foodcourt::QrpayController < BaseFoodcourtController
PrintReceiptJob.perform_later(current_shop.shop_code, sale_id)
PaymentGatewayAuditJob.perform_later({
receipt_no: Sale.find_by(sale_id: sale_id).receipt_no,
gateway_name: "MMQR",
endpoint_url: "",
event_type: "kbz.payment.success",
request_body: {},
response_body: {},
request_method: nil,
shop_code: Shop.current_shop.shop_code
})
if result[:status]
render json: result, status: :ok
else

View File

@@ -0,0 +1,17 @@
class PaymentGatewayAuditJob < ApplicationJob
queue_as :high_priority
def perform(data)
# byebug
PaymentGatewayAudit.record(
receipt_no: data[:receipt_no],
gateway_name: "MMQR",
endpoint_url: data[:endpoint_url],
event_type: data[:event_type],
request_body: data[:request_body],
response_body: data[:response_body],
request_method: "POST",
shop_code: data[:shop_code],
)
end
end

View File

@@ -0,0 +1,24 @@
class PaymentGatewayAudit < ApplicationRecord
def self.record(
receipt_no:,
gateway_name:,
request_method: nil,
endpoint_url:,
event_type:,
request_body: {},
response_body: {},
shop_code:
)
payment_gateway_audit = PaymentGatewayAudit.new
payment_gateway_audit.receipt_no = receipt_no
payment_gateway_audit.payment_gateway_name = gateway_name
payment_gateway_audit.event_type = event_type
payment_gateway_audit.request_method = request_method
payment_gateway_audit.endpoint_url = endpoint_url
payment_gateway_audit.request_body = request_body
payment_gateway_audit.response_body = response_body
payment_gateway_audit.shop_code = shop_code
payment_gateway_audit.save!
end
end

View File

@@ -16,6 +16,19 @@ class KbzMerchant
api_url = "#{@url}/precreate"
payload = build_create_payload(amount, merch_order_id, timeout)
response = send_request(payload, api_url)
# audit
PaymentGatewayAuditJob.perform_later({
receipt_no: merch_order_id,
gateway_name: "MMQR",
endpoint_url: api_url,
event_type: "kbz.payment.precreate",
request_body: payload,
response_body: response,
request_method: "POST",
shop_code: Shop.current_shop.shop_code
})
handle_response(response)
end
@@ -23,6 +36,19 @@ class KbzMerchant
api_url = "#{@url}/closeorder"
payload = build_close_payload(merch_order_id)
response = send_request(payload, api_url)
# audit
PaymentGatewayAuditJob.perform_later({
receipt_no: merch_order_id,
gateway_name: "MMQR",
endpoint_url: api_url,
event_type: "kbz.payment.closeorder",
request_body: payload,
response_body: response,
request_method: "POST",
shop_code: Shop.current_shop.shop_code
})
handle_response(response)
end

View File

@@ -0,0 +1,17 @@
class PaymentGatewayAudits < ActiveRecord::Migration[5.1]
def change
create_table :payment_gateway_audits do |t|
t.string :receipt_no
t.string :payment_gateway_name
t.string :request_method
t.string :event_type
t.string :endpoint_url
t.json :request_body
t.json :response_body
t.timestamps
t.string :shop_code
end
end
end