#!/usr/bin/perl -w # # Make sure to copy Business::OnlinePayment::vSecureProcessing into its # proper system directory (aka /usr/share/perl5/Business/Onlinepayment) # use strict; use Data::Dumper; use Business::OnlinePayment; my %opt = ( server =>'dvrotsos2.kattare.com', platform => 'Buypass', gid => '1432479912596791', tid => '01', userid=> 'tom@yiptv.com', port => 443, env => 'test' ); my $action = shift || 'Normal Authorization'; my $auth = shift || ''; my %content = ( appid => 'yiptv', action => $action, auth => $auth, description => 'Business::OnlinePayment visa test', # card_number => '4007000000027', card_number => '4111111111111111', cvv2 => '111', expiration => expiration_date(), amount => '42.24', name => 'Murphy Law', email => 'fake@acme.com', address => '123 Anystreet', zip => '84058', ); main(); sub main { my $transaction = Business::OnlinePayment->new("vSecureProcessing", %opt); print "MAKING PAYMENT\n"; ProcessTransaction($transaction); $content{'action'} = 'void'; $content{'ref_num'} = $transaction->authorization(); $content{'txn_date'} = $transaction->txn_date(); $content{'amount'} = $transaction->txn_amount; print "VOIDING PAYMENT\n"; ProcessTransaction($transaction); $content{'action'} = 'Normal Authorization'; $content{'amount'} = '30.00'; print "MAKING PAYMENT\n"; ProcessTransaction($transaction); $content{'action'} = 'credit'; $content{'ref_num'} = $transaction->authorization; $content{'txn_date'} = $transaction->txn_date; $content{'amount'} = $transaction->txn_amount; print "REFUNDING PAYMENT\n"; ProcessTransaction($transaction); } sub ProcessTransaction { my $transaction = shift; print "Processing transaction with content:\n".Dumper(\%content)."\n"; $transaction->content(%content); eval { $transaction->submit(); }; if ( $@ ) { die "Error: $@\n"; } else { if ( $transaction->is_success() ) { print "Card processed successfully: ". $transaction->authorization()."\n"; } else { print "Card was rejected: ". $transaction->error_message(). "\n"; } } } sub expiration_date { my($month, $year) = (localtime)[4,5]; $month += 1; $year++; # So we expire next year. $year %= 100; # y2k? What's that? return sprintf("%02d/%02d", $month, $year); }