4 require "t/lib/test_account.pl";
6 my($login, $password, %opt) = test_account_or_skip('card');
9 use_ok 'Business::OnlinePayment';
14 password => $password,
15 action => 'Normal Authorization',
16 description => 'Business::OnlinePayment visa test',
17 # card_number => '4007000000027',
18 card_number => '4111111111111111',
20 expiration => expiration_date(),
23 email => 'ippay@weasellips.com',
24 address => '123 Anystreet',
28 country => 'US', # will be forced to USA
34 my $voidable_amount = 0;
36 # valid card number test
38 my $tx = Business::OnlinePayment->new("IPPay", %opt);
39 $tx->content(%content);
42 desc => "valid card_number",
45 error_message => 'APPROVED',
46 authorization => qr/TEST\d{2}/,
47 # avs_code => 'U', # so rather pointless :\
48 avs_code => 'Y', # so very pointless :\
49 cvv2_response => 'P', # ...
51 $voidable = $tx->order_number if $tx->is_success;
52 $voidable_auth = $tx->authorization if $tx->is_success;
53 $voidable_amount = $content{amount} if $tx->is_success;
56 # invalid card number test
58 my $tx = Business::OnlinePayment->new("IPPay", %opt);
59 $tx->content(%content, card_number => "4111111111111112" );
62 desc => "invalid card_number",
64 result_code => '900', #'912' with old jetpay gw
65 error_message => 'Invalid card number. ', #'INVALID CARD NUMBER' w/old gw
66 authorization => qr/^$/,
67 avs_code => '', # so rather pointless :\
68 cvv2_response => '', # ...
69 order_number => qr/^$/,
73 # authorization only test
75 my $tx = Business::OnlinePayment->new("IPPay", %opt);
76 $tx->content(%content, action => 'authorization only', amount => '3.00' );
79 desc => "authorization only",
82 error_message => 'APPROVED',
83 authorization => qr/TEST\d{2}/,
84 # avs_code => 'U', # so rather pointless :\
85 avs_code => 'Y', # so very pointless :\
86 cvv2_response => 'P', # ...
88 $postable = $tx->order_number if $tx->is_success;
89 $postable_auth = $tx->authorization if $tx->is_success;
90 $postable_amount = $content{amount} if $tx->is_success;
93 # authorization void test
96 my $tx = Business::OnlinePayment->new("IPPay", %opt);
97 $tx->content(%content, action => 'authorization only', amount => '3.00' );
98 $tx->test_transaction(1);
101 if ($tx->is_success) {
102 my $void_tx = Business::OnlinePayment->new("IPPay", %opt );
104 $tx->content(%content, action => 'reverse authorization',
105 order_number => $tx->order_number );
108 desc => "reverse authorization",
110 result_code => '000',
111 error_message => 'VOID SUCCESSFUL',
112 authorization => qr/TEST\d{2}/,
113 avs_code => '', # so rather pointless :\
114 cvv2_response => 'P', # ...
122 # post authorization test
124 my $tx = new Business::OnlinePayment( "IPPay", %opt );
125 $tx->content( %content, 'action' => "post authorization",
126 'amount' => $postable_amount, # not required
127 'order_number' => $postable,
131 desc => "post authorization",
133 result_code => '000',
134 error_message => 'APPROVED',
135 authorization => qr/^$postable_auth$/,
143 my $tx = new Business::OnlinePayment( "IPPay", %opt );
144 $tx->content( %content, 'action' => "Void",
145 'order_number' => $voidable,
146 'authorization' => $voidable_auth,
152 result_code => '000',
153 error_message => 'VOID SUCCESSFUL',
154 authorization => qr/TEST\d{2}/,
156 cvv2_response => 'P',
162 my $tx = new Business::OnlinePayment( "IPPay", %opt );
163 $tx->content( %content, 'action' => "credit");
168 result_code => '000',
169 error_message => 'APPROVED',
170 authorization => qr/TEST\d{2}/,
172 cvv2_response => 'P',
181 $tx->test_transaction(1);
184 is( $tx->is_success, $o{is_success}, "$o{desc}: ". tx_info($tx) );
185 is( $tx->result_code, $o{result_code}, "$o{desc}: result_code()" );
186 is( $tx->error_message, $o{error_message}, "$o{desc}: error_message()" );
187 like( $tx->authorization, $o{authorization}, "$o{desc}: authorization()" );
188 is( $tx->avs_code, $o{avs_code}, "$o{desc}: avs_code()" );
189 is( $tx->cvv2_response, $o{cvv2_response}, "$o{desc}: cvv2_response()" );
190 like( $tx->order_number, $o{order_number}
191 || qr/^\w{18}/, "$o{desc}: order_number()" );
197 no warnings 'uninitialized';
201 "is_success(", $tx->is_success, ")",
202 " order_number(", $tx->order_number, ")",
203 " error_message(", $tx->error_message, ")",
204 " result_code(", $tx->result_code, ")",
205 " auth_info(", $tx->authorization, ")",
206 " avs_code(", $tx->avs_code, ")",
207 " cvv2_response(", $tx->cvv2_response, ")",