- make second display to be responsive
This commit is contained in:
aungthetkhaing
2025-05-26 18:07:55 +06:30
parent da6a80a9bb
commit 613cb3a0cb
6 changed files with 320 additions and 83 deletions

View File

@@ -132,22 +132,68 @@ class KbzMerchant
)
puts "Response: #{response}"
response.body
# puts "Response: #{response}"
JSON.parse(response.body)
rescue HTTParty::Error => e
raise PaymentError, "HTTP error: #{e.message}"
{
error: true,
code: 'http_error',
message: "HTTP error: #{e.message}",
alert: "Payment service unavailable. Please try again later."
}
rescue SocketError => e
raise PaymentError, "Network error: #{e.message}"
{
error: true,
code: 'network_error',
message: "Network error: #{e.message}",
alert: "Network connection failed. Please check your internet."
}
rescue JSON::ParserError => e
{
error: true,
code: 'invalid_response',
message: "Invalid response format: #{e.message}",
alert: "Received invalid payment response. Please contact support."
}
rescue StandardError => e
{
error: true,
code: 'unexpected_error',
message: "Unexpected error: #{e.message}",
alert: "An unexpected error occurred. Please try again."
}
end
end
def handle_response(response)
json_response = JSON.parse(response)
if json_response.dig('Response', 'result') == 'SUCCESS'
json_response['Response']
if response['error']
{
status: 'error',
code: response['code'],
message: response['message']
}
elsif response.dig('Response', 'result') == 'SUCCESS'
{
status: 'success',
data: response['Response']
}
else
raise PaymentError, "Payment failed: #{json_response['Response']['msg']}"
error_code = response.dig('Response', 'code')
error_message = response.dig('Response', 'msg')
case error_code
when 'OrderCenter.FAILED_CREATE_ORDER_FOR_DUPLICATED_MERCHANT_ORDER_ID'
{
status: 'failed',
code: error_code,
message: 'Duplicate order ID detected. Please use a unique reference ID.'
}
else
{
status: 'failed',
code: error_code || 'unknown_error',
message: error_message || 'Payment processing failed'
}
end
end
end
end