#!/usr/bin/perl -w BEGIN { push @INC, "t/lib" }; use Test::More; require "t/lib/test_account.pl"; my($arblogin, $arbpassword) = test_account_or_skip('arb'); my($aimlogin, $aimpassword) = test_account_or_skip(); plan tests => 9; use_ok 'Business::OnlinePayment'; my $tx = Business::OnlinePayment->new("AuthorizeNet", fraud_detect => '_Fake', fraud_detect_faked_result => '0', fraud_detect_faked_score => '2', maximum_fraud_score => '1', ); $tx->content( type => 'VISA', login => $arblogin, password => $arbpassword, action => 'Recurring Authorization', description => 'Business::OnlinePayment::ARB mixed test', amount => '1.05', first_name => 'Tofu', last_name => 'Beast', card_number => '4007000000027', expiration => expiration_date(), interval => '1 month', start => tomorrow(), periods => '6', ); $tx->test_transaction(1); # test, dont really charge $tx->submit(); ok(!$tx->is_success()) or diag "ARB Fraud detection unexpectedly did not fail."; $tx->fraud_detect_faked_result(1); $tx->submit(); ok(!$tx->is_success()) or diag "ARB Fraud detection unexpectedly did not deny."; $tx->fraud_detect_faked_score(0); $tx->submit(); ok($tx->is_success()) or diag $tx->error_message(); my $subscription = $tx->order_number(); like($subscription, qr/^[0-9]{1,13}$/, "Get order number"); SKIP: { skip "No order number", 1 unless $subscription; $tx->content( login => $arblogin, password => $arbpassword, action => 'Cancel Recurring Authorization', subscription => $subscription, ); $tx->test_transaction(1); $tx->submit(); ok($tx->is_success()) or diag $tx->error_message; } $tx->server('test.authorize.net'); $tx->path('/gateway/transact.dll'); $tx->content( type => 'VISA', login => $aimlogin, password => $aimpassword, action => 'Normal Authorization', description => 'Business::OnlinePayment::AIM mixed test', amount => '1.06', first_name => 'Tofu', last_name => 'Beast', card_number => '4007000000027', expiration => expiration_date(), ); $tx->test_transaction(1); #test, don't really charge $tx->fraud_detect_faked_result(0); $tx->fraud_detect_faked_score(2); $tx->submit(); ok(!$tx->is_success()) or diag "AIM Fraud detection unexpectedly did not fail."; $tx->submit(); $tx->fraud_detect_faked_result(1); ok(!$tx->is_success()) or diag "AIM Fraud detection unexpectedly did not deny."; $tx->fraud_detect_faked_score(0); $tx->submit(); ok($tx->is_success()) or diag $tx->error_message;