add auditing for qrpay gateway
This commit is contained in:
@@ -241,6 +241,17 @@ class Foodcourt::QrpayController < BaseFoodcourtController
|
|||||||
|
|
||||||
PrintReceiptJob.perform_later(current_shop.shop_code, sale_id)
|
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]
|
if result[:status]
|
||||||
render json: result, status: :ok
|
render json: result, status: :ok
|
||||||
else
|
else
|
||||||
|
|||||||
17
app/jobs/payment_gateway_audit_job.rb
Normal file
17
app/jobs/payment_gateway_audit_job.rb
Normal 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
|
||||||
24
app/models/payment_gateway_audit.rb
Normal file
24
app/models/payment_gateway_audit.rb
Normal 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
|
||||||
@@ -16,6 +16,19 @@ class KbzMerchant
|
|||||||
api_url = "#{@url}/precreate"
|
api_url = "#{@url}/precreate"
|
||||||
payload = build_create_payload(amount, merch_order_id, timeout)
|
payload = build_create_payload(amount, merch_order_id, timeout)
|
||||||
response = send_request(payload, api_url)
|
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)
|
handle_response(response)
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -23,6 +36,19 @@ class KbzMerchant
|
|||||||
api_url = "#{@url}/closeorder"
|
api_url = "#{@url}/closeorder"
|
||||||
payload = build_close_payload(merch_order_id)
|
payload = build_close_payload(merch_order_id)
|
||||||
response = send_request(payload, api_url)
|
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)
|
handle_response(response)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
17
db/migrate/20250609101022_payment_gateway_audits.rb
Normal file
17
db/migrate/20250609101022_payment_gateway_audits.rb
Normal 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
|
||||||
Reference in New Issue
Block a user