The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w

use Business::NoChex;
use DBI;

my($payment)= Business::NoChex->new({ recipient => 'test2@nochex.com' });

open (LOGFILE ,">> ../capture.txt") or die "failed to open logfile : $!\n";

if ($payment->is_valid){
  print LOGFILE "valid payment rx\n";
  print LOGFILE $payment->transaction_id ."\n";

  my($dbh) = dbConnect();

  if(checkUnique($payment)){
     recordPayment($dbh,$payment);
  }
}else{
  print LOGFILE "declined\n";
  print LOGFILE $payment->cgi->query_string;
}

close LOGFILE;

exit 0;

sub dbConnect{
  my $database = 'dbname';
  my $host = 'localhost';
  my $user = 'dbuser';
  my $password = 'dbpass';
  return DBI->connect("DBI:mysql:$database:$host", $user, $password);
}

sub checkUnique{
  my($payment)=shift;

  return 1;

}

sub recordPayment{
  my($dbh,$payment) =@_;
  my($sql) = 'INSERT INTO receipts SET rcpt_id = ?,amount=?,user_email=?, item=? , created=NOW()';
  my($sth) = $dbh->prepare($sql);
  if($sth->execute($payment->transaction_id,$payment->amount,$payment->from_email,$payment->order_id)){
    my($id) = $dbh->{mysql_insertid};
    print LOGFILE "inserted as $id\n";
  }else{
    print LOGFILE $dbh->errstr();
  }
}