X-Git-Url: http://git.freeside.biz/gitweb/?p=Business-OnlinePayment-Bambora.git;a=blobdiff_plain;f=t%2F021-payments-card-normal_authorization.t;fp=t%2F021-payments-card-normal_authorization.t;h=f4eb89babfe1f580e1f101c68dd69d4d3713572c;hp=0000000000000000000000000000000000000000;hb=40669843fb6bf03fd80cb0311cdfa90aec55bb1a;hpb=53071f40c4e2d4be41efb018d0233b37bf1c395b diff --git a/t/021-payments-card-normal_authorization.t b/t/021-payments-card-normal_authorization.t new file mode 100755 index 0000000..f4eb89b --- /dev/null +++ b/t/021-payments-card-normal_authorization.t @@ -0,0 +1,107 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Test::More; + +use lib 't'; +require 'TestFixtures.pm'; +use Business::OnlinePayment; + +my $merchant_id = $ENV{BAMBORA_MERCHANT_ID}; +my $api_key = $ENV{BAMBORA_API_KEY}; + +SKIP: { + skip 'Missing env vars BAMBORA_MERCHANT_ID and BAMBORA_API_KEY', 78 + unless $merchant_id && $api_key; + + my %content = ( + login => $merchant_id, + password => $api_key, + action => 'Normal Authorization', + amount => '9.99', + + owner => 'Freeside Internet Services', + name => 'Mitch Jackson', + address => '1407 Graymalkin Lane', + city => 'Vancouver', + state => 'BC', + zip => '111 111', + country => 'CA', + + card_number => '4242424242424242', + cvv2 => '111', + expiration => '1122', + phone => '251-300-1300', + email => 'mitch@freeside.biz', + ); + + # Test approved card numbers, + # ref: https://dev.na.bambora.com/docs/references/payment_APIs/test_cards/ + my %approved_cards = ( + visa => { card => '4030000010001234', cvv2 => '123' }, + mastercard => { card => '5100000010001004', cvv2 => '123' }, + mastercard2 => { card => '2223000048400011', cvv2 => '123' }, + amex => { card => '371100001000131', cvv2 => '1234' }, + visa => { card => '4030000010001234', cvv2 => '123' }, + discover => { card => '6011500080009080', cvv2 => '123' }, + ); + + for my $name ( keys %approved_cards ) { + $content{card_number} = $approved_cards{$name}->{card}; + $content{cvv2} = $approved_cards{$name}->{cvv2}; + + my $tr; + ok( $tr = Business::OnlinePayment->new('Bambora'), 'Instantiatiate $tr' ); + ok( $tr->content( %content ), 'Set transaction content onto $tr' ); + { + local $@; + eval { $tr->submit }; + ok( !$@, "$name Process transaction (expect approve)" ); + } + + for my $attr (qw/ + is_success + message_id + authorization + order_number + txn_date + avs_code + /) { + ok( + defined $tr->$attr(), + sprintf '%s $tr->%s() = %s', + $name, + $attr, + $tr->$attr() + ); + } + } + + # Test declined card numbers, + # ref: https://dev.na.bambora.com/docs/references/payment_APIs/test_cards/ + my %decline_cards = ( + visa => { card => '4003050500040005', cvv2 => '123' }, + mastercard => { card => '5100000020002000', cvv2 => '123' }, + amex => { card => '342400001000180', cvv2 => '1234' }, + discover => { card => '6011000900901111', cvv2 => '123' }, + ); + for my $name ( keys %decline_cards ) { + $content{card_number} = $decline_cards{$name}->{card}; + $content{cvv2} = $decline_cards{$name}->{cvv2}; + + my $tr; + ok( $tr = Business::OnlinePayment->new('Bambora'), 'Instantiate $tr' ); + ok( $tr->content( %content ), 'Set transaction content onto $tr' ); + { + local $@; + eval { $tr->submit }; + ok( !$@, "$name: Process transaction (expect decline)" ); + } + + ok( $tr->is_success == 0, '$tr->is_success == 0' ); + ok( $tr->result_code != 1, '$tr->result_code != 1' ); + ok( $tr->error_message, '$tr->error_message: '.$tr->error_message ); + } +} + +done_testing; \ No newline at end of file