2bb260a47a11a2cc2eee9b095e2fe44585ea46c9
[Business-OnlinePayment-Bambora.git] / t / 031-payments-card-normal_authorization.t
1 #!/usr/bin/env perl
2 use strict;
3 use warnings;
4 use Test::More;
5
6 use lib 't';
7 use TestFixtures;
8 use Business::OnlinePayment;
9
10 my $merchant_id = $ENV{BAMBORA_MERCHANT_ID};
11 my $api_key     = $ENV{BAMBORA_API_KEY};
12
13 SKIP: {
14   skip 'Missing env vars BAMBORA_MERCHANT_ID and BAMBORA_API_KEY', 78
15     unless $merchant_id && $api_key;
16
17   my %content = (
18     common_content(),
19
20     login => $merchant_id,
21     password => $api_key,
22
23     action => 'Normal Authorization',
24   );
25
26   # Test approved card numbers,
27   # ref: https://dev.na.bambora.com/docs/references/payment_APIs/test_cards/
28   my %approved_cards = (
29     visa        => { card => '4030000010001234', cvv2 => '123' },
30     mastercard  => { card => '5100000010001004', cvv2 => '123' },
31     mastercard2 => { card => '2223000048400011', cvv2 => '123' },
32     amex        => { card => '371100001000131',  cvv2 => '1234' },
33     visa        => { card => '4030000010001234', cvv2 => '123' },
34     discover    => { card => '6011500080009080', cvv2 => '123' },
35   );
36
37   for my $name ( keys %approved_cards ) {
38     $content{card_number} = $approved_cards{$name}->{card};
39     $content{cvv2} = $approved_cards{$name}->{cvv2};
40
41     my ( $tr, $response ) = make_api_request( \%content );
42
43     inspect_response(
44       $response,
45       {
46         amount => '9.99',
47         approved => 1,
48         auth_code => 'TEST',
49         message => 'Approved',
50         message_id => 1,
51         payment_method => 'CC',
52         type => 'P',
53       },
54       [qw/
55         card
56         created
57         order_number
58         risk_score
59         id
60       /],
61     );
62
63     inspect_transaction(
64       $tr,
65       {
66         is_success => 1,
67         authorization => 'TEST',
68       },
69       [qw/
70         message_id
71         order_number
72         txn_date
73         avs_code
74       /],
75     );
76
77   }
78
79   # Test declined card numbers,
80   # ref: https://dev.na.bambora.com/docs/references/payment_APIs/test_cards/
81   my %decline_cards = (
82     visa        => { card => '4003050500040005', cvv2 => '123' },
83     mastercard  => { card => '5100000020002000', cvv2 => '123' },
84     amex        => { card => '342400001000180', cvv2 => '1234' },
85     discover    => { card => '6011000900901111', cvv2 => '123' },
86   );
87   for my $name ( keys %decline_cards ) {
88     $content{card_number} = $decline_cards{$name}->{card};
89     $content{cvv2} = $decline_cards{$name}->{cvv2};
90
91     my ( $tr, $response ) = make_api_request( \%content );
92
93     inspect_transaction(
94       $tr,
95       {
96         is_success => 0,
97       },
98       [qw/
99         error_message
100       /],
101     );
102     ok( $tr->result_code != 1, '$tr->result_code != 1' );
103   }
104 }
105
106 done_testing;