Class: ActiveMerchant::Billing::MerchantWareVersionFourGateway

Inherits:
Gateway
  • Object
show all
Defined in:
lib/active_merchant/billing/gateways/merchant_ware_version_four.rb

Constant Summary collapse

ENV_NAMESPACES =
{ 'xmlns:xsi'  => 'http://www.w3.org/2001/XMLSchema-instance',
'xmlns:xsd'  => 'http://www.w3.org/2001/XMLSchema',
'xmlns:soap' => 'http://schemas.xmlsoap.org/soap/envelope/' }
TX_NAMESPACE =
'http://schemas.merchantwarehouse.com/merchantware/40/Credit/'
ACTIONS =
{
  purchase: 'SaleKeyed',
  reference_purchase: 'RepeatSale',
  authorize: 'PreAuthorizationKeyed',
  capture: 'PostAuthorization',
  void: 'Void',
  refund: 'Refund'
}

Constants inherited from Gateway

Gateway::CREDIT_DEPRECATION_MESSAGE, Gateway::RECURRING_DEPRECATION_MESSAGE, Gateway::STANDARD_ERROR_CODE

Instance Attribute Summary

Attributes inherited from Gateway

#options

Instance Method Summary collapse

Methods inherited from Gateway

#add_field_to_post_if_present, #add_fields_to_post_if_present, #card_brand, card_brand, #generate_unique_id, inherited, #supported_countries, supported_countries, supported_countries=, supports?, #supports_network_tokenization?, #test?

Methods included from CreditCardFormatting

#expdate, #format

Methods included from PostsData

included, #raw_ssl_request, #ssl_get, #ssl_post, #ssl_request

Constructor Details

#initialize(options = {}) ⇒ MerchantWareVersionFourGateway

Creates a new MerchantWareVersionFourGateway

The gateway requires that a valid login, password, and name be passed in the options hash.

Options

  • :login - The MerchantWARE SiteID.

  • :password - The MerchantWARE Key.

  • :name - The MerchantWARE Name.



37
38
39
40
# File 'lib/active_merchant/billing/gateways/merchant_ware_version_four.rb', line 37

def initialize(options = {})
  requires!(options, :login, :password, :name)
  super
end

Instance Method Details

#authorize(money, credit_card, options = {}) ⇒ Object

Authorize a credit card for a given amount.

Parameters

  • money - The amount to be authorized as an Integer value in cents.

  • credit_card - The CreditCard details for the transaction.

  • options

    • :order_id - A unique reference for this order (required).

    • :billing_address - The billing address for the cardholder.



50
51
52
53
# File 'lib/active_merchant/billing/gateways/merchant_ware_version_four.rb', line 50

def authorize(money, credit_card, options = {})
  request = build_purchase_request(:authorize, money, credit_card, options)
  commit(:authorize, request)
end

#capture(money, authorization, options = {}) ⇒ Object

Capture authorized funds from a credit card.

Parameters

  • money - The amount to be captured as anInteger value in cents.

  • authorization - The authorization string returned from the initial authorization.



74
75
76
77
# File 'lib/active_merchant/billing/gateways/merchant_ware_version_four.rb', line 74

def capture(money, authorization, options = {})
  request = build_capture_request(:capture, money, authorization, options)
  commit(:capture, request)
end

#purchase(money, payment_source, options = {}) ⇒ Object

Authorize and immediately capture funds from a credit card.

Parameters

  • money - The amount to be authorized as anInteger value in cents.

  • payment_source - The CreditCard details or ‘token’ from prior transaction

  • options

    • :order_id - A unique reference for this order (required).

    • :billing_address - The billing address for the cardholder.



63
64
65
66
67
# File 'lib/active_merchant/billing/gateways/merchant_ware_version_four.rb', line 63

def purchase(money, payment_source, options = {})
  action = payment_source.is_a?(String) ? :reference_purchase : :purchase
  request = build_purchase_request(action, money, payment_source, options)
  commit(action, request)
end

#refund(money, identification, options = {}) ⇒ Object

Refund an amount back a cardholder

Parameters

  • money - The amount to be refunded as an Integer value in cents.

  • identification - The credit card you want to refund or the authorization for the existing transaction you are refunding.

  • options

    • :order_id - A unique reference for this order (required when performing a non-referenced credit)



99
100
101
102
103
104
105
106
107
108
109
# File 'lib/active_merchant/billing/gateways/merchant_ware_version_four.rb', line 99

def refund(money, identification, options = {})
  reference, options[:order_id] = split_reference(identification)

  request = soap_request(:refund) do |xml|
    add_reference_token(xml, reference)
    add_invoice(xml, options)
    add_amount(xml, money, 'overrideAmount')
  end

  commit(:refund, request)
end

#scrub(transcript) ⇒ Object



122
123
124
125
126
127
# File 'lib/active_merchant/billing/gateways/merchant_ware_version_four.rb', line 122

def scrub(transcript)
  transcript.
    gsub(%r((<merchantKey>).+?(</merchantKey>))i, '\1[FILTERED]\2').
    gsub(%r((<cardNumber>).+?(</cardNumber>))i, '\1[FILTERED]\2').
    gsub(%r((<cardSecurityCode>).+?(</cardSecurityCode>))i, '\1[FILTERED]\2')
end

#supports_scrubbing?Boolean

Returns:

  • (Boolean)


118
119
120
# File 'lib/active_merchant/billing/gateways/merchant_ware_version_four.rb', line 118

def supports_scrubbing?
  true
end

#verify(credit_card, options = {}) ⇒ Object



111
112
113
114
115
116
# File 'lib/active_merchant/billing/gateways/merchant_ware_version_four.rb', line 111

def verify(credit_card, options = {})
  MultiResponse.run(:use_first_response) do |r|
    r.process { authorize(100, credit_card, options) }
    r.process(:ignore_result) { void(r.authorization, options) }
  end
end

#void(authorization, options = {}) ⇒ Object

Void a transaction.

Parameters

  • authorization - The authorization string returned from the initial authorization or purchase.



83
84
85
86
87
88
89
# File 'lib/active_merchant/billing/gateways/merchant_ware_version_four.rb', line 83

def void(authorization, options = {})
  reference, options[:order_id] = split_reference(authorization)
  request = soap_request(:void) do |xml|
    add_reference_token(xml, reference)
  end
  commit(:void, request)
end