Fixup parameter passing, finish changing names & doco to match
authorlawrence <lawrence>
Thu, 17 Aug 2006 14:23:07 +0000 (14:23 +0000)
committerlawrence <lawrence>
Thu, 17 Aug 2006 14:23:07 +0000 (14:23 +0000)
FraudDetect.pm
FraudDetect/preCharge.pm
OnlinePayment.pm

index 3624f5a..d624f3c 100644 (file)
@@ -17,13 +17,11 @@ Business::FraudDetect - A cohort to Business::OnlinePayment
 
 =head1 SYNOPSIS
 
-  my %processor_info = ( risk_Management => 'preCharge',
-                         maximum_risk => 500,
-                         risk_management_params => {
-                           preCharge_id => '1000000000000001',
-                           preCharge_security1 => 'abcdef0123',
-                           preCharge_security2 => '3210fedcba',
-                         },
+  my %processor_info = ( fraud_detection => 'preCharge',
+                         maximum_fraud_score => 500,
+                         preCharge_id => '1000000000000001',
+                         preCharge_security1 => 'abcdef0123',
+                         preCharge_security2 => '3210fedcba',
                         )
   my $transaction = new Business::OnlinePayment($processor, %processor_info);
   $transaction->content(
@@ -49,17 +47,17 @@ The user instantiates a Business::OnlinePayment object per usual, adding in thre
 
 =over 4
 
-=item *  risk_Management
+=item *  fraud_detection
 
 Which Fraud Detection module to use.
 
-=item *  maximum_risk
+=item *  maximum_fraud_score
 
 FraudDetection drivers are expected to return a numeric "risk" factor, this parameter allows you to set the threshold to reject the transaction based on that risk.  Higher numbers are "riskier" transactions.
 
-=item * risk_management_params
+=item * other driver-specific parameters.
 
-Driver-specific parameters.  Extant module uses this to pass in identity/authorization credentials.
+Consult the specific Fraud Detection module you intend to use for its required parameters.
 
 =back
 
index 2d34544..aa8bcb3 100644 (file)
@@ -11,12 +11,19 @@ use Business::OnlinePayment::HTTPS;
 
 $VERSION = '0.01';
 
+sub _glean_parameters_from_parent {
+    my ($self, $parent) = @_;
+    foreach my $method (qw / precharge_id precharge_security1 precharge_security2 /) {
+       $self->$method($parent->$method);
+    }
+}
+
 sub set_defaults {
     my ($self) = @_;
     $self->server('api.precharge.net');
     $self->port(443);
     $self->path('/charge');
-    $self->build_subs(qw /currency risk_level error_code
+    $self->build_subs(qw /currency fraud_score error_code
                      precharge_id precharge_security1 precharge_security2 force_success / );
     $self->currency('USD');
     return $self;
@@ -26,7 +33,6 @@ sub submit {
     my ($self) = @_;
     if ($self->force_success()) {
        $self->is_success(1);
-       $self->risk_level(100);
        $self->result_code('1');
        $self->error_message('No Error.  Force success path');
        return $self;
@@ -127,7 +133,7 @@ sub submit {
 
     if ($output{response} == 1 )  {
        $self->is_success(1);
-       $self->risk_level($output{score});
+       $self->fraud_score($output{score});
        $self->result_code($output{response});
        $self->error_message('No Error.  Risk assesment transaction successful');
     } else {
@@ -137,6 +143,9 @@ sub submit {
     }
 }
 
+
+
+
 1;
 
 
@@ -151,13 +160,11 @@ Business::FraudDetect::preCharge - backend for Business::FraudDetect (part of Bu
 
  use Business::OnlinePayment
  my $tx = new Business::OnlinePayment ( 'someGateway',
-                                        risk_management => 'preCharge',
-                                        maximum_risk => 500,
-                                        risk_management_params => {
-                                          preCharge_id => '1000000000000001',
-                                          preCharge_security1 => 'abcdef0123',
-                                          preCharge_security2 => '3210fedcba',
-                                        }
+                                        fruad_detection => 'preCharge',
+                                        maximum_fraud_score => 500,
+                                        preCharge_id => '1000000000000001',
+                                        preCharge_security1 => 'abcdef0123',
+                                        preCharge_security2 => '3210fedcba',
                                        );
  $tx->content(  
     first_name => 'Larry Walton',
@@ -189,7 +196,28 @@ This module provides a driver for the preCharge Risk Management Solutions API Ve
 
 See L<Business::OnlinePayment> and L<Business::FraudDetect> for more information.  
 
-Whe constructing the Business::OnlinePayment object, three risk management parameters must be passed in for the preCharge object to be properly constructed.  These are preCharge_id (called the merchant_id in the preCharge API manual), and two security codes (preCharge_security1 and preCharge_security2).
+
+=head1 CONSTRUCTION
+
+Whe constructing the Business::OnlinePayment object, three risk management parameters must be included for the preCharge object to be properly constructed.  
+
+=over 4
+
+=item * precharge_id
+
+This field is called "merchant_id" in the preCharge API manual
+
+
+=item * precharge_security1
+
+This field is called "security_1" in the preCharge API manual
+
+=item * precharge_secuirty2
+
+This field is called "security_2" in the preCharge API manual
+
+=back
+
 
 =head1 METHODS
 
index 2e9d35d..2b4e17b 100644 (file)
@@ -6,7 +6,7 @@ use Carp;
 use Symbol;
 
 require 5.005;
-##use Data::Dumper;
+use Data::Dumper;
 
 #require Exporter;
 
@@ -32,8 +32,7 @@ my %fields = (
     server           => undef,
     port             => undef,
     path             => undef,
-    risk_management  => undef,
-    risk_management_params => undef,         
+    fraud_detect     => undef,
     server_response  => undef,
     maximum_risk     => undef,
 );
@@ -73,7 +72,7 @@ sub new {
        $self->{_child_submit} = \&$submit;
        *{"${subclass}::submit"} = sub {
            my $self = shift;
-           $self->_pre_submit(@_);
+           $self->_pre_submit();
 
        }
     }
@@ -89,7 +88,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 +102,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);
            }
        }