5 use POSIX qw(strftime);
8 use Business::OnlinePayment;
11 "to test set environment variables:"
12 . " (required) PFPRO_VENDOR PFPRO_USER PFPRO_PWD;"
13 . " (optional) PFPRO_PARTNER PFPRO_CERT_PATH";
16 ( $ENV{"PFPRO_USER"} && $ENV{"PFPRO_VENDOR"} && $ENV{"PFPRO_PWD"} )
18 : ( skip_all => $runinfo )
22 "vendor" => $ENV{PFPRO_VENDOR},
23 "partner" => $ENV{PFPRO_PARTNER} || "verisign",
24 "cert_path" => $ENV{PFPRO_CERT_PATH} || ".",
28 login => $ENV{"PFPRO_USER"},
29 password => $ENV{"PFPRO_PWD"},
30 action => "Normal Authorization",
32 description => "Business::OnlinePayment::PayflowPro test",
33 card_number => "4111111111111111",
35 expiration => "12/" . strftime( "%y", localtime ),
39 email => 'ivan-payflowpro@420.am',
40 address => "123 Anystreet",
47 { # valid card number test
48 my $tx = new Business::OnlinePayment( "PayflowPro", %opts );
49 $tx->content(%content);
52 desc => "valid card_number",
55 error_message => "Approved",
56 authorization => "010101",
62 { # invalid card number test
63 my $tx = new Business::OnlinePayment( "PayflowPro", %opts );
64 $tx->content( %content, card_number => "4111111111111112" );
67 desc => "invalid card_number",
70 error_message => "Invalid account number",
71 authorization => undef,
77 { # avs_code() / AVSZIP and AVSADDR tests
78 my $tx = new Business::OnlinePayment( "PayflowPro", %opts );
80 # IF first 3 chars of STREET <= 334 and >= 666 THEN AVSADDR == "N"
81 $tx->content( %content, "address" => "500 Any street" );
84 desc => "AVSADDR=N,AVSZIP=Y",
87 error_message => "Under review by Fraud Service",
88 authorization => "010101",
93 # IF first 3 chars of STREET >= 667 THEN AVSADDR == "X" (and AVSZIP="X")
94 $tx->content( %content, "address" => "700 Any street" );
97 desc => "AVSADDR=X,AVSZIP=X",
100 error_message => "Approved",
101 authorization => "010101",
106 # IF ZIP <= 50001 and >= 99999 THEN AVSZIP == "N"
107 $tx->content( %content, "zip" => "99999" );
110 desc => "AVSADDR=Y,AVSZIP=N",
113 error_message => "Under review by Fraud Service",
114 authorization => "010101",
119 # Both AVSADDR and AVSZIP == "N"
120 $tx->content( %content, "address" => "500 Any street", "zip" => "99999" );
123 desc => "AVSADDR=N,AVSZIP=N",
126 error_message => "Under review by Fraud Service",
127 authorization => "010101",
133 { # cvv2_code() / CVV2MATCH
134 my $tx = new Business::OnlinePayment( "PayflowPro", %opts );
136 # IF CVV2 >= 301 and <= 600 THEN CVV2MATCH == "N"
137 $tx->content( %content, "cvv2" => "301" );
143 error_message => "Under review by Fraud Service",
144 authorization => "010101",
149 # IF CVV2 >= 601 THEN CVV2MATCH == "X"
150 $tx->content( %content, "cvv2" => "601" );
156 error_message => "Under review by Fraud Service",
157 authorization => "010101",
167 $tx->test_transaction(1);
170 is( $tx->is_success, $o{is_success}, $o{desc} . ": " . tx_info($tx) );
171 is( $tx->result_code, $o{result_code}, "result_code(): RESULT" );
172 like( $tx->order_number, qr/^\w{12}/, "order_number() / PNREF" );
173 is( $tx->error_message, $o{error_message}, "error_message() / RESPMSG" );
174 is( $tx->authorization, $o{authorization}, "authorization() / AUTHCODE" );
175 is( $tx->avs_code, $o{avs_code}, "avs_code() / AVSADDR and AVSZIP" );
176 is( $tx->cvv2_code, $o{cvv2_code}, "cvv2_code() / CVV2MATCH" );
182 no warnings 'uninitialized';
186 "is_success(", $tx->is_success, ")",
187 " order_number(", $tx->order_number, ")",
188 " error_message(", $tx->error_message, ")",
189 " result_code(", $tx->result_code, ")",
190 " auth_info(", $tx->authorization, ")",
191 " avs_code(", $tx->avs_code, ")",
192 " cvv2_code(", $tx->cvv2_code, ")",