summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Prykop <jonathan@freeside.biz>2016-05-02 21:44:40 -0500
committerJonathan Prykop <jonathan@freeside.biz>2016-05-04 00:18:23 -0500
commit21b9f3f3ff7870d7cd422b98125a9a917fe30979 (patch)
tree30b24d20c29e696723125a3c7a423958e1a76608
parent5f4d0e8ad92e9377d996ca7c709f528606f8a1db (diff)
RT#37632 Credit card validation [bug fixes]
-rw-r--r--FS/FS/cust_main/Billing_Realtime.pm2
-rw-r--r--FS/FS/cust_payby.pm16
2 files changed, 17 insertions, 1 deletions
diff --git a/FS/FS/cust_main/Billing_Realtime.pm b/FS/FS/cust_main/Billing_Realtime.pm
index b892e97..bbf86a5 100644
--- a/FS/FS/cust_main/Billing_Realtime.pm
+++ b/FS/FS/cust_main/Billing_Realtime.pm
@@ -1932,8 +1932,10 @@ sub realtime_verify_bop {
);
$reverse->content( 'action' => 'Reverse Authorization',
+ $self->_bop_auth(\%options),
# B:OP
+ 'amount' => '1.00',
'authorization' => $transaction->authorization,
'order_number' => $ordernum,
diff --git a/FS/FS/cust_payby.pm b/FS/FS/cust_payby.pm
index ec4eb7a..50d9ee0 100644
--- a/FS/FS/cust_payby.pm
+++ b/FS/FS/cust_payby.pm
@@ -636,7 +636,21 @@ sub verify {
my %opt = ();
- $opt{$_} = $self->$_() for qw( payinfo payname paydate );
+ # false laziness with check
+ my( $m, $y );
+ if ( $self->paydate =~ /^(\d{1,2})[\/\-](\d{2}(\d{2})?)$/ ) {
+ ( $m, $y ) = ( $1, length($2) == 4 ? $2 : "20$2" );
+ } elsif ( $self->paydate =~ /^19(\d{2})[\/\-](\d{1,2})[\/\-]\d+$/ ) {
+ ( $m, $y ) = ( $2, "19$1" );
+ } elsif ( $self->paydate =~ /^(20)?(\d{2})[\/\-](\d{1,2})[\/\-]\d+$/ ) {
+ ( $m, $y ) = ( $3, "20$2" );
+ } else {
+ return "Illegal expiration date: ". $self->paydate;
+ }
+ $m = sprintf('%02d',$m);
+ $opt{paydate} = "$y-$m-01";
+
+ $opt{$_} = $self->$_() for qw( payinfo payname paycvv );
if ( $self->locationnum ) {
my $cust_location = $self->cust_location;