#!/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 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"; MakPayment($transaction); $content{'action'} = 'void'; $content{'reference_number'} = $transaction->authorization; $content{'transaction_date'} = $transaction->txn_date; $content{'amount'} = $transaction->txn_amount; print "VOIDING PAYMENT\n"; VoidPayment($transaction); $content{'action'} = 'Normal Authorization'; print "MAKING PAYMENT\n"; MakePayment($transaction); print "REFUNDING PAYMENT\n"; $content{'action'} = 'credit'; $content{'reference_number'} = $transaction->authorization; $content{'transaction_date'} = $transaction->txn_date; $content{'amount'} = $transaction->txn_amount; refundPayment($transaction); } sub MakePayment { $transaction->content(%content); eval { $transaction->submit(); }; if ( $@ ) { print "Error: $@\n"; } else { if ( $transaction->is_success() ) { print "Card processed successfully: ". $transaction->authorization()."\n"; } else { print "Card was rejected: ". $transaction->error_message(). "\n"; } } } sub VoidPayment { } sub RefundPayment { } 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); }