summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2015-08-07 21:15:43 -0700
committerIvan Kohler <ivan@freeside.biz>2015-08-07 21:15:43 -0700
commit3d7adfaaa23e69c52183e29f5354e3ac413a1280 (patch)
tree8d8279e5c428bd0e4b82ae449b77f1da1360d99a
parent0d60ccd9aed8af2473ba936648dd6ca889d35c04 (diff)
void partial auths, RT#35042
-rw-r--r--Changes3
-rw-r--r--lib/Business/OnlinePayment/vSecureProcessing.pm56
2 files changed, 58 insertions, 1 deletions
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 ) {