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 # post authorization test
94 my $tx = new Business::OnlinePayment( "IPPay", %opt );
95 $tx->content( %content, 'action' => "post authorization",
96 'amount' => $postable_amount, # not required
97 'order_number' => $postable,
101 desc => "post authorization",
103 result_code => '000',
104 error_message => 'APPROVED',
105 authorization => qr/^$postable_auth$/,
113 my $tx = new Business::OnlinePayment( "IPPay", %opt );
114 $tx->content( %content, 'action' => "Void",
115 'order_number' => $voidable,
116 'authorization' => $voidable_auth,
122 result_code => '000',
123 error_message => 'VOID PROCESSED',
124 authorization => qr/^$voidable_auth$/,
132 my $tx = new Business::OnlinePayment( "IPPay", %opt );
133 $tx->content( %content, 'action' => "credit");
138 result_code => '000',
139 error_message => 'RETURN ACCEPTED',
140 authorization => qr/\d{6}/,
151 $tx->test_transaction(1);
154 is( $tx->is_success, $o{is_success}, "$o{desc}: " . tx_info($tx) );
155 is( $tx->result_code, $o{result_code}, "result_code(): RESULT" );
156 is( $tx->error_message, $o{error_message}, "error_message() / RESPMSG" );
157 like( $tx->authorization, $o{authorization}, "authorization() / AUTHCODE" );
158 is( $tx->avs_code, $o{avs_code}, "avs_code() / AVSADDR and AVSZIP" );
159 is( $tx->cvv2_response, $o{cvv2_response}, "cvv2_response() / CVV2MATCH" );
160 like( $tx->order_number, qr/^\w{18}/, "order_number() / PNREF" );
166 no warnings 'uninitialized';
170 "is_success(", $tx->is_success, ")",
171 " order_number(", $tx->order_number, ")",
172 " error_message(", $tx->error_message, ")",
173 " result_code(", $tx->result_code, ")",
174 " auth_info(", $tx->authorization, ")",
175 " avs_code(", $tx->avs_code, ")",
176 " cvv2_response(", $tx->cvv2_response, ")",