| Class | ActiveMerchant::Billing::CyberSourceGateway |
| In: |
lib/active_merchant/billing/gateways/cyber_source.rb
|
| Parent: | Gateway |
See the remote and mocked unit test files for example usage. Pay special attention to the contents of the options hash.
Initial setup instructions can be found in cybersource.com/support_center/implementation/downloads/soap_api/SOAP_toolkits.pdf
Debugging If you experience an issue with this gateway be sure to examine the transaction information from a general transaction search inside the CyberSource Business Center for the full error messages including field names.
Important Notes
| TEST_URL | = | 'https://ics2wstest.ic3.com/commerce/1.x/transactionProcessor' |
| LIVE_URL | = | 'https://ics2ws.ic3.com/commerce/1.x/transactionProcessor' |
These are the options that can be used when creating a new CyberSource Gateway object.
:login => your username
:password => the transaction key you generated in the Business Center
:test => true sets the gateway to test mode
:vat_reg_number => your VAT registration number
:nexus => "WI CA QC" sets the states/provinces where you have a physical presense for tax purposes
:ignore_avs => true don‘t want to use AVS so continue processing even if AVS would have failed
:ignore_cvv => true don‘t want to use CVV so continue processing even if CVV would have failed
# File lib/active_merchant/billing/gateways/cyber_source.rb, line 93
93: def initialize(options = {})
94: requires!(options, :login, :password)
95: @options = options
96: super
97: end
Request an authorization for an amount from CyberSource
You must supply an :order_id in the options hash
# File lib/active_merchant/billing/gateways/cyber_source.rb, line 107
107: def authorize(money, creditcard, options = {})
108: requires!(options, :order_id, :email)
109: setup_address_hash(options)
110: commit(build_auth_request(money, creditcard, options), options )
111: end
CyberSource requires that you provide line item information for tax calculations If you do not have prices for each item or want to simplify the situation then pass in one fake line item that costs the subtotal of the order
The line_item hash goes in the options hash and should look like
:line_items => [
{
:declared_value => '1',
:quantity => '2',
:code => 'default',
:description => 'Giant Walrus',
:sku => 'WA323232323232323'
},
{
:declared_value => '6',
:quantity => '1',
:code => 'default',
:description => 'Marble Snowcone',
:sku => 'FAKE1232132113123'
}
]
This functionality is only supported by this particular gateway may be changed at any time
# File lib/active_merchant/billing/gateways/cyber_source.rb, line 160
160: def calculate_tax(creditcard, options)
161: requires!(options, :line_items)
162: setup_address_hash(options)
163: commit(build_tax_calculation_request(creditcard, options), options)
164: end
Capture an authorization that has previously been requested
# File lib/active_merchant/billing/gateways/cyber_source.rb, line 114
114: def capture(money, authorization, options = {})
115: setup_address_hash(options)
116: commit(build_capture_request(money, authorization, options), options)
117: end
# File lib/active_merchant/billing/gateways/cyber_source.rb, line 131
131: def credit(money, identification, options = {})
132: commit(build_credit_request(money, identification, options), options)
133: end
Purchase is an auth followed by a capture You must supply an order_id in the options hash
# File lib/active_merchant/billing/gateways/cyber_source.rb, line 121
121: def purchase(money, creditcard, options = {})
122: requires!(options, :order_id, :email)
123: setup_address_hash(options)
124: commit(build_purchase_request(money, creditcard, options), options)
125: end
Should run against the test servers or not?
# File lib/active_merchant/billing/gateways/cyber_source.rb, line 100
100: def test?
101: @options[:test] || Base.gateway_mode == :test
102: end