#!/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', 3 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', ); 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 ); ok( $response = $tr->response_decoded, 'response_decoded' ); for my $k ( keys %expect ) { ok( $response->{$k} eq $expect{$k}, sprintf '$tr->%s == %s', $k, $expect{$k} ); } for my $k ( @expect ) { ok( defined $response->{$k}, sprintf '$r->%s (%s)', $k, $response->{$k} ); } %content = ( %content, action => 'post authorization', order_number => $tr->order_number, ); my $tr_pa; ok( $tr_pa = Business::OnlinePayment->new('Bambora'), 'Instantiate $tr_pa' ); ok( $tr->content( %content ), 'Set transaction content onto $tr_pa' ); { local $@; eval { $tr_pa->submit }; ok( !$@, "Submit post-auth" ); warn "Error: $@" if $@; } my $response_pa; ok( $response_pa = $tr_pa->response_decoded, 'response_decoded' ); # for my $attr (qw/ # message_id # authorization # order_number # txn_date # avs_code # is_success # /) { # ok( # defined $tr->$attr(), # sprintf '%s $tr->%s() = %s', # $name, # $attr, # $tr->$attr() # ); # } } done_testing;