From 3d7adfaaa23e69c52183e29f5354e3ac413a1280 Mon Sep 17 00:00:00 2001 From: Ivan Kohler Date: Fri, 7 Aug 2015 21:15:43 -0700 Subject: [PATCH] void partial auths, RT#35042 --- Changes | 3 ++ lib/Business/OnlinePayment/vSecureProcessing.pm | 56 ++++++++++++++++++++++++- 2 files changed, 58 insertions(+), 1 deletion(-) diff --git a/Changes b/Changes index f0eb2ad..e8330ec 100644 --- a/Changes +++ b/Changes @@ -1,5 +1,8 @@ Revision history for Perl module Business::OnlinePayment::vSecureProcessing +0.07 Fri Aug 7 20:04:27 PDT 2015 + - Immediately void partial auth by default + 0.06 Wed May 20 11:38:02 PDT 2015 - Handle and pass back error responses in ResultCode as well diff --git a/lib/Business/OnlinePayment/vSecureProcessing.pm b/lib/Business/OnlinePayment/vSecureProcessing.pm index 85d5f1b..f4aa9c6 100644 --- a/lib/Business/OnlinePayment/vSecureProcessing.pm +++ b/lib/Business/OnlinePayment/vSecureProcessing.pm @@ -13,6 +13,25 @@ use Business::OnlinePayment::HTTPS; $DEBUG = 0; $VERSION = '0.06'; +sub _info { + 'info_compat' => '0.01', + 'gateway_name' => 'vSecure Processing', + 'gateway_url' => 'http://www.vsecureprocessing.com/', + 'module_version' => $VERSION, + 'supported_types' => [qw( CC )], + 'token_support' => 0, + 'test_transaction' => 1, + 'partial_auth' => 1, + 'supported_actions' => [ + 'Normal Authorization', + #'Authorization Only', + #'Post Authorization', + 'Reverse Authorization', + 'Void', + 'Credit', + ], +} + # mapping out all possible endpoints # but this version will only be building out "charge", "void", & "credit" my %payment_actions = ( @@ -98,7 +117,7 @@ sub set_defaults { $self->build_subs(qw/ platform tid appid action reference_number cvv2_response avs_code response_code - risk_score txn_amount txn_date + risk_score txn_amount txn_date partial_auth partial_auth_amount /); $DEBUG = exists($options{debug}) ? $options{debug} : $DEBUG; @@ -314,6 +333,41 @@ sub submit { $self->server_response($server_response); # parse the result page. $self->parse_response($page); + + if ( $self->is_success && $self->response_code == 10 ) { #partial auth + + if ( $self->partial_auth ) { + + $self->partial_auth_amount( $self->txn_amount ); + + } else { + + #XXX reverse auth if i was an auth only... + my $void = new Business::OnlinePayment( + 'vSecureProcessing', + map { $_ -> $self->$_() } qw( platform appid tid ) + ); + + $void->content( + 'action' => 'Void', + 'amount' => $self->txn_amount, + 'test_transaction' => $self->test_transaction, + 'authorization' => $self->authorization, + map { $_ => $content{$_} } qw( login password card_number expiration ) + ); + + $void->submit; + + if ( !$void->is_success ) { + #XXX now what??? at least this is better than return is_success 0 or 1 + die "Couldn't void partial auth"; + } else { + $self->is_success(0); + } + + } + + } if (!$self->is_success() && !$self->error_message() ) { if ( $DEBUG ) { -- 2.11.0