Module: ActiveMerchant::Billing::PayflowCommonAPI

Included in:
PayflowExpressGateway, PayflowGateway
Defined in:
lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb

Constant Summary collapse

XMLNS =
'http://www.paypal.com/XMLPay'
TEST_URL =
'https://pilot-payflowpro.paypal.com'
LIVE_URL =
'https://payflowpro.paypal.com'
CARD_MAPPING =
{
  :visa => 'Visa',
  :master => 'MasterCard',
  :discover => 'Discover',
  :american_express => 'Amex',
  :jcb => 'JCB',
  :diners_club => 'DinersClub',
  :switch => 'Switch',
  :solo => 'Solo'
}
TRANSACTIONS =
{ 
  :purchase       => "Sale",
  :authorization  => "Authorization",
  :capture        => "Capture",
  :void           => "Void",
  :credit         => "Credit" 
}
CVV_CODE =
{
  'Match' => 'M',
  'No Match' => 'N',
  'Service Not Available' => 'U', 
  'Service not Requested' => 'P'
}

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb', line 4

def self.included(base)
  base.default_currency = 'USD'
    
  # The certification id requirement has been removed by Payflow
  # This is no longer being sent in the requests to the gateway
  base.class_inheritable_accessor :certification_id

  base.class_inheritable_accessor :partner
  
  # Set the default partner to PayPal
  base.partner = 'PayPal'
  
  base.supported_countries = ['US', 'CA', 'SG', 'AU']
  
  base.class_inheritable_accessor :timeout
  base.timeout = 60
  
  # Enable safe retry of failed connections
  # Payflow is safe to retry because retried transactions use the same
  # X-VPS-Request-ID header. If a transaction is detected as a duplicate
  # only the original transaction data will be used by Payflow, and the
  # subsequent Responses will have a :duplicate parameter set in the params
  # hash.
  base.retry_safe = true
end

Instance Method Details

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



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

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

#initialize(options = {}) ⇒ Object



60
61
62
63
64
65
66
67
68
# File 'lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb', line 60

def initialize(options = {})
  requires!(options, :login, :password)
  @options = {
    :certification_id => self.class.certification_id,
    :partner => self.class.partner
  }.update(options)
  
  super
end

#test?Boolean



70
71
72
# File 'lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb', line 70

def test?
  @options[:test] || super
end

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



79
80
81
82
# File 'lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb', line 79

def void(authorization, options = {})
  request = build_reference_request(:void, nil, authorization, options)
  commit(request)
end