55 lines
1.8 KiB
Ruby
55 lines
1.8 KiB
Ruby
class KbzPay
|
|
|
|
def self.pay(amount, receipt_no)
|
|
|
|
datetime = DateTime.now.strftime("%d%m%Y%H%M")
|
|
kbz_app_id = "kp1e78f7efddca190042638341afb88d"
|
|
kbz_merch_code = "200004"
|
|
kbz_method = 'kbz.payment.precreate'
|
|
kbz_trade_type = "PAY_BY_QRCODE"
|
|
kbz_api_key = "code2lab123456"
|
|
kbz_version = "1.0"
|
|
kbz_provider_url = "http://api.kbzpay.com/payment/gateway/uat/precreate"
|
|
kbz_currency = "MMK"
|
|
kbz_callback_url = "https://staging-v2.doemal.com/api/v3/ordering/kbz_callback"
|
|
nounce_str = SecureRandom.base64(32).first(32).upcase
|
|
|
|
params = "appid="+kbz_app_id+"&merch_code="+kbz_merch_code+"&merch_order_id="+receipt_no.to_s+"&method="+kbz_method+"&nonce_str="+nounce_str.to_s+"¬ify_url="+ kbz_callback_url + "×tamp="+datetime+"&total_amount="+amount.to_s+"&trade_type="+kbz_trade_type+"&trans_currency="+ kbz_currency+"&version="+kbz_version+"&key="+kbz_api_key
|
|
|
|
Rails.logger.info params
|
|
sign = Digest::SHA256.hexdigest(params)
|
|
str = {"timestamp": datetime,
|
|
"method": kbz_method,
|
|
"notify_url": kbz_callback_url,
|
|
"nonce_str": nounce_str.to_s,
|
|
"sign_type": "SHA256",
|
|
"sign": sign,
|
|
"version": kbz_version,
|
|
"biz_content": {
|
|
"merch_order_id": receipt_no,
|
|
"merch_code": kbz_merch_code,
|
|
"appid": kbz_app_id,
|
|
"trade_type": kbz_trade_type,
|
|
"total_amount": amount.to_s,
|
|
"trans_currency": kbz_currency
|
|
}
|
|
}
|
|
|
|
result = HTTParty.post(kbz_provider_url,
|
|
:body => { :Request => str}.to_json,
|
|
:headers => { 'Content-Type' => 'application/json', 'Accept' => 'application/json' }
|
|
)
|
|
Rails.logger.info result
|
|
if result['Response']['result'] == "SUCCESS"
|
|
#TODO QR return
|
|
qr = result['Response']['qrCode']
|
|
return true, qr
|
|
else
|
|
return false, result['Response']
|
|
puts result['Response']
|
|
end
|
|
|
|
end
|
|
|
|
end
|