-=item realtime_card_cybercash
-
-Attempts to pay this invoice with the CyberCash CashRegister realtime gateway.
-
-=cut
-
-sub realtime_card_cybercash {
- my $self = shift;
- my $cust_main = $self->cust_main;
- my $amount = $self->owed;
-
- return "CyberCash CashRegister real-time card processing not enabled!"
- unless $processor eq 'cybercash3.2';
-
- my $address = $cust_main->address1;
- $address .= ", ". $cust_main->address2 if $cust_main->address2;
-
- #fix exp. date
- #$cust_main->paydate =~ /^(\d+)\/\d*(\d{2})$/;
- $cust_main->paydate =~ /^\d{2}(\d{2})[\/\-](\d+)[\/\-]\d+$/;
- my $exp = "$2/$1";
-
- #
-
- my $paybatch = $self->invnum.
- '-' . time2str("%y%m%d%H%M%S", time);
-
- my $payname = $cust_main->payname ||
- $cust_main->getfield('first').' '.$cust_main->getfield('last');
-
- my $country = $cust_main->country eq 'US' ? 'USA' : $cust_main->country;
-
- my @full_xaction = ( $xaction,
- 'Order-ID' => $paybatch,
- 'Amount' => "usd $amount",
- 'Card-Number' => $cust_main->getfield('payinfo'),
- 'Card-Name' => $payname,
- 'Card-Address' => $address,
- 'Card-City' => $cust_main->getfield('city'),
- 'Card-State' => $cust_main->getfield('state'),
- 'Card-Zip' => $cust_main->getfield('zip'),
- 'Card-Country' => $country,
- 'Card-Exp' => $exp,
- );
-
- my %result;
- %result = &CCMckDirectLib3_2::SendCC2_1Server(@full_xaction);
-
- if ( $result{'MStatus'} eq 'success' ) { #cybercash smps v.2 or 3
- my $cust_pay = new FS::cust_pay ( {
- 'invnum' => $self->invnum,
- 'paid' => $amount,
- '_date' => '',
- 'payby' => 'CARD',
- 'payinfo' => $cust_main->payinfo,
- 'paybatch' => "$processor:$paybatch",
- } );
- my $error = $cust_pay->insert;
- if ( $error ) {
- # gah, even with transactions.
- my $e = 'WARNING: Card debited but database not updated - '.
- 'error applying payment, invnum #' . $self->invnum.
- " (CyberCash Order-ID $paybatch): $error";
- warn $e;
- return $e;
- } else {
- return '';
- }
-# } elsif ( $result{'Mstatus'} ne 'failure-bad-money'
-# || $options{'report_badcard'}
-# ) {
- } else {
- return 'Cybercash error, invnum #' .
- $self->invnum. ':'. $result{'MErrMsg'};
- }
-
-}
-