# vim:set syntax=perl: use constant FIELDS => qw( result_code authorization error_message receipt_number order_number date card_type avs_code cvv2_response total_amount tax_amounts ); use constant RESULTS => ( { is_success => 1, result_code => '2000', authorization => 'T00000', error_message => undef, receipt_number => '1096019995.5012', order_number => 0, date => '2003/12/17 09:59:58', card_type => undef, avs_code => undef, cvv2_response => undef, total_amount => 3.88, tax_amounts => { GST => 0.25 }, uuid => 'f81d4fae-7dec-11d0-a765-00a0c91e6bf6', guid => 'f81d4fae-7dec-11d0-a765-00a0c91e6bf6', }, { is_success => 0, result_code => '98e05', authorization => undef, error_message => 'Real error message', receipt_number => '1096021915.5853', order_number => 729, date => '2003/12/17 10:31:58', card_type => 'Visa', avs_code => undef, cvv2_response => undef, total_amount => 3.88, tax_amounts => { GST => 0.25, PST => 0.27 }, uuid => undef, guid => undef, }, ); use Test::More tests => 1 + scalar(RESULTS) * (1 + 1 + scalar(FIELDS)); BEGIN { use_ok('Business::OnlinePayment') }; my $txn = new Business::OnlinePayment 'InternetSecure', merchant_id => '0000'; $/ = ''; foreach my $results (RESULTS) { my $xml = ; $txn->parse_response($xml); is($txn->server_response, $xml, 'server_response'); if ($results->{is_success}) { ok($txn->is_success, 'expecting success'); } else { ok(!$txn->is_success, 'expecting failure'); } foreach (FIELDS) { no strict 'refs'; is_deeply($txn->$_, $results->{$_}, $_); } } __DATA__ 4994 1096019995.5012 0 John Smith 2003/12/17 09:59:58 Test Card Number 2000 T00000 Test Approved 3.88 001 Test Product 1 1 3.10 3.10 {USD} {GST} {TEST} 010 Test Product 2 1 0.20 0.20 {GST} {TEST} 020 Test Product 3 1 0.33 0.33 {GST} {TEST} GST Canadian GST Charged 1 0.25 0.25 {TAX} {CALCULATED} 3.10::1::001::Test Product 1::{USD}{GST}{TEST}|0.20::1::010::Test Product 2::{GST}{TEST}|0.33::1::020::Test Product 3::{GST}{TEST}|0.25::1::GST::Canadian GST Charged::{TAX}{CALCULATED} f81d4fae-7dec-11d0-a765-00a0c91e6bf6 4994 1096021915.5853 729 John Smith 2003/12/17 10:31:58 VI 98e05 Incorrect Card Number - Please Retry Real error message 3.88 001 Test Product 1 1 3.10 3.10 {USD} {GST} {PST} 010 Test Product 2 1 0.20 0.20 {GST} {PST} 020 Test Product 3 1 0.33 0.33 {GST} {PST} GST Canadian GST Charged 1 0.25 0.25 {TAX} {CALCULATED} PST PST Charged 1 0.27 0.27 {TAX} {CALCULATED} 3.10::1::001::Test Product 1::{USD}{GST}{PST}|0.20::1::010::Test Product 2::{GST}{PST}|0.33::1::020::Test Product 3::{GST}{PST}|0.25::1::GST::Canadian GST Charged::{TAX}{CALCULATED}|0.27::1::PST::PST Charged::{TAX}{CALCULATED}