summaryrefslogtreecommitdiff
path: root/LedgerSMB/CreditCard/TrustCommerce.pm
blob: 7d2bf2b2ce0381adf5dd6a4b3ed70600f295db8f (plain)
  1. package TrustCommerce;
  2. use LedgerSMB::CreditCard::TrustCommerce::Config ();
  3. use LedgerSMB::CreditCard::Config ();
  4. use Net::TCLink;
  5. %baseparams = ${Config::baseparams};
  6. $debug = ${Config::debug};
  7. sub sale {
  8. $form = shift @_;
  9. my %params = %baseparams;
  10. $params{action} = 'sale';
  11. $params{amount} = $form->{amount} * 100;
  12. $params{track1} = $form->{track1};
  13. $params{track2} = $form->{track2};
  14. &process;
  15. }
  16. sub process {
  17. my %result = Net::TCLink::send(\%params);
  18. $form->{status} = $result{status};
  19. if ($result{status} eq 'decline'){
  20. $form->{declinetype} = $result{declinetype};
  21. $form->{declinemsg} = $declinemsg{$result{declinetype}};
  22. }
  23. $form->{ccauth} = $result{transID};
  24. # log transID and status
  25. print STDERR "Info: TCLink CC AUTH transID $result{transid} returned ".
  26. "status $result{status}:$result{declinetype}:$result{baddata}:".
  27. "$result{errortype}\n";
  28. if ($debug){
  29. print STDERR "Full Result:\n";
  30. for (keys %result){
  31. print "$_= ".$result{$_}."\n";
  32. }
  33. }
  34. %result;
  35. }
  36. sub credit {
  37. $form = shift @_;
  38. my %params = %baseparams;
  39. $params{transid} = $form->{transid};
  40. $params{amount} = $form->{amount};
  41. &process;
  42. }
  43. %declinemsg = (
  44. decline => 'Transaction declined by bank',
  45. avs => 'AVS failed: Address and/or Zip mismatch',
  46. cvv => 'CVV2 Failure: Check the CVV2 number and try again',
  47. call => 'Call customer service number on card to get authcode',
  48. expiredcard => 'This card has expired',
  49. carderror => 'This card number is invalid.',
  50. authexpired => 'The authorization expired. Can not postauth.',
  51. fraud => 'CrediGuard Fraud Score exceeded desired threshold',
  52. blacklist => 'CrediGuard Declined: blacklisted this transaction.',
  53. velocity => 'Crediguard declined: Too many transactions',
  54. dailylimit => 'Too many transactions in a day.',
  55. weeklylimit => 'Too many transactions in a week',
  56. monthlylimit => 'Too many transactions in a month'
  57. );
  58. 1;