use FS::Conf;
my $conf;
-my ($bin, $merchantID, $terminalID, $username);
+my ($bin, $merchantID, $terminalID, $username, $password, $with_recurringInd);
$name = 'paymentech';
my $gateway;
'personal savings' => 'S',
'business checking' => 'X',
'business savings' => 'X',
- );
+);
+
+my %paymentech_countries = map { $_ => 1 } qw( US CA GB UK );
%export_info = (
init => sub {
eval "use XML::Writer";
die $@ if $@;
my $conf = shift;
- ($bin, $terminalID, $merchantID, $username) =
+ ($bin, $terminalID, $merchantID, $username, $password, $with_recurringInd) =
$conf->config('batchconfig-paymentech');
},
# Here we do all the work in the header function.
foreach (@cust_pay_batch) {
$xml->startTag('newOrder', BatchRequestNo => $count++);
+ my $status = $_->cust_main->status;
tie my %order, 'Tie::IxHash', (
industryType => 'EC',
transType => 'AC',
avsCity => substr($_->city, 0, 20),
avsState => $_->state,
avsName => substr($_->first . ' ' . $_->last, 0, 30),
- avsCountryCode => $_->country,
+ avsCountryCode => ( $paymentech_countries{ $_->country }
+ ? $_->country
+ : ''
+ ),
orderID => $_->paybatchnum,
amount => $_->amount * 100,
);
+ # only do this if recurringInd is enabled in config,
+ # and the customer has at least one non-canceled recurring package
+ if ( $with_recurringInd and $status =~ /^active|suspended|ordered$/ ) {
+ # then send RF if this is the first payment on this payinfo,
+ # RS otherwise.
+ $order{'recurringInd'} = $_->payinfo_used ? 'RS' : 'RF';
+ }
foreach my $key (keys %order) {
$xml->dataElement($key, $order{$key})
}
row => sub {},
);
+# Including this means that there is a Business::BatchPayment module for
+# this gateway and we want to upgrade it.
+# Must return the name of the module, followed by a hash of options.
+
+sub _upgrade_gateway {
+ my $conf = FS::Conf->new;
+ my @batchconfig = $conf->config('batchconfig-paymentech');
+ my %options;
+ @options{ qw(bin terminalID merchantID login password ) } = @batchconfig;
+ $options{'industryType'} = 'EC';
+ ( 'Paymentech', %options );
+}
+
1;