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",
65 error_message => 'INVALID CARD NUMBER',
66 authorization => qr/^$/,
67 avs_code => '', # so rather pointless :\
68 cvv2_response => '', # ...
72 # authorization only test
74 my $tx = Business::OnlinePayment->new("IPPay", %opt);
75 $tx->content(%content, action => 'authorization only', amount => '3.00' );
78 desc => "authorization only",
81 error_message => 'APPROVED',
82 authorization => qr/TEST\d{2}/,
83 # avs_code => 'U', # so rather pointless :\
84 avs_code => 'Y', # so very pointless :\
85 cvv2_response => 'P', # ...
87 $postable = $tx->order_number if $tx->is_success;
88 $postable_auth = $tx->authorization if $tx->is_success;
89 $postable_amount = $content{amount} if $tx->is_success;
92 # authorization void test
94 my $tx = Business::OnlinePayment->new("IPPay", @opts);
95 $tx->content(%content, action => 'authorization only', amount => '3.00' );
96 $tx->test_transaction(1);
99 if ($tx->is_success) {
100 my $void_tx = Business::OnlinePayment->new("IPPay", %opt );
102 $tx->content(%content, action => 'reverse authorization',
103 order_number => $tx->order_number );
106 desc => "reverse authorization",
108 result_code => '000',
109 error_message => 'APPROVED',
110 authorization => qr/TEST\d{2}/,
111 avs_code => '', # so rather pointless :\
112 cvv2_response => '', # ...
120 # post authorization test
122 my $tx = new Business::OnlinePayment( "IPPay", %opt );
123 $tx->content( %content, 'action' => "post authorization",
124 'amount' => $postable_amount, # not required
125 'order_number' => $postable,
129 desc => "post authorization",
131 result_code => '000',
132 error_message => 'APPROVED',
133 authorization => qr/^$postable_auth$/,
141 my $tx = new Business::OnlinePayment( "IPPay", %opt );
142 $tx->content( %content, 'action' => "Void",
143 'order_number' => $voidable,
144 'authorization' => $voidable_auth,
150 result_code => '000',
151 error_message => 'VOID PROCESSED',
152 authorization => qr/^$voidable_auth$/,
160 my $tx = new Business::OnlinePayment( "IPPay", %opt );
161 $tx->content( %content, 'action' => "credit");
166 result_code => '000',
167 error_message => 'RETURN ACCEPTED',
168 authorization => qr/\d{6}/,
179 $tx->test_transaction(1);
182 is( $tx->is_success, $o{is_success}, "$o{desc}: " . tx_info($tx) );
183 is( $tx->result_code, $o{result_code}, "result_code(): RESULT" );
184 is( $tx->error_message, $o{error_message}, "error_message() / RESPMSG" );
185 like( $tx->authorization, $o{authorization}, "authorization() / AUTHCODE" );
186 is( $tx->avs_code, $o{avs_code}, "avs_code() / AVSADDR and AVSZIP" );
187 is( $tx->cvv2_response, $o{cvv2_response}, "cvv2_response() / CVV2MATCH" );
188 like( $tx->order_number, qr/^\w{18}/, "order_number() / PNREF" );
194 no warnings 'uninitialized';
198 "is_success(", $tx->is_success, ")",
199 " order_number(", $tx->order_number, ")",
200 " error_message(", $tx->error_message, ")",
201 " result_code(", $tx->result_code, ")",
202 " auth_info(", $tx->authorization, ")",
203 " avs_code(", $tx->avs_code, ")",
204 " cvv2_response(", $tx->cvv2_response, ")",