class GpWebpay::Ws::BaseSignedRequest
Constants
- DEFAULT_ATTRIBUTES
- OPERATION_NAME
- REQUEST_NAME
- RESPONSE_ENTITY_NAME
- RESPONSE_NAME
- SERVICE_EXCEPTION
Attributes
attributes[R]
config[R]
Public Class Methods
new(attributes, merchant_number: :default)
click to toggle source
Calls superclass method
GpWebpay::Service::new
# File lib/gp_webpay/ws/base_signed_request.rb, line 28 def initialize(attributes, merchant_number: :default) @attributes = attributes @merchant_number = merchant_number @config = GpWebpay.config[@merchant_number] || GpWebpay.config.default super() end
Public Instance Methods
call()
click to toggle source
# File lib/gp_webpay/ws/base_signed_request.rb, line 35 def call attrs = WsRequest.new(final_attributes).to_gpwebpay Rails.logger.debug([self.class::OPERATION_NAME, { message: { self.class::REQUEST_NAME => attributes_with_signature(attrs) } }]) res = client.call(self.class::OPERATION_NAME, { message: { self.class::REQUEST_NAME => attributes_with_signature(attrs) } }) WsResponse.from_success(res.body, self.class::RESPONSE_NAME, self.class::RESPONSE_ENTITY_NAME, config.merchant_number) rescue Savon::HTTPError => e rescue_from_http(e) rescue Savon::SOAPFault => e rescue_from_soap(e) end
Protected Instance Methods
attributes_with_signature(attrs)
click to toggle source
# File lib/gp_webpay/ws/base_signed_request.rb, line 59 def attributes_with_signature(attrs) digest = OpensslSecurity.generate_digest(config, digest_text(attrs)) attrs.merge('ins0:signature' => digest) end
client()
click to toggle source
# File lib/gp_webpay/ws/base_signed_request.rb, line 64 def client @client ||= Savon.client(wsdl: config.wsdl_file, endpoint: config.ws_url, pretty_print_xml: true, open_timeout: 300, read_timeout: 300) end
digest_text(attrs)
click to toggle source
# File lib/gp_webpay/ws/base_signed_request.rb, line 55 def digest_text(attrs) attrs.values.join('|') end
final_attributes()
click to toggle source
# File lib/gp_webpay/ws/base_signed_request.rb, line 49 def final_attributes {}.merge(self.class::DEFAULT_ATTRIBUTES, attributes, { provider: config.provider, merchant_number: config.merchant_number }) end
rescue_from_http(error)
click to toggle source
# File lib/gp_webpay/ws/base_signed_request.rb, line 72 def rescue_from_http(error) WsResponse.from_http_error(error.to_hash, config.merchant_number) end
rescue_from_soap(error)
click to toggle source
# File lib/gp_webpay/ws/base_signed_request.rb, line 76 def rescue_from_soap(error) WsResponse.from_fault_error(error.to_hash, self.class::SERVICE_EXCEPTION, config.merchant_number) end