I<depend_jobnum> allows payment capture to unlock export jobs
-I<discount_term> attempts to take a discount by prepaying for discount_term
+I<discount_term> attempts to take a discount by prepaying for discount_term.
+The payment will fail if I<amount> is incorrect for this discount term.
A direct (Business::OnlinePayment) transaction will return nothing on success,
or an error message on failure.
} else {
- my %hash = ( 'custnum' => $self->custnum,
- 'payby' => 'CARD',
- );
-
- return 1
- if qsearch('cust_pay', { %hash, 'payinfo' => $opt{'payinfo'} } )
- || qsearch('cust_pay', { %hash, 'paymask' => $self->mask_payinfo('CARD',
- $opt{'payinfo'} )
- } );
+ # return 1 if the payinfo has been used for another payment
+ return $self->payinfo_used($opt{'payinfo'}); # in payinfo_Mixin
}
? $options->{country}
: $self->country;
- $content{referer} = 'http://cleanwhisker.420.am/'; #XXX fix referer :/
+ #3.0 is a good a time as any to get rid of this... add a config to pass it
+ # if anyone still needs it
+ #$content{referer} = 'http://cleanwhisker.420.am/';
+
$content{phone} = $self->daytime || $self->night;
my $currency = $conf->exists('business-onlinepayment-currency')
return "Banned credit card" if $ban && $ban->bantype ne 'warn';
###
+ # check for term discount validity
+ ###
+
+ my $discount_term = $options{discount_term};
+ if ( $discount_term ) {
+ my $bill = ($self->cust_bill)[-1]
+ or return "Can't apply a term discount to an unbilled customer";
+ my $plan = FS::discount_plan->new(
+ cust_bill => $bill,
+ months => $discount_term
+ ) or return "No discount available for term '$discount_term'";
+
+ if ( $plan->discounted_total != $options{amount} ) {
+ return "Incorrect term prepayment amount (term $discount_term, amount $options{amount}, requires ".$plan->discounted_total.")";
+ }
+ }
+
+ ###
# massage data
###
'amount' => $cust_pay_pending->paid,
#'invoice_number' => $options{'invnum'},
'customer_id' => $self->custnum,
- 'referer' => 'http://cleanwhisker.420.am/',
+
+ #3.0 is a good a time as any to get rid of this... add a config to pass it
+ # if anyone still needs it
+ #'referer' => 'http://cleanwhisker.420.am/',
+
'reference' => $cust_pay_pending->paypendingnum,
'email' => $email,
'phone' => $self->daytime || $self->night,
'password' => $password,
'order_number' => $order_number,
'amount' => $amount,
- 'referer' => 'http://cleanwhisker.420.am/', #XXX fix referer :/
+
+ #3.0 is a good a time as any to get rid of this... add a config to pass it
+ # if anyone still needs it
+ #'referer' => 'http://cleanwhisker.420.am/',
);
$content{authorization} = $auth
if length($auth); #echeck/ACH transactions have an order # but no auth
#(at least with authorize.net)
+ my $currency = $conf->exists('business-onlinepayment-currency')
+ && $conf->config('business-onlinepayment-currency');
+ $content{currency} = $currency if $currency;
+
my $disable_void_after;
if ($conf->exists('disable_void_after')
&& $conf->config('disable_void_after') =~ /^(\d+)$/) {