finish adding payunique field
[freeside.git] / httemplate / misc / process / payment.cgi
index fa0ede8..29157d8 100644 (file)
@@ -1,4 +1,12 @@
-<%
+<% include( '/elements/header.html', ucfirst($type{$payby}). ' processing successful',
+             include('/elements/menubar.html'),
+
+    )
+%>
+<% include( '/elements/small_custview.html', $cust_main, '', '', popurl(3). "view/cust_main.cgi" ) %>
+
+<% include('/elements/footer.html') %>
+<%init>
 
 #some false laziness w/MyAccount::process_payment
 
@@ -25,13 +33,9 @@ my $month = $1;
 $cgi->param('payby') =~ /^(CARD|CHEK)$/
   or die "illegal payby ". $cgi->param('payby');
 my $payby = $1;
-my %payby2bop = (
-  'CARD' => 'CC',
-  'CHEK' => 'ECHECK',
-);
 my %payby2fields = (
   'CARD' => [ qw( address1 address2 city state zip ) ],
-  'CHEK' => [ qw( ss ) ],
+  'CHEK' => [ qw( ss paytype paystate stateid stateid_state ) ],
 );
 my %type = ( 'CARD' => 'credit card',
              'CHEK' => 'electronic check (ACH)',
@@ -41,25 +45,32 @@ $cgi->param('payname') =~ /^([\w \,\.\-\']+)$/
   or eidiot gettext('illegal_name'). " payname: ". $cgi->param('payname');
 my $payname = $1;
 
-$cgi->param('paybatch') =~ /^([\w \!\@\#\$\%\&\(\)\-\+\;\:\'\"\,\.\?\/\=]*)$/
-  or eidiot gettext('illegal_text'). " paybatch: ". $cgi->param('paybatch');
-my $paybatch = $1;
+$cgi->param('payunique') =~ /^([\w \!\@\#\$\%\&\(\)\-\+\;\:\'\"\,\.\?\/\=]*)$/
+  or eidiot gettext('illegal_text'). " payunique: ". $cgi->param('payunique');
+my $payunique = $1;
 
 my $payinfo;
 my $paycvv = '';
 if ( $payby eq 'CHEK' ) {
 
-  $cgi->param('payinfo1') =~ /^(\d+)$/
-    or eidiot "illegal account number ". $cgi->param('payinfo1');
-  my $payinfo1 = $1;
-   $cgi->param('payinfo2') =~ /^(\d+)$/
-    or eidiot "illegal ABA/routing number ". $cgi->param('payinfo2');
-  my $payinfo2 = $1;
-  $payinfo = $payinfo1. '@'. $payinfo2;
+  if ($cgi->param('payinfo1') =~ /xx/i || $cgi->param('payinfo2') =~ /xx/i ) {
+    $payinfo = $cust_main->payinfo;
+  } else {
+    $cgi->param('payinfo1') =~ /^(\d+)$/
+      or eidiot "illegal account number ". $cgi->param('payinfo1');
+    my $payinfo1 = $1;
+    $cgi->param('payinfo2') =~ /^(\d+)$/
+      or eidiot "illegal ABA/routing number ". $cgi->param('payinfo2');
+    my $payinfo2 = $1;
+    $payinfo = $payinfo1. '@'. $payinfo2;
+  }
 
 } elsif ( $payby eq 'CARD' ) {
 
   $payinfo = $cgi->param('payinfo');
+  if ($payinfo eq $cust_main->paymask) {
+    $payinfo = $cust_main->payinfo;
+  }
   $payinfo =~ s/\D//g;
   $payinfo =~ /^(\d{13,16})$/
     or eidiot gettext('invalid_card'); # . ": ". $self->payinfo;
@@ -87,18 +98,37 @@ if ( $payby eq 'CHEK' ) {
   die "unknown payby $payby";
 }
 
-my $error = $cust_main->realtime_bop( $payby2bop{$payby}, $amount,
-  'quiet'    => 1,
-  'payinfo'  => $payinfo,
-  'paydate'  => "$year-$month-01",
-  'payname'  => $payname,
-  'paybatch' => $paybatch,
-  'paycvv'   => $paycvv,
-  map { $_ => $cgi->param($_) } @{$payby2fields{$payby}}
-);
-eidiot($error) if $error;
+my $error = '';
+if ( $cgi->param('batch') ) {
 
-$cust_main->apply_payments;
+  $error = $cust_main->batch_card(
+                                   'payby'    => $payby,
+                                   'amount'   => $amount,
+                                   'payinfo'  => $payinfo,
+                                   'paydate'  => "$year-$month-01",
+                                   'payname'  => $payname,
+                                   map { $_ => $cgi->param($_) } 
+                                     @{$payby2fields{$payby}}
+                                 );
+  eidiot($error) if $error;
+
+} else {
+
+  $error = $cust_main->realtime_bop( $FS::payby::payby2bop{$payby}, $amount,
+    'quiet'     => 1,
+    'manual'    => 1,
+    'payinfo'   => $payinfo,
+    'paydate'   => "$year-$month-01",
+    'payname'   => $payname,
+    'payunique' => $payunique,
+    'paycvv'    => $paycvv,
+    map { $_ => $cgi->param($_) } @{$payby2fields{$payby}}
+  );
+  eidiot($error) if $error;
+
+  $cust_main->apply_payments;
+
+}
 
 if ( $cgi->param('save') ) {
   my $new = new FS::cust_main { $cust_main->hash };
@@ -126,23 +156,11 @@ if ( $cgi->param('save') ) {
   $new->set( $_ => $cgi->param($_) ) foreach @{$payby2fields{$payby}};
 
   my $error = $new->replace($cust_main);
-  eidiot "payment processed sucessfully, but error saving info: $error"
+  eidiot "payment processed successfully, but error saving info: $error"
     if $error;
   $cust_main = $new;
 }
 
 #success!
 
-%>
-<%= include( '/elements/header.html', ucfirst($type{$payby}). ' processing sucessful',
-             include('/elements/menubar.html',
-                       'Main menu' => popurl(3),
-                       "View this customer (#$custnum)" =>
-                         popurl(3). "view/cust_main.cgi?$custnum",
-                    ),
-
-    )
-%>
-<%= include( '/elements/small_custview.html', $cust_main ) %>
-</BODY>
-</HTML>
+</%init>