use Test::More;
use lib 't';
-require 'TestFixtures.pm';
+use TestFixtures;
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', 32
+ skip 'Missing env vars BAMBORA_MERCHANT_ID and BAMBORA_API_KEY', 56
unless $merchant_id && $api_key;
my %content = (
- login => $merchant_id,
- password => $api_key,
- action => 'Authorization Only',
- amount => '9.99',
-
- owner => 'Freeside Internet Services',
- name => 'Mitch Jackson',
- address => '1407 Graymalkin Lane',
- city => 'Vancouver',
- state => 'BC',
- zip => '111 111',
- country => 'CA',
-
- invoice_number => time(),
- card_number => '4030000010001234',
- cvv2 => '123',
- expiration => '1122',
- phone => '251-300-1300',
- email => 'mitch@freeside.biz',
- );
+ common_content(),
- my $tr;
- ok( $tr = Business::OnlinePayment->new('Bambora'), 'Instantiatiate $tr' );
- ok( $tr->content( %content ), 'Set transaction content onto $tr' );
- {
- local $@;
- eval { $tr->submit };
- ok( !$@, "Submit pre-auth (expect approve)" );
- }
-
- my $response;
- my %expect = (
- amount => '9.99',
- approved => 1,
- auth_code => 'TEST',
- message => 'Approved',
- message_id => 1,
- payment_method => 'CC',
- type => 'PA',
- );
- my @expect = qw(
- card
- created
- order_number
- risk_score
- id
+ login => $merchant_id,
+ password => $api_key,
+
+ action => 'Authorization Only',
);
- ok( $response = $tr->response_decoded, 'response_decoded' );
+ #
+ # Process a pre-auth
+ #
- for my $k ( keys %expect ) {
- ok(
- $response->{$k} eq $expect{$k},
- sprintf '$tr->%s == %s', $k, $expect{$k}
- );
- }
+ my ( $tr, $response ) = make_api_request( \%content );
+
+ inspect_response(
+ $response,
+ {
+ amount => '9.99',
+ approved => 1,
+ auth_code => 'TEST',
+ message => 'Approved',
+ message_id => 1,
+ payment_method => 'CC',
+ type => 'PA',
+ },
+ [qw/
+ card
+ created
+ order_number
+ risk_score
+ id
+ /],
+ );
- for my $k ( @expect ) {
- ok(
- defined $response->{$k},
- sprintf '$r->%s (%s)',
- $k, $response->{$k}
- );
- }
+ inspect_transaction(
+ $tr,
+ {
+ is_success => 1,
+ },
+ [qw/
+ message_id
+ authorization
+ order_number
+ txn_date
+ avs_code
+ /],
+ );
- %content = (
+ #
+ # Process a post-auth
+ #
+
+ my %content_pa = (
%content,
action => 'Post Authorization',
order_number => $tr->order_number,
amount => '8.99', # $1 Less than pre-auth
);
- my $tr_pa;
- ok( $tr_pa = Business::OnlinePayment->new('Bambora'), 'Instantiate $tr_pa' );
- ok( $tr_pa->content( %content ), 'Set transaction content onto $tr_pa' );
- {
- local $@;
- eval { $tr_pa->submit };
- ok( !$@, "Submit post-auth" );
- warn "Error: $@" if $@;
- }
-
- %expect = (
- amount => '8.99',
- approved => '1',
- message => 'Approved',
- message_id => '1',
- type => 'PAC',
+ my ( $tr_pa, $response_pa ) = make_api_request( \%content_pa );
+
+ inspect_response(
+ $response_pa,
+ {
+ amount => '8.99',
+ approved => '1',
+ message => 'Approved',
+ message_id => '1',
+ type => 'PAC',
+ },
+ [qw/
+ authorizing_merchant_id
+ card
+ created
+ order_number
+ id
+ /],
+ );
+
+ inspect_transaction(
+ $tr_pa,
+ {
+ is_success => 1,
+ },
+ [qw/
+ message_id
+ authorization
+ order_number
+ txn_date
+ avs_code
+ /],
);
- @expect = (qw/
- authorizing_merchant_id
- card
- created
- order_number
- id
- /);
-
- my $response_pa;
- ok( $response_pa = $tr_pa->response_decoded, 'response_decoded' );
-
- for my $k ( keys %expect ) {
- ok(
- $response_pa->{$k} eq $expect{$k},
- sprintf '$tr->%s == %s', $k, $expect{$k}
- );
- }
-
- for my $k ( @expect ) {
- ok(
- defined $response_pa->{$k},
- sprintf '$r->%s (%s)',
- $k, $response_pa->{$k}
- );
- }
#
# Void Transaction
action => 'Void',
login => $content{login},
password => $content{password},
+
order_number => $tr_pa->order_number,
amount => '8.99',
);
- my $tr_void;
- ok( $tr_void = Business::OnlinePayment->new('Bambora'), 'Instantiate $tr_void' );
- ok( $tr_void->content( %content_void ), 'Set transaction content onto $tr_void' );
- {
- local $@;
- eval { $tr_void->submit };
- ok( !$@, "Submit void" );
- warn "Error: $@" if $@;
- }
-
- %expect = (
- amount => '8.99',
- approved => '1',
- message => 'Approved',
- message_id => '1',
- type => 'R',
+ my ( $tr_void, $response_void ) = make_api_request( \%content_void );
+
+ inspect_response(
+ $response_void,
+ {
+ amount => '8.99',
+ approved => '1',
+ message => 'Approved',
+ message_id => '1',
+ type => 'R',
+ },
+ [qw/
+ authorizing_merchant_id
+ card
+ created
+ order_number
+ id
+ /],
+ );
+
+ inspect_transaction(
+ $tr_void,
+ { is_success => 1 },
+ [],
);
- @expect = (qw/
- authorizing_merchant_id
- card
- created
- order_number
- id
- /);
}