Returns a payment gateway object (see L<FS::payment_gateway>) for this agent.
-Currently available options are I<invnum>, I<method>, and I<payinfo>.
+Currently available options are I<nofatal>, I<invnum>, I<method>, and I<payinfo>.
+
+If I<nofatal> is set, and no gateway is available, then the empty string
+will be returned instead of throwing a fatal exception.
If I<invnum> is set to the number of an invoice (see L<FS::cust_bill>) then
an attempt will be made to select a gateway suited for the taxes paid on
#look for an agent gateway override first
my $cardtype;
- if ( $options{method} && $options{method} eq 'CC' ) {
+ if ( $options{method} && $options{method} eq 'CC' && $options{payinfo} ) {
$cardtype = cardtype($options{payinfo});
} elsif ( $options{method} && $options{method} eq 'ECHECK' ) {
$cardtype = 'ACH';
cardtype => '',
taxclass => '', } );
- my $payment_gateway = new FS::payment_gateway;
+ my $payment_gateway;
+ my $conf = new FS::Conf;
if ( $override ) { #use a payment gateway override
$payment_gateway = $override->payment_gateway;
+ $payment_gateway->gateway_namespace('Business::OnlinePayment')
+ unless $payment_gateway->gateway_name;
+
} else { #use the standard settings from the config
+
# the standard settings from the config could be moved to a null agent
# agent_payment_gateway referenced payment_gateway
- my $conf = new FS::Conf;
- die "Real-time processing not enabled\n"
- unless $conf->exists('business-onlinepayment');
+ unless ( $conf->exists('business-onlinepayment') ) {
+ if ( $options{'nofatal'} ) {
+ return '';
+ } else {
+ die "Real-time processing not enabled\n";
+ }
+ }
#load up config
my $bop_config = 'business-onlinepayment';
"did you set the business-onlinepayment configuration value?\n"
unless $processor;
+ $payment_gateway = new FS::payment_gateway;
+
$payment_gateway->gateway_namespace( $conf->config('business-onlinepayment-namespace') ||
'Business::OnlinePayment');
$payment_gateway->gateway_module($processor);
}
+ unless ( $payment_gateway->gateway_namespace ) {
+ $payment_gateway->gateway_namespace(
+ scalar($conf->config('business-onlinepayment-namespace'))
+ || 'Business::OnlinePayment'
+ );
+ }
+
$payment_gateway;
}