Class: ActiveMerchant::Billing::PayHubGateway

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

Constant Summary collapse

CVV_CODE_TRANSLATOR =
{
  'M' => 'CVV matches',
  'N' => 'CVV does not match',
  'P' => 'CVV not processed',
  'S' => 'CVV should have been present',
  'U' => 'CVV request unable to be processed by issuer'
}
AVS_CODE_TRANSLATOR =
{
  '0' =>  'Approved, Address verification was not requested.',
  'A' =>  'Approved, Address matches only.',
  'B' =>  'Address Match. Street Address math for international transaction Postal Code not verified because of incompatible formats (Acquirer sent both street address and Postal Code)',
  'C' =>  'Serv Unavailable. Street address and Postal Code not verified for international transaction because of incompatible formats (Acquirer sent both street and Postal Code).',
  'D' =>  'Exact Match, Street Address and Postal Code match for international transaction.',
  'F' =>  'Exact Match, Street Address and Postal Code match. Applies to UK only.',
  'G' =>  'Ver Unavailable, Non-U.S. Issuer does not participate.',
  'I' =>  'Ver Unavailable, Address information not verified for international transaction',
  'M' =>  'Exact Match, Street Address and Postal Code match for international transaction',
  'N' =>  'No - Address and ZIP Code does not match',
  'P' =>  'Zip Match, Postal Codes match for international transaction Street address not verified because of incompatible formats (Acquirer sent both street address and Postal Code).',
  'R' =>  'Retry - Issuer system unavailable',
  'S' =>  'Serv Unavailable, Service not supported',
  'U' =>  'Ver Unavailable, Address unavailable.',
  'W' =>  'ZIP match - Nine character numeric ZIP match only.',
  'X' =>  'Exact match, Address and nine-character ZIP match.',
  'Y' =>  'Exact Match, Address and five character ZIP match.',
  'Z' =>  'Zip Match, Five character numeric ZIP match only.',
  '1' =>  'Cardholder name and ZIP match AMEX only.',
  '2' =>  'Cardholder name, address, and ZIP match AMEX only.',
  '3' =>  'Cardholder name and address match AMEX only.',
  '4' =>  'Cardholder name match AMEX only.',
  '5' =>  'Cardholder name incorrect, ZIP match AMEX only.',
  '6' =>  'Cardholder name incorrect, address and ZIP match AMEX only.',
  '7' =>  'Cardholder name incorrect, address match AMEX only.',
  '8' =>  'Cardholder, all do not match AMEX only.'
}
STANDARD_ERROR_CODE_MAPPING =
{
  '14' => STANDARD_ERROR_CODE[:invalid_number],
  '80' => STANDARD_ERROR_CODE[:invalid_expiry_date],
  '82' => STANDARD_ERROR_CODE[:invalid_cvc],
  '54' => STANDARD_ERROR_CODE[:expired_card],
  '51' => STANDARD_ERROR_CODE[:card_declined],
  '05' => STANDARD_ERROR_CODE[:card_declined],
  '61' => STANDARD_ERROR_CODE[:card_declined],
  '62' => STANDARD_ERROR_CODE[:card_declined],
  '65' => STANDARD_ERROR_CODE[:card_declined],
  '93' => STANDARD_ERROR_CODE[:card_declined],
  '01' => STANDARD_ERROR_CODE[:call_issuer],
  '02' => STANDARD_ERROR_CODE[:call_issuer],
  '04' => STANDARD_ERROR_CODE[:pickup_card],
  '07' => STANDARD_ERROR_CODE[:pickup_card],
  '41' => STANDARD_ERROR_CODE[:pickup_card],
  '43' => STANDARD_ERROR_CODE[:pickup_card]
}

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, #scrub, #supported_countries, supported_countries, supported_countries=, supports?, #supports_network_tokenization?, #supports_scrubbing?, #test?

Methods included from CreditCardFormatting

#expdate, #format, #strftime_yyyymm

Methods included from PostsData

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

Constructor Details

#initialize(options = {}) ⇒ PayHubGateway

Returns a new instance of PayHubGateway.



69
70
71
72
73
# File 'lib/active_merchant/billing/gateways/pay_hub.rb', line 69

def initialize(options = {})
  requires!(options, :orgid, :username, :password, :tid)

  super
end

Instance Method Details

#authorize(amount, creditcard, options = {}) ⇒ Object



75
76
77
78
79
80
81
82
83
# File 'lib/active_merchant/billing/gateways/pay_hub.rb', line 75

def authorize(amount, creditcard, options = {})
  post = setup_post('auth')
  add_creditcard(post, creditcard)
  add_amount(post, amount)
  add_address(post, (options[:address] || options[:billing_address]))
  add_customer_data(post, options)

  commit(post)
end

#capture(amount, trans_id, options = {}) ⇒ Object



107
108
109
110
111
112
113
114
# File 'lib/active_merchant/billing/gateways/pay_hub.rb', line 107

def capture(amount, trans_id, options = {})
  post = setup_post('capture')

  add_reference(post, trans_id)
  add_amount(post, amount)

  commit(post)
end

#purchase(amount, creditcard, options = {}) ⇒ Object



85
86
87
88
89
90
91
92
93
# File 'lib/active_merchant/billing/gateways/pay_hub.rb', line 85

def purchase(amount, creditcard, options = {})
  post = setup_post('sale')
  add_creditcard(post, creditcard)
  add_amount(post, amount)
  add_address(post, (options[:address] || options[:billing_address]))
  add_customer_data(post, options)

  commit(post)
end

#refund(amount, trans_id, options = {}) ⇒ Object



95
96
97
98
99
100
101
102
103
104
105
# File 'lib/active_merchant/billing/gateways/pay_hub.rb', line 95

def refund(amount, trans_id, options = {})
  # Attempt a void in case the transaction is unsettled
  post = setup_post('void')
  add_reference(post, trans_id)
  response = commit(post)
  return response if response.success?

  post = setup_post('refund')
  add_reference(post, trans_id)
  commit(post)
end

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

No void, as PayHub’s void does not work on authorizations



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

def verify(creditcard, options = {})
  authorize(100, creditcard, options)
end