class Privatbank::P24::PaymentStatus

Public Class Methods

new(payment_id, ref, options={}) click to toggle source
# File lib/privatbank/p24/payment_status.rb, line 14
def initialize payment_id, ref, options={}
  @payment_id        = payment_id
  @ref               = ref
  @merchant_id       = options[:merchant_id]
  @merchant_password = options[:merchant_password]
end

Public Instance Methods

outgoing_xml() click to toggle source
# File lib/privatbank/p24/payment_status.rb, line 27
def outgoing_xml
  builder = Builder::XmlMarkup.new
  builder.instruct!
  builder.request(version: '1.0') do |req|
    req.merchant do |merch|
      merch.id(@merchant_id)
      merch.signature(signature)
    end
    req.data do |d|
      d.oper('cmt')
      d.wait(0)
      d.test(0)
      d.payment(id: @payment_id) do |p|
        p.prop(name: 'id',   value: @payment_id)
        p.prop(name: 'ref',   value: @ref)
      end
    end
  end
  builder.target!
end
request() click to toggle source
# File lib/privatbank/p24/payment_status.rb, line 21
def request
  response = self.class.post('/p24api/check_pay', body: outgoing_xml)
  return 'error' if response.fetch('error', nil)
  response['response']['data']
end
request_xml_data() click to toggle source
# File lib/privatbank/p24/payment_status.rb, line 48
def request_xml_data
  builder = Builder::XmlMarkup.new
  builder.oper('cmt')
  builder.wait(0)
  builder.test(0)
  builder.payment(id: @payment_id) do |p|
    p.prop(name: 'id',   value: @payment_id)
    p.prop(name: 'ref',   value: @ref)
  end
  builder.target!
end
signature() click to toggle source
# File lib/privatbank/p24/payment_status.rb, line 60
def signature
  Privatbank::Signature.generate(request_xml_data, @merchant_password)
end