=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(
=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
$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;
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;
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 {
}
}
+
+
+
1;
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',
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
use Symbol;
require 5.005;
-##use Data::Dumper;
+use Data::Dumper;
#require Exporter;
server => undef,
port => undef,
path => undef,
- risk_management => undef,
- risk_management_params => undef,
+ fraud_detect => undef,
server_response => undef,
maximum_risk => undef,
);
$self->{_child_submit} = \&$submit;
*{"${subclass}::submit"} = sub {
my $self = shift;
- $self->_pre_submit(@_);
+ $self->_pre_submit();
}
}
$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);
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);
}
}