class GpWebpay::Http::BaseSignedRequest

Attributes

attributes[R]
config[R]
locale[R]
operation[R]
url_attributes[R]

Public Class Methods

new(attributes, locale, operation, merchant_number: :default, url_attributes: {}) click to toggle source
Calls superclass method
# File lib/gp_webpay/http/base_signed_request.rb, line 19
def initialize(attributes, locale, operation, merchant_number: :default, url_attributes: {})
  super()
  @attributes = attributes
  @locale = locale
  @merchant_number = merchant_number
  @operation = operation
  @url_attributes = url_attributes
  @config = GpWebpay.config[@merchant_number] || GpWebpay.config.default
end

Public Instance Methods

call() click to toggle source
# File lib/gp_webpay/http/base_signed_request.rb, line 29
def call
  request = HttpRequest.new(
    attributes.merge(
      merchant_number: @config.merchant_number,
      operation: operation,
      url: callback_url
    )
  ).to_gpwebpay

  attrs_with_digest = payment_attributes_with_digest(request)
  uri = URI(@config.http_url)

  ExternalUrl.new(
    url: uri.to_s,
    full_url: build_full_url(uri, attrs_with_digest),
    params: attrs_with_digest
  )
end
callback_url() click to toggle source
# File lib/gp_webpay/http/base_signed_request.rb, line 48
def callback_url
  raise NotImplementedError
end

Private Instance Methods

build_full_url(uri, attrs) click to toggle source
# File lib/gp_webpay/http/base_signed_request.rb, line 54
def build_full_url(uri, attrs)
  uri.query = URI.encode_www_form(attrs)
  uri.to_s
end
digest_text(attrs) click to toggle source
# File lib/gp_webpay/http/base_signed_request.rb, line 59
def digest_text(attrs)
  attrs.values.join('|')
end
payment_attributes_with_digest(attrs) click to toggle source
# File lib/gp_webpay/http/base_signed_request.rb, line 63
def payment_attributes_with_digest(attrs)
  digest = OpensslSecurity.generate_digest(@config, digest_text(attrs))
  attrs.merge(
    'DIGEST' => digest,
    'LANG' => locale
  )
end