use strict;
use warnings;
use POSIX qw(strftime);
-use Test::More tests => 1;
-
+use Test::More;
use Business::OnlinePayment;
-my %content = (
- login => '124freeside',
- password => 'freeside124',
- action => "Normal Authorization",
- type => "CC",
- description => "Business::OnlinePayment::FirstDataGlobalGateway test",
- card_number => '4111111111111111',
- cvv2 => '123',
- expiration => '12/20',
- amount => '1.00',
- first_name => 'Tofu',
- last_name => 'Beast',
- address => '1234 Soybean Ln.',
- city => 'Soyville',
- state => 'CA', #where else?
- zip => '54545',
-);
+my $login = $ENV{BOP_TEST_LOGIN};
+my $password = $ENV{BOP_TEST_PASSWORD};
+if (!$login) {
+ plan skip_all => "no test credentials provided; set BOP_TEST_LOGIN and BOP_TEST_PASSWORD to test communication with the gateway.",
+ 1;
+ exit(0);
+}
+
+plan tests => 2;
+
+###
+# Purchase
+###
+my %content = (
+ login => $login,
+ password => $password,
+ type => "CC",
+ description => "Business::OnlinePayment::FirstDataGlobalGateway test",
+ card_number => '4111111111111111',
+ cvv2 => '123',
+ expiration => '12/20',
+ amount => '1.00',
+ first_name => 'Tofu',
+ last_name => 'Beast',
+ address => '1234 Soybean Ln.',
+ city => 'Soyville',
+ state => 'CA', #where else?
+ zip => '94804',
+);
my $tx = new Business::OnlinePayment( 'FirstDataGlobalGateway' );
-$tx->content( %content );
+$tx->content( %content,
+ action => 'Normal Authorization' );
$tx->test_transaction(1);
$tx->submit;
-is( $tx->is_success, 1, 'Test transaction successful')
- or diag('iATS Payments error: '. $tx->error_message);
-
+is( $tx->is_success, 1, 'purchase' )
+ or diag('Gateway error: '. $tx->error_message);
+
+###
+# Refund
+###
+my $auth = $tx->authorization;
+$tx = new Business::OnlinePayment( 'FirstDataGlobalGateway' );
+$tx->content( %content,
+ action => 'Credit',
+ authorization => $auth );
+$tx->test_transaction(1);
+
+$tx->submit;
+
+is( $tx->is_success, 1, 'refund' )
+ or diag('Gateway error: '. $tx->error_message);
+
1;