Skip to content

Instantly share code, notes, and snippets.

@lxfontes
Created July 31, 2013 03:12
Show Gist options
  • Select an option

  • Save lxfontes/6119003 to your computer and use it in GitHub Desktop.

Select an option

Save lxfontes/6119003 to your computer and use it in GitHub Desktop.
Section B for Orbital Paymentech certification. It is a pain to do it manually. gem install activemerchant run with [merchant_id] [username] [password] then just copy / paste results into certification document.
require 'activemerchant'
require 'pp'
# Send requests to the gateway's test servers
ActiveMerchant::Billing::Base.mode = :test
def get_gateway(mid, login, password)
return ActiveMerchant::Billing::OrbitalGateway.new(
:merchant_id => mid,
:login => login,
:password => password
)
end
def get_card(name)
tpl = {
'visa1' => {brand: 'visa', loot: '4788250000028291', zip: '11111', cvv: '111'},
'visa2' => {brand: 'visa', loot: '4788250000028291', zip: 'L6L2X9', cvv: ''},
'visa3' => {brand: 'visa', loot: '4788250000028291', zip: '22222', cvv: '222'},
'visa4' => {brand: 'visa', loot: '4788250000028291', zip: '11111', cvv: '555'},
'mc1' => {brand: 'mastercard', loot: '5454545454545454', zip: 'L6L2X9', cvv: ''},
'mc2' => {brand: 'mastercard', loot: '5454545454545454', zip: '88888', cvv: '666'},
'mc3' => {brand: 'mastercard', loot: '5454545454545454', zip: 'L6L2X9', cvv: '666'},
'mc4' => {brand: 'mastercard', loot: '5454545454545454', zip: '55555', cvv: '222'},
'amex1' => {brand: 'amex', loot: '371449635398431', zip: 'L6L2X9', cvv: ''},
'amex2' => {brand: 'amex', loot: '371449635398431', zip: '44444', cvv: ''},
'amex3' => {brand: 'amex', loot: '371449635398431', zip: '66666', cvv: '22222'},
'discover1' => {brand: 'discover', loot: '6011000995500000', zip: '77777', cvv: ''},
'discover2' => {brand: 'discover', loot: '6011000995500000', zip: 'L6L2X9', cvv: '444'},
'jcb' => {brand: 'jcb', loot: '3566002020140006', zip: '33333', cvv: ''}
}
tpl[name]
end
def reverse(gateway, resp)
resp = gateway.void(resp.authorization)
puts("reverse #{resp.success?} #{resp.params['tx_ref_num']}")
return resp
end
def charge(gateway, name, amount, order)
template = get_card(name)
card = ActiveMerchant::Billing::CreditCard.new(
:number => template[:loot],
:month => Time.now.month,
:year => Time.now.year+1,
:first_name => 'Jebus',
:last_name => 'Skywalker',
:brand => template[:brand],
:verification_value => template[:cvv]
)
resp = gateway.authorize(amount, card, {:order_id => order,
:billing_address => {
:address1 => '1 Street',
:city => 'Kitchener',
:state => 'ON',
:country => 'CA',
:zip => template[:zip]
}
})
puts("#{order} #{resp.success?} resp: '#{resp.params['resp_code']}' auth: '#{resp.params['auth_code']}' avs: '#{resp.params['avs_resp_code']}' cvv: '#{resp.params['cvv2_resp_code']}' txref: '#{resp.params['tx_ref_num']}' #{resp.message}")
return resp
end
gw = get_gateway(ARGV[0], ARGV[1], ARGV[2])
# section B
resp1a = charge(gw, 'visa1', 3000, 'test1a')
resp1b = reverse(gw, resp1a)
resp2 = charge(gw, 'visa2', 3801, 'test2')
resp3 = charge(gw, 'visa3', 8500, 'test3')
resp4 = charge(gw, 'visa4', 12500, 'test4')
resp5a = charge(gw, 'mc1', 4100, 'test5a')
resp5b = reverse(gw, resp5a)
resp6 = charge(gw, 'mc2', 1102, 'test6')
resp7 = charge(gw, 'mc3', 7000, 'test7')
resp8 = charge(gw, 'mc4', 10000, 'test8')
resp9 = charge(gw, 'amex1', 105500, 'test9')
resp10a = charge(gw, 'amex2', 5500, 'test10a')
resp10b = reverse(gw, resp10a)
resp11 = charge(gw, 'amex3', 7500, 'test11')
resp12 = charge(gw, 'discover1', 1000, 'test12')
resp13a = charge(gw, 'discover1', 1500, 'test13a')
resp13b = reverse(gw, resp13a)
resp14 = charge(gw, 'discover2', 6303, 'test14')
resp15 = charge(gw, 'jcb', 2900, 'test15')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment