diff options
author | Ivan Kohler <ivan@freeside.biz> | 2014-02-15 12:35:19 -0800 |
---|---|---|
committer | Ivan Kohler <ivan@freeside.biz> | 2014-02-15 12:35:19 -0800 |
commit | 72955bfaad9e0d8fe2000e370b37696913e4da58 (patch) | |
tree | c3bbacca1221acb45d1c473eaed2a8e24a09e154 | |
parent | 89cae7353a943921f30513529e748e1fbb7628f0 (diff) | |
parent | 1207cdca57ea1db84ed723a5a207c0b545fde354 (diff) |
Merge branch 'master' of git.freeside.biz:/home/git/Business-OnlinePayment-PaymenTech
-rw-r--r-- | lib/Business/OnlinePayment/PaymenTech.pm | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/lib/Business/OnlinePayment/PaymenTech.pm b/lib/Business/OnlinePayment/PaymenTech.pm index 5363a8d..14131e8 100644 --- a/lib/Business/OnlinePayment/PaymenTech.pm +++ b/lib/Business/OnlinePayment/PaymenTech.pm @@ -98,6 +98,32 @@ my %currency_code = ( ); my %paymentech_countries = map { $_ => 1 } qw( US CA GB UK ); +my %failure_status = ( + # values of the RespCode element + # in theory RespMsg should be set to a descriptive message, but it looks + # like that's not reliable + # XXX we should have a way to indicate other actions required by the + # processor, such as "honor with identification", "call for instructions", + # etc. + '00' => undef, # Approved + '04' => 'pickup', # Pickup + '33' => 'expired', # Card is Expired + '41' => 'stolen', # Lost/Stolen + '42' => 'inactive', # Account Not Active + '43' => 'stolen', # Lost/Stolen Card + '44' => 'inactive', # Account Not Active + #'45' duplicate transaction, should also have its own status + 'B7' => 'blacklisted', # Fraud + 'B9' => 'blacklisted', # On Negative File + 'BB' => 'stolen', # Possible Compromise + 'BG' => 'blacklisted', # Blocked Account + 'BQ' => 'blacklisted', # Issuer has Flagged Account as Suspected Fraud + 'C4' => 'nsf', # Over Credit Limit + 'D5' => 'blacklisted', # On Negative File + 'D7' => 'nsf', # Insufficient Funds + 'F3' => 'inactive', # Account Closed + 'K6' => 'nsf', # NSF +); sub set_defaults { my $self = shift; @@ -303,6 +329,7 @@ sub submit { ) { + $self->failure_status( $failure_status{ $r->{RespCode} } || 'decline' ); $self->is_success(0); $self->error_message( "Transaction error: '". ($r->{'ProcStatusMsg'} || $r->{'StatusMsg'}) . "'" |