From 85317b0d6cd1a1e30ae9da69039dec32c517e86a Mon Sep 17 00:00:00 2001 From: einhverfr Date: Tue, 3 Oct 2006 22:47:50 +0000 Subject: Adding experimental support for TrustCommerce credit card processing git-svn-id: https://ledger-smb.svn.sourceforge.net/svnroot/ledger-smb/trunk@187 4979c152-3d1c-0410-bac9-87ea11338e46 --- LedgerSMB/CreditCard/TrustCommerce.pm | 66 +++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 LedgerSMB/CreditCard/TrustCommerce.pm (limited to 'LedgerSMB/CreditCard/TrustCommerce.pm') diff --git a/LedgerSMB/CreditCard/TrustCommerce.pm b/LedgerSMB/CreditCard/TrustCommerce.pm new file mode 100644 index 00000000..7d2bf2b2 --- /dev/null +++ b/LedgerSMB/CreditCard/TrustCommerce.pm @@ -0,0 +1,66 @@ + +package TrustCommerce; +use LedgerSMB::CreditCard::TrustCommerce::Config (); +use LedgerSMB::CreditCard::Config (); +use Net::TCLink; + +%baseparams = ${Config::baseparams}; +$debug = ${Config::debug}; + +sub sale { + $form = shift @_; + my %params = %baseparams; + $params{action} = 'sale'; + $params{amount} = $form->{amount} * 100; + $params{track1} = $form->{track1}; + $params{track2} = $form->{track2}; + &process; +} + +sub process { + 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 "$_= ".$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; -- cgit v1.2.3