X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=lib%2FBusiness%2FOnlinePayment%2FvSecureProcessing.pm;h=696da87f08840b81d993ff7ab9fae2f65dcfea55;hb=59abe9a10977f16be2130e216ba32bfeae0ce6c4;hp=85d5f1bb119e3259ff629ebc77f48073a7272343;hpb=0d60ccd9aed8af2473ba936648dd6ca889d35c04;p=Business-OnlinePayment-vSecureProcessing.git diff --git a/lib/Business/OnlinePayment/vSecureProcessing.pm b/lib/Business/OnlinePayment/vSecureProcessing.pm index 85d5f1b..696da87 100644 --- a/lib/Business/OnlinePayment/vSecureProcessing.pm +++ b/lib/Business/OnlinePayment/vSecureProcessing.pm @@ -11,7 +11,26 @@ use Business::OnlinePayment::HTTPS; @ISA = qw(Business::OnlinePayment::HTTPS); $DEBUG = 0; -$VERSION = '0.06'; +$VERSION = '0.07'; + +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" @@ -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 ) {