5 my($login, $password, @opts) = ('TESTMERCHANT', '',
6 'default_Origin' => 'RECURRING' );
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',
33 my $voidable_amount = 0;
35 # valid card number test
37 my $tx = Business::OnlinePayment->new("IPPay", @opts);
38 $tx->content(%content);
41 desc => "valid card_number",
44 error_message => 'APPROVED',
45 authorization => qr/TEST\d{2}/,
46 avs_code => 'U', # so rather pointless :\
47 cvv2_response => 'P', # ...
49 $voidable = $tx->order_number if $tx->is_success;
50 $voidable_auth = $tx->authorization if $tx->is_success;
51 $voidable_amount = $content{amount} if $tx->is_success;
54 # invalid card number test
56 my $tx = Business::OnlinePayment->new("IPPay", @opts);
57 $tx->content(%content, card_number => "4111111111111112" );
60 desc => "invalid card_number",
63 error_message => 'INVALID CARD NUMBER',
64 authorization => qr/^$/,
65 avs_code => '', # so rather pointless :\
66 cvv2_response => '', # ...
70 # authorization only test
72 my $tx = Business::OnlinePayment->new("IPPay", @opts);
73 $tx->content(%content, action => 'authorization only', amount => '3.00' );
76 desc => "authorization only",
79 error_message => 'APPROVED',
80 authorization => qr/TEST\d{2}/,
81 avs_code => 'U', # so rather pointless :\
82 cvv2_response => 'P', # ...
84 $postable = $tx->order_number if $tx->is_success;
85 $postable_auth = $tx->authorization if $tx->is_success;
86 $postable_amount = $content{amount} if $tx->is_success;
89 # post authorization test
91 my $tx = new Business::OnlinePayment( "IPPay", %opts );
92 $tx->content( %content, 'action' => "post authorization",
93 'amount' => $postable_amount, # not required
94 'order_number' => $postable,
98 desc => "post authorization",
100 result_code => '000',
101 error_message => 'APPROVED',
102 authorization => qr/^$postable_auth$/,
110 my $tx = new Business::OnlinePayment( "IPPay", %opts );
111 $tx->content( %content, 'action' => "Void",
112 'order_number' => $voidable,
113 'authorization' => $voidable_auth,
119 result_code => '000',
120 error_message => 'VOID PROCESSED',
121 authorization => qr/^$voidable_auth$/,
129 my $tx = new Business::OnlinePayment( "IPPay", %opts );
130 $tx->content( %content, 'action' => "credit");
135 result_code => '000',
136 error_message => 'RETURN ACCEPTED',
137 authorization => qr/\d{6}/,
148 $tx->test_transaction(1);
151 is( $tx->is_success, $o{is_success}, "$o{desc}: " . tx_info($tx) );
152 is( $tx->result_code, $o{result_code}, "result_code(): RESULT" );
153 is( $tx->error_message, $o{error_message}, "error_message() / RESPMSG" );
154 like( $tx->authorization, $o{authorization}, "authorization() / AUTHCODE" );
155 is( $tx->avs_code, $o{avs_code}, "avs_code() / AVSADDR and AVSZIP" );
156 is( $tx->cvv2_response, $o{cvv2_response}, "cvv2_response() / CVV2MATCH" );
157 like( $tx->order_number, qr/^\w{18}/, "order_number() / PNREF" );
163 no warnings 'uninitialized';
167 "is_success(", $tx->is_success, ")",
168 " order_number(", $tx->order_number, ")",
169 " error_message(", $tx->error_message, ")",
170 " result_code(", $tx->result_code, ")",
171 " auth_info(", $tx->authorization, ")",
172 " avs_code(", $tx->avs_code, ")",
173 " cvv2_response(", $tx->cvv2_response, ")",
178 sub expiration_date {
179 my($month, $year) = (localtime)[4,5];
180 $year++; # So we expire next year.
181 $year %= 100; # y2k? What's that?
183 return sprintf("%02d/%02d", $month, $year);