adding Phil's changes to Changes
[Business-OnlinePayment.git] / OnlinePayment.pm
index 2e9d35d..2a9cee0 100644 (file)
@@ -6,7 +6,7 @@ use Carp;
 use Symbol;
 
 require 5.005;
-##use Data::Dumper;
+#use Data::Dumper;
 
 #require Exporter;
 
@@ -32,15 +32,13 @@ my %fields = (
     server           => undef,
     port             => undef,
     path             => undef,
-    risk_management  => undef,
-    risk_management_params => undef,         
+    fraud_detect     => undef,
     server_response  => undef,
     maximum_risk     => undef,
 );
 
 
 sub new {
-
     my($class,$processor,%data) = @_;
 
     Carp::croak("unspecified processor") unless $processor;
@@ -73,7 +71,7 @@ sub new {
        $self->{_child_submit} = \&$submit;
        *{"${subclass}::submit"} = sub {
            my $self = shift;
-           $self->_pre_submit(@_);
+           $self->_pre_submit();
 
        }
     }
@@ -89,7 +87,7 @@ sub _risk_detect {
     $risk_transaction->content( %parent_content ); 
     $risk_transaction->submit();
     if ($risk_transaction->is_success()) {
-       if ( $risk_transaction->risk_level <= $self->maximum_risk()) {
+       if ( $risk_transaction->fraud_score <= $self->maximum_fraud_score()) {
            $self->{_child_submit}->($self);
        } else {
            $self->is_success(0);
@@ -103,41 +101,34 @@ sub _risk_detect {
 
 sub _pre_submit{
     my ($self) = @_;
-    my $risk_detection = $self->risk_management();
+    my $fraud_detection = $self->fraud_detect();
 
     #
     # early return if user does not want optional risk mgt
     #
 
-    return $self->{_child_submit}->($self,@_) unless $risk_detection && length $risk_detection;
+    return $self->{_child_submit}->($self,@_) unless $fraud_detection && length $fraud_detection;
 
     #
 
     # Search for an appropriate FD module
     #
     
-    foreach my $subclass ( q(Business::OnlinePayment::) . $risk_detection,
-                          q(Business::FraudDetect::).$risk_detection) {
+    foreach my $subclass ( q(Business::OnlinePayment::) . $fraud_detection,
+                          q(Business::FraudDetect::).$fraud_detection) {
 
        if (!defined(&$subclass)) {
            eval "use $subclass";
            if ($@) {
-               Carp::croak("serious problem loading risk_detection module ($@)") unless
+               Carp::croak("serious problem loading fraud_detection module ($@)") unless
                    $@ =~ m/^Can\'t locate/;
            } else {
-               my $risk_tx = bless ( { processor => $risk_detection } , $subclass );
+               my $risk_tx = bless ( { processor => $fraud_detection } , $subclass );
                $risk_tx->build_subs(keys %fields);
                if ($risk_tx->can('set_defaults')) {
                    $risk_tx->set_defaults();
                }
-               my %risk_params = %{$self->risk_management_params()};
-               foreach my $key ( keys %risk_params ) {
-                   my $value = $risk_params{$key};
-                   $key = lc($key);
-                   $key =~ s/^\-//;
-                   $risk_tx->build_subs($key);
-                   $risk_tx->$key($value);
-               }
+               $risk_tx->_glean_parameters_from_parent($self);
                return $self->_risk_detect($risk_tx);
            }
        }
@@ -151,7 +142,7 @@ sub content {
         if($params{'type'}) { $self->transaction_type($params{'type'}); }
         %{$self->{'_content'}} = %params;
     }
-    return %{$self->{'_content'}};
+    return exists $self->{'_content'} ? %{$self->{'_content'}} : ();
 }
 
 sub required_fields {
@@ -205,8 +196,9 @@ sub dump_contents {
 # AutoLoader::AUTOLOAD, instead of passing up the chain
 sub build_subs {
     my $self = shift;
-    no warnings 'redefine';
+
     foreach(@_) {
+        next if($self->can($_));
         eval "sub $_ { my \$self = shift; if(\@_) { \$self->{$_} = shift; } return \$self->{$_}; }";
     }
 }
@@ -225,11 +217,11 @@ Business::OnlinePayment - Perl extension for online payment processing
 
   my $transaction = new Business::OnlinePayment($processor, %processor_info);
   $transaction->content(
-                        type       => 'Visa',
-                        amount     => '49.95',
-                        cardnumber => '1234123412341238',
-                        expiration => '0100',
-                        name       => 'John Q Doe',
+                        type        => 'Visa',
+                        amount      => '49.95',
+                        card_number => '1234123412341238',
+                        expiration  => '0100',
+                        name        => 'John Q Doe',
                        );
   $transaction->submit();