Patch to add CVV2 (Card Verification Value)
Webmaster
webmaster at nwdhosting.com
Sat Oct 11 12:24:07 PDT 2003
I have attached a patch (diff -u) to add CVV2 (Card Verification Value) to
customer entry screen, and submit it to your card processor. This is
based on Fresside v1.4.1, using Apache::ASP. If I have missed anything,
please tell me.
Database changes:
ALTER TABLE cust_main ADD paycvv VARCHAR(4);
ALTER TABLE h_cust_main ADD paycvv VARCHAR(4);
Brian
-------------- next part --------------
--- cust_bill.pm Sat Aug 23 02:46:58 2003
+++ /usr/lib/perl5/site_perl/5.6.1/FS/cust_bill.pm Fri Oct 10 19:53:04 2003
@@ -741,6 +741,7 @@
$content{card_number} = $cust_main->payinfo;
$cust_main->paydate =~ /^\d{2}(\d{2})[\/\-](\d+)[\/\-]\d+$/;
$content{expiration} = "$2/$1";
+ $content{cvv2} = $cust_main->paycvv;
} elsif ( $method eq 'ECHECK' ) {
my($account_number,$routing_code) = $cust_main->payinfo;
( $content{account_number}, $content{routing_code} ) =
-------------- next part --------------
--- cust_main.cgi Wed Jul 23 11:36:56 2003
+++ /usr/local/freeside/asp/edit/cust_main.cgi Fri Oct 10 18:03:27 2003
@@ -401,13 +401,14 @@
"</TABLE>",
&table("#cccccc"), "<TR>";
- my($payinfo, $payname)=(
+ my($payinfo, $payname, $paycvv)=(
$cust_main->payinfo,
$cust_main->payname,
+ $cust_main->paycvv
);
my %payby = (
- 'CARD' => qq!Credit card<BR>${r}<INPUT TYPE="text" NAME="CARD_payinfo" VALUE="" MAXLENGTH=19><BR>${r}Exp !. expselect("CARD"). qq!<BR>${r}Name on card<BR><INPUT TYPE="text" NAME="CARD_payname" VALUE="">!,
+ 'CARD' => qq!Credit card<BR>${r}<INPUT TYPE="text" NAME="CARD_payinfo" VALUE="" MAXLENGTH=19><BR>${r}Exp !. expselect("CARD"). qq!<BR>${r}Name on card<BR><INPUT TYPE="text" NAME="CARD_payname" VALUE="">!. qq!<BR>Card Verification Value<BR><INPUT TYPE="text" NAME="CARD_paycvv" VALUE="">!,
'CHEK' => qq!Electronic check<BR>${r}Account number <INPUT TYPE="text" NAME="CHEK_payinfo1" VALUE=""><BR>${r}ABA/Routing code <INPUT TYPE="text" NAME="CHEK_payinfo2" VALUE="" SIZE=10 MAXLENGTH=9><INPUT TYPE="hidden" NAME="CHEK_month" VALUE="12"><INPUT TYPE="hidden" NAME="CHEK_year" VALUE="2037"><BR>${r}Bank name <INPUT TYPE="text" NAME="CHEK_payname" VALUE="">!,
'LECB' => qq!Phone bill billing<BR>${r}Phone number <INPUT TYPE="text" BANE="LECB_payinfo" VALUE="" MAXLENGTH=15 SIZE=16><INPUT TYPE="hidden" NAME="LECB_month" VALUE="12"><INPUT TYPE="hidden" NAME="LECB_year" VALUE="2037"><INPUT TYPE="hidden" NAME="LECB_payname" VALUE="">!,
'BILL' => qq!Billing<BR>P.O. <INPUT TYPE="text" NAME="BILL_payinfo" VALUE=""><BR><INPUT TYPE="hidden" NAME="BILL_month" VALUE="12"><INPUT TYPE="hidden" NAME="BILL_year" VALUE="2037">Attention<BR><INPUT TYPE="text" NAME="BILL_payname" VALUE="">!,
@@ -417,7 +418,7 @@
my( $account, $aba ) = split('@', $payinfo);
my %paybychecked = (
- 'CARD' => qq!Credit card<BR>${r}<INPUT TYPE="text" NAME="CARD_payinfo" VALUE="$payinfo" MAXLENGTH=19><BR>${r}Exp !. expselect("CARD", $cust_main->paydate). qq!<BR>${r}Name on card<BR><INPUT TYPE="text" NAME="CARD_payname" VALUE="$payname">!,
+ 'CARD' => qq!Credit card<BR>${r}<INPUT TYPE="text" NAME="CARD_payinfo" VALUE="$payinfo" MAXLENGTH=19><BR>${r}Exp !. expselect("CARD", $cust_main->paydate). qq!<BR>${r}Name on card<BR><INPUT TYPE="text" NAME="CARD_payname" VALUE="$payname">!. qq!<BR>Card Verification Value<BR><INPUT TYPE="text" NAME="CARD_paycvv" VALUE="$paycvv">!,
'CHEK' => qq!Electronic check<BR>${r}Account number <INPUT TYPE="text" NAME="CHEK_payinfo1" VALUE="$account"><BR>${r}ABA/Routing code <INPUT TYPE="text" NAME="CHEK_payinfo2" VALUE="$aba" SIZE=10 MAXLENGTH=9><INPUT TYPE="hidden" NAME="CHEK_month" VALUE="12"><INPUT TYPE="hidden" NAME="CHEK_year" VALUE="2037"><BR>${r}Bank name <INPUT TYPE="text" NAME="CHEK_payname" VALUE="$payname">!,
'LECB' => qq!Phone bill billing<BR>${r}Phone number <INPUT TYPE="text" BANE="LECB_payinfo" VALUE="$payinfo" MAXLENGTH=15 SIZE=16><INPUT TYPE="hidden" NAME="LECB_month" VALUE="12"><INPUT TYPE="hidden" NAME="LECB_year" VALUE="2037"><INPUT TYPE="hidden" NAME="LECB_payname" VALUE="">!,
'BILL' => qq!Billing<BR>P.O. <INPUT TYPE="text" NAME="BILL_payinfo" VALUE="$payinfo"><BR><INPUT TYPE="hidden" NAME="BILL_month" VALUE="12"><INPUT TYPE="hidden" NAME="BILL_year" VALUE="2037">Attention<BR><INPUT TYPE="text" NAME="BILL_payname" VALUE="$payname">!,
-------------- next part --------------
--- cust_main.pm Thu Jul 17 12:02:04 2003
+++ /usr/lib/perl5/site_perl/5.6.1/FS/cust_main.pm Sat Oct 11 02:16:45 2003
@@ -171,6 +171,8 @@
=item payname - name on card or billing name
+=item paycvv - Card Verification Value 3 or 4 digit number on the back of the credit card
+
=item tax - tax exempt, empty or `Y'
=item otaker - order taker (assigned automatically, see L<FS::UID>)
@@ -476,7 +478,7 @@
}
if ( $self->payby =~ /^(CARD|CHEK|LECB)$/ &&
- grep { $self->get($_) ne $old->get($_) } qw(payinfo paydate payname) ) {
+ grep { $self->get($_) ne $old->get($_) } qw(payinfo paydate payname paycvv) ) {
# card/check/lec info has changed, want to retry realtime_ invoice events
my $error = $self->retry_realtime;
if ( $error ) {
@@ -564,6 +566,7 @@
|| $self->ut_textn('state')
|| $self->ut_country('country')
|| $self->ut_anything('comments')
+ || $self->ut_number('paycvv')
|| $self->ut_numbern('referral_custnum')
;
#barf. need message catalogs. i18n. etc.
@@ -752,7 +755,7 @@
$self->tax($1);
$self->otaker(getotaker);
-
+ $self->paycvv($self->paycvv);
#warn "AFTER: \n". $self->_dump;
''; #no error
-------------- next part --------------
--- process/cust_main.cgi Wed Jul 23 11:36:56 2003
+++ /usr/local/freeside/asp/edit/process/cust_main.cgi Sat Oct 11 02:12:11 2003
@@ -19,6 +19,7 @@
$cgi->param('paydate',
$cgi->param( $payby. '_month' ). '-'. $cgi->param( $payby. '_year' ) );
$cgi->param('payname', $cgi->param( $payby. '_payname' ) );
+ $cgi->param('paycvv', $cgi->param( $payby. '_paycvv' ) );
}
$cgi->param('otaker', &getotaker );
-------------- next part --------------
--- freeside-setup Fri Jun 13 22:02:25 2003
+++ freeside-setup Sat Oct 11 15:20:41 2003
@@ -494,6 +494,7 @@
'ship_fax', 'varchar', 'NULL', 12,
'payby', 'char', '', 4,
'payinfo', 'varchar', 'NULL', $char_d,
+ 'paycvv', 'varchar', 'NULL', 4,
#'paydate', @date_type,
'paydate', 'varchar', 'NULL', 10,
'payname', 'varchar', 'NULL', $char_d,
More information about the freeside-devel
mailing list