Class: ActiveMerchant::Billing::PslCardGateway

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

Overview

ActiveMerchant PSL Card Gateway

Notes:

-To be able to use the capture function, the IP address of the machine must be
 registered with PSL
-ESALE_KEYED should only be used in situations where the cardholder perceives the 
 transaction to be Internet-based, such as purchasing from a web site/on-line store.  
 If the Internet is used purely for the transport of information from the merchant 
 directly to the gateway then the appropriate cardholder present or not present message 
 type should be used rather than the ‘E’ equivalent.
-The CV2 / AVS policies are set up with the account settings when signing up for an account

Constant Summary collapse

MESSAGE_TYPE =

eCommerce sale transaction, details keyed by merchant or cardholder

'ESALE_KEYED'
RESPONSE_ACTION =

The type of response that we want to get from PSL, options are HTML, XML or REDIRECT

'HTML'
CURRENCY_CODES =

Currency Codes

{
  'AUD' => 036,
  'GBP' => 826,
  'USD' => 840
}
EMV_TERMINAL_TYPE =

The terminal used - only for swipe transactions, so hard coded to 32 for online

32
DISPATCH_LATER =

Different Dispatch types

'LATER'
DISPATCH_NOW =
'NOW'
APPROVED =

Return codes

'00'
NOMINAL_AMOUNT =

Nominal amount to authorize for a ‘dispatch later’ type The nominal amount is held straight away, when the goods are ready to be dispatched, PSL is informed and the full amount is the taken.

101
AVS_CODE =
{
  "ALL MATCH"	=> 'Y',
  "SECURITY CODE MATCH ONLY" => 'N',
  "ADDRESS MATCH ONLY" => 'Y',
  "NO DATA MATCHES"	=> 'N',
  "DATA NOT CHECKED"	=> 'R',
  "SECURITY CHECKS NOT SUPPORTED"	=> 'X'
}
CVV_CODE =
{
  "ALL MATCH"	=> 'M',
  "SECURITY CODE MATCH ONLY" => 'M',
  "ADDRESS MATCH ONLY" => 'N',
  "NO DATA MATCHES"	=> 'N',
  "DATA NOT CHECKED"	=> 'P',
  "SECURITY CHECKS NOT SUPPORTED"	=> 'X'
}

Constants inherited from Gateway

Gateway::CREDIT_DEPRECATION_MESSAGE, Gateway::CURRENCIES_WITHOUT_FRACTIONS, Gateway::DEBIT_CARDS

Instance Attribute Summary

Attributes inherited from Gateway

#options

Instance Method Summary collapse

Methods inherited from Gateway

#card_brand, card_brand, inherited, supports?, #test?

Methods included from CreditCardFormatting

#format

Constructor Details

#initialize(options = {}) ⇒ PslCardGateway

Create a new PslCardGateway

The gateway requires that a valid :login be passed in the options hash

Paramaters:

-options:
  :login -    the PslCard account login (required)


90
91
92
93
94
95
# File 'lib/active_merchant/billing/gateways/psl_card.rb', line 90

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

Instance Method Details

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

Authorize the transaction

Reserves the funds on the customer’s credit card, but does not charge the card.

This implementation does not authorize the full amount, rather it checks that the full amount is available and only ‘reserves’ the nominal amount (currently a pound and a penny)

Parameters:

-money: Amount to be charged as an Integer value in cents
-authorization: the PSL cross reference from the previous authorization
-options:

Returns:

-ActiveRecord::Billing::Response object


135
136
137
138
139
140
141
142
143
144
145
# File 'lib/active_merchant/billing/gateways/psl_card.rb', line 135

def authorize(money, credit_card, options = {})
  post = {}

  add_amount(post, money, DISPATCH_LATER, options)
  add_credit_card(post, credit_card)
  add_address(post, options)
  add_invoice(post, options)
  add_purchase_details(post)
        
  commit(post)
end

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

Post an authorization.

Captures the funds from an authorized transaction.

Parameters:

-money: Amount to be charged as an Integer value in cents
-authorization: The PSL Cross Reference
-options:

Returns:

-ActiveRecord::Billing::Response object


159
160
161
162
163
164
165
166
167
# File 'lib/active_merchant/billing/gateways/psl_card.rb', line 159

def capture(money, authorization, options = {})
  post = {}

  add_amount(post, money, DISPATCH_NOW, options)
  add_reference(post, authorization)
  add_purchase_details(post)

  commit(post)
end

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

Purchase the item straight away

Parameters:

-money: Amount to be charged as an Integer value in cents
-authorization: the PSL cross reference from the previous authorization
-options:

Returns:

-ActiveRecord::Billing::Response object


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

def purchase(money, credit_card, options = {})
  post = {}
  
  add_amount(post, money, DISPATCH_NOW, options)
  add_credit_card(post, credit_card)
  add_address(post, options)
  add_invoice(post, options)
  add_purchase_details(post)
  
  commit(post)
end