X-Git-Url: http://git.freeside.biz/gitweb/?p=Business-OnlinePayment.git;a=blobdiff_plain;f=FraudDetect%2FpreCharge.pm;h=04004e570e306af2e708d0607918cdd97379fb1f;hp=2d34544c3bf42ed3c86ae161233498e92a6006ef;hb=900493d1e1548447a55878553c625ab4d49a1c11;hpb=d1ffb1dddfef66b75320f92929616df6a784d821 diff --git a/FraudDetect/preCharge.pm b/FraudDetect/preCharge.pm index 2d34544..04004e5 100644 --- a/FraudDetect/preCharge.pm +++ b/FraudDetect/preCharge.pm @@ -1,23 +1,28 @@ - package Business::FraudDetect::preCharge; use strict; use Carp; use vars qw($VERSION @ISA); -#use Data::Dumper; - use Business::OnlinePayment::HTTPS; -@ISA = qw / Business::OnlinePayment::HTTPS /; -$VERSION = '0.01'; +@ISA = qw( Business::OnlinePayment::HTTPS ); + +$VERSION = '0.02'; + +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 - precharge_id precharge_security1 precharge_security2 force_success / ); + $self->build_subs(qw /currency fraud_score error_code + precharge_id precharge_security1 precharge_security2 force_success fraud_transaction_id / ); $self->currency('USD'); return $self; } @@ -26,7 +31,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; @@ -41,21 +45,28 @@ sub submit { ip_address )); - $self->remap_fields( qw / - ip_address ecom_billto_online_ip - zip ecom_billto_postal_code - phone ecom_billto_telecom_phone_number - first_name ecom_billto_postal_name_first - last_name ecom_billto_postal_name_last - email ecom_billto_online_email - amount ecom_transaction_amount / - ); - - - my %post_data = $self->get_fields(qw ( ecom_billto_online_ip ecom_billto_postal_code - ecom_billto_telecom_phone_number ecom_billto_online_email - ecom_transaction_amount currency - )); + $self->remap_fields( qw/ + ip_address ecom_billto_online_ip + zip ecom_billto_postal_postalcode + phone ecom_billto_telecom_phone_number + first_name ecom_billto_postal_name_first + last_name ecom_billto_postal_name_last + email ecom_billto_online_email + country ecom_billto_postal_countrycode + card_number ecom_payment_card_number + amount ecom_transaction_amount + / + ); + + + my %post_data = $self->get_fields(qw( + ecom_billto_online_ip ecom_billto_postal_postalcode + ecom_billto_telecom_phone_number ecom_billto_online_email + ecom_transaction_amount currency + ecom_billto_postal_name_first ecom_billto_postal_name_last + ecom_billto_postal_countrycode + ecom_payment_card_number + )); # set up some reasonable defaults @@ -63,16 +74,20 @@ sub submit { # split out MM/YY from exp date # - @post_data{qw/ecom_payment_card_expdate_month ecom_payment_card_expdate_year/} = $content{expiration} =~ m/(\d{1,2})(\d{2})/; - @post_data{qw/merchant_id security_1 security_2/} = ($self->precharge_id, - $self->precharge_security1, - $self->precharge_security2); + @post_data{ qw/ ecom_payment_card_expdate_month + ecom_payment_card_expdate_year + / + } = split(/\//,$content{expiration}); + + @post_data{qw/merchant_id security_1 security_2/} = ( + $self->precharge_id, + $self->precharge_security1, + $self->precharge_security2 + ); if ($self->test_transaction()) { $post_data{test} = 1; } - -# warn Dumper \%post_data; my ($page, $response, %headers) = $self->https_post(\%post_data); $self->server_response($page); @@ -126,19 +141,24 @@ sub submit { } if ($output{response} == 1 ) { - $self->is_success(1); - $self->risk_level($output{score}); - $self->result_code($output{response}); - $self->error_message('No Error. Risk assesment transaction successful'); + $self->is_success(1); + $self->fraud_score($output{score}); + $self->result_code($output{response}); + $self->fraud_transaction_id($output{transaction}); + $self->error_message('No Error. Risk assesment transaction successful'); } else { - $self->is_success(0); - $self->result_code($output{error}); - $self->error_message(exists $error_map{$output{error}} ? $error_map{$output{error}} : "preCharge error $output{error} occurred."); + $self->is_success(0); + $self->fraud_score($output{score}); + $self->result_code($output{error}); + $self->error_message( exists( $error_map{$output{error}} ) + ? $error_map{$output{error}} + : "preCharge error $output{error} occurred." + ); } } -1; +1; =pod @@ -151,13 +171,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', - } + fraud_detect => 'preCharge', + maximum_fraud_score => 500, + preCharge_id => '1000000000000001', + preCharge_security1 => 'abcdef0123', + preCharge_security2 => '3210fedcba', ); $tx->content( first_name => 'Larry Walton', @@ -179,8 +197,12 @@ Business::FraudDetect::preCharge - backend for Business::FraudDetect (part of Bu $tx->submit(); if ($tx->is_success()) { # successful charge + my $score = $tx->fraud_score; + my $id = $tx->fraud_transaction_id; + #returns the preCharge transaction id } else { # unsucessful + my $score = $tx->fraud_score; } =head1 DESCRIPTION @@ -189,7 +211,28 @@ This module provides a driver for the preCharge Risk Management Solutions API Ve See L and L 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 @@ -199,6 +242,8 @@ This module provides no public methods. Lawrence Statton +Jason Hall + =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.