summaryrefslogtreecommitdiff
path: root/FraudDetect.pm
blob: 243bccb2ff88a99792a5577e689fc495738e1c08 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
package Business::FraudDetect;



use vars qw / $VERSION @ISA /;

$VERSION = '0.01';
@ISA = qw / Business::OnlinePayment /;

1;

=pod

=head1 NAME

Business::FraudDetect - A cohort to Business::OnlinePayment

=head1 SYNOPSIS

  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(
                        type       => 'Visa',
                        amount     => '49.95',
                        cardnumber => '1234123412341238',
                        expiration => '0100',
                        name       => 'John Q Doe',
                       );
  $transaction->submit();

  if($transaction->is_success()) {
    print "Card processed successfully: ".$transaction->authorization()."\n";
  } else {
    print "Card was rejected: ".$transaction->error_message()."\n";
  }

=head1 DESCRIPTION

This is a module that adds functionality to Business::OnlinePayment.  See L<Business::OnlinePayment>.

The user instantiates a Business::OnlinePayment object per usual, adding in three processor directives

=over 4

=item *  fraud_detection

Which Fraud Detection module to use.

=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 * other driver-specific parameters.

Consult the specific Fraud Detection module you intend to use for its required parameters.

=back

The $tx->submit() method is overridden to interpose a FraudDetection phase.  A subordinate object is created using the same content as the parent OnlinePayment object, and a I<Fraud Detect> action is run against that subordinate object.  If the resulting fraud score is less than or equal to the maximum_risk parameter, the parent transaction will be allowed to proceed.  Otherwise, a failure state will exist with a suitable error message.

=head1 METHODS

This module provides no new methods.  It does, however override the
submit method to interpose an additional Fraud Detection phase. 

=head1 AUTHORS

Original author: Lawrence Statton <lawrence@cluon.com>

Current maintainer: Ivan Kohler <ivan-bop@420.am> as part of the
Business::OnlinePayment distribution.

=head1 DISCLAIMER

THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.

=head1 SEE ALSO

L<Business::OnlinePayment>, http://perl.business/onlinepayment


=cut