class Paysbuy

Constants

EXTERNAL_CODES
VERSION

Attributes

biz[RW]
psb_id[RW]
secure_code[RW]

Public Class Methods

new(credentials) click to toggle source
# File lib/paysbuy.rb, line 15
def initialize(credentials)
  raise ":psb_id required" unless credentials[:psb_id]
  raise ":biz required" unless credentials[:biz]
  raise ":secure_code required" unless credentials[:secure_code]

  self.psb_id = credentials[:psb_id]
  self.biz = credentials[:biz]
  self.secure_code = credentials[:secure_code]
end

Public Instance Methods

check_status(invoice_id) click to toggle source
# File lib/paysbuy.rb, line 25
def check_status(invoice_id)
  response = client.request(:get_transaction_by_invoice) do
    soap.body = api_required_options.merge(invoice: invoice_id)
  end

  ws_return = response.body[:get_transaction_by_invoice_response][:get_transaction_by_invoice_result][:get_transaction_by_invoice_return]
  result_code = ws_return[:result]
  amount = ws_return[:amt]

  status = if EXTERNAL_CODES[result_code]
    EXTERNAL_CODES[result_code]
  else
    :invalid
  end

  {status: status, amount: amount.to_d, response: prepare_response_for_serialize(ws_return)}
rescue Net::ReadTimeout, Errno::ECONNRESET, Errno::ETIMEDOUT, Wasabi::Resolver::HTTPError, Savon::SOAP::Fault
  raise Paysbuy::HttpError
end

Private Instance Methods

api_required_options() click to toggle source
# File lib/paysbuy.rb, line 51
def api_required_options
  {
    psbID: psb_id,
    biz: biz,
    secureCode: secure_code
  }
end
client() click to toggle source
# File lib/paysbuy.rb, line 47
def client
  @client ||= Savon.client("http://www.paysbuy.com/psb_ws/getTransaction.asmx?WSDL")
end
prepare_response_for_serialize(original) click to toggle source
# File lib/paysbuy.rb, line 59
def prepare_response_for_serialize(original)
  prepared = {}
  original.each { |key, value| prepared[key] = value.to_s }
  prepared
end