module Goldenpay::Request
Public Class Methods
generate_options(options = {})
click to toggle source
# File lib/goldenpay/request.rb, line 77 def self.generate_options(options = {}) auth_key = Goldenpay.auth_key merchant_name = Goldenpay.merchant_name card_type = options.fetch :card_type lang = options.fetch :lang amount = options.fetch :amount description = options.fetch :description hash_code = Digest::MD5.hexdigest(auth_key + merchant_name + card_type + amount + description) GoldenpayOptions.new(merchant_name, card_type, hash_code, lang, amount, description) rescue KeyError => e e.message end
get_payment_key(options)
click to toggle source
# File lib/goldenpay/request.rb, line 39 def self.get_payment_key(options) uri = URI(Goldenpay.payment_key_url) # Create client http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_PEER dict = { "merchantName": options.merchant_name, "cardType": options.card_type, "hashCode": options.hash_code, "lang": options.lang, "amount": options.amount, "description": options.description } body = JSON.dump(dict) # Create Request req = Net::HTTP::Post.new(uri) req.add_field "Content-Type", "application/json" req.add_field "Accept", "application/json" req.body = body # Fetch Request res = http.request(req) parsed_res = JSON.parse(res.body) if parsed_res["status"]["code"] == 1 parsed_res["paymentKey"] else raise GoldenpayResponseError, "Goldenpay responded with: #{parsed_res["status"]["code"]} | #{parsed_res["status"]["message"]}" end rescue StandardError => e raise HTTPResponseError, "Goldenpay request failed: #{res.code}" end
get_results(payment_key)
click to toggle source
# File lib/goldenpay/request.rb, line 8 def self.get_results(payment_key) auth_key = Goldenpay.auth_key hash_code = Digest::MD5.hexdigest(auth_key + payment_key) uri = URI(Goldenpay.payment_result_url + '?payment_key=' + payment_key + '&hash_code=' + hash_code) # Create client http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_PEER # Create Request req = Net::HTTP::Post.new(uri) req.add_field "Content-Type", "application/json" req.add_field "Accept", "application/json" # Fetch Request res = http.request(req) parsed_res = JSON.parse(res.body) if parsed_res["status"]["code"] == 1 parsed_res else raise GoldenpayResponseError, "Goldenpay responded with: #{parsed_res["status"]["code"]} | #{parsed_res["status"]["message"]}" end rescue StandardError => e raise HTTPResponseError, "Goldenpay request failed: #{res.code}" end