package FS::payby;
use strict;
-use vars qw(%hash);
+use vars qw(%hash %payby2bop);
use Tie::IxHash;
+
=head1 NAME
FS::payby - Object methods for payment type records
=cut
+# paybys can be any/all of:
+# - a customer payment type (cust_main.payby)
+# - a payment or refund type (cust_pay.payby)
+# - an event type (part_bill_event.payby)
+
tie %hash, 'Tie::IxHash',
'CARD' => {
tinyname => 'card',
tinyname => 'declined',
shortname => 'Declined payment',
longname => 'Declined payment',
+
+ #its neither of these..
+ cust_main => '',
+ cust_pay => '',
+
},
;
map { $_ => $hash{$_}->{longname} } $self->payby;
}
+%payby2bop = (
+ 'CARD' => 'CC',
+ 'CHEK' => 'ECHECK',
+);
+
sub cust_payby {
my $self = shift;
grep { ! exists $hash{$_}->{cust_main} } $self->payby;
map { $_ => $hash{$_}->{longname} } $self->cust_payby;
}
+sub payinfo_check{
+ my($payby, $payinforef) = @_;
+
+ if ($payby eq 'CARD') {
+ $$payinforef =~ s/\D//g;
+ if ($$payinforef){
+ $$payinforef =~ /^(\d{13,16})$/
+ or return "Illegal (mistyped?) credit card number (payinfo)";
+ $$payinforef = $1;
+ validate($$payinforef) or return "Illegal credit card number";
+ return "Unknown card type" if cardype($$payinforef) eq "Unknown";
+ } else {
+ $$payinforef="N/A";
+ }
+ } else {
+ $$payinforef =~ /^([\w \!\@\#\$\%\&\(\)\-\+\;\:\'\"\,\.\?\/\=]*)$/
+ or return "Illegal text (payinfo)";
+ $$payinforef = $1;
+ }
+ '';
+}
+
=back
=head1 BUGS