#===================================================================== # LedgerSMB # Small Medium Business Accounting software # http://www.ledgersmb.org/ # Copyright (C) 2006 # This work contains copyrighted information from a number of sources all used # with permission. # # This file contains source code included with or based on SQL-Ledger which # is Copyright Dieter Simader and DWS Systems Inc. 2000-2005 and licensed # under the GNU General Public License version 2 or, at your option, any later # version. For a full list including contact information of contributors, # maintainers, and copyright holders, see the CONTRIBUTORS file. # # Simple TrustCommerce API using Net::TCLink package TrustCommerce; use LedgerSMB::CreditCard::Config; use LedgerSMB::CreditCard::TrustCommerce::Config; use Net::TCLink; $debug = $1; sub sale { $form = shift @_; $params{action} = 'sale'; $params{amount} = $form->{amount} * 100; $params{track1} = $form->{track1}; $params{track2} = $form->{track2}; &process; } sub process { for ( keys %params ) { print "$_= " . $params{$_} . "\n"; } my %result = Net::TCLink::send( \%params ); $form->{status} = $result{status}; if ( $result{status} eq 'decline' ) { $form->{declinetype} = $result{declinetype}; $form->{declinemsg} = $declinemsg{ $result{declinetype} }; } $form->{ccauth} = $result{transID}; # log transID and status print STDERR "Info: TCLink CC AUTH transID $result{transid} returned " . "status $result{status}:$result{declinetype}:$result{baddata}:" . "$result{errortype}\n"; if ($debug) { print STDERR "Full Result:\n"; for ( keys %result ) { print STDERR "$_= " . $result{$_} . "\n"; } } %result; } sub credit { $form = shift @_; my %params = %baseparams; $params{transid} = $form->{transid}; $params{amount} = $form->{amount}; &process; } %declinemsg = ( decline => 'Transaction declined by bank', avs => 'AVS failed: Address and/or Zip mismatch', cvv => 'CVV2 Failure: Check the CVV2 number and try again', call => 'Call customer service number on card to get authcode', expiredcard => 'This card has expired', carderror => 'This card number is invalid.', authexpired => 'The authorization expired. Can not postauth.', fraud => 'CrediGuard Fraud Score exceeded desired threshold', blacklist => 'CrediGuard Declined: blacklisted this transaction.', velocity => 'Crediguard declined: Too many transactions', dailylimit => 'Too many transactions in a day.', weeklylimit => 'Too many transactions in a week', monthlylimit => 'Too many transactions in a month' ); 1;