debian package for 3.24 release
[Business-OnlinePayment-AuthorizeNet.git] / t / capture.t
1 #!/usr/bin/perl -w
2
3 use Test::More;
4 require "t/lib/test_account.pl";
5
6 my($login, $password) = test_account_or_skip();
7 plan tests => 4;
8
9 use_ok 'Business::OnlinePayment';
10
11 #avoid dup checking in case "make test" is run too close to the last
12 my $amount = sprintf('%.2f', rand(100));
13
14 my $tx = Business::OnlinePayment->new("AuthorizeNet");
15 $tx->server('test.authorize.net');
16 $tx->content(
17     type           => 'VISA',
18     login          => $login,
19     password       => $password,
20     action         => 'Authorization Only',
21     description    => 'Business::OnlinePayment visa test',
22     amount         => $amount,
23     invoice_number => '100100',
24     customer_id    => 'jsk',
25     first_name     => 'Tofu',
26     last_name      => 'Beast',
27     address        => '123 Anystreet',
28     city           => 'Anywhere',
29     state          => 'UT',
30     zip            => '84058',
31     card_number    => '4007000000027',
32     expiration     => expiration_date(),
33 );
34
35 # don't set test_transaction (using test server though, still a test)
36 # as per authorize.net:
37 #  "You need to be in Live Mode to get back a transaction ID"
38 #$tx->test_transaction(1); # test, dont really charge
39
40 $tx->submit();
41
42 ok($tx->is_success()) or diag $tx->error_message;
43
44 my $auth = $tx->authorization;
45
46 my $order_number = $tx->order_number;
47 like $order_number, qr/^\d+$/;
48
49 #warn "auth: $auth\n";
50 #warn "order_number: $order_number\n";
51
52 my $settle_tx = Business::OnlinePayment->new("AuthorizeNet");
53 $settle_tx->server('test.authorize.net');
54 $settle_tx->content(
55     type           => 'VISA',
56     login          => $login,
57     password       => $password,
58     action         => 'Post Authorization',
59     description    => 'Business::OnlinePayment visa test',
60     amount         => $amount,
61     invoice_number => '100100',
62     authorization  => $auth,
63     order_number   => $order_number,
64     card_number    => '4007000000027',
65     expiration     => expiration_date(),
66 );
67
68 #$settle_tx->test_transaction(1); # test, dont really charge
69 $settle_tx->submit();
70
71 ok($settle_tx->is_success()) || diag $settle_tx->error_message;