add eway as an agent payment gateway, RT#71906, update list of gateways from http...
[freeside.git] / httemplate / edit / payment_gateway.html
index a469beb..b44b315 100644 (file)
                                   'gateway_action'       => 'Action',
                                   'gateway_options'      => 'Options (Name/Value pairs, <BR>one element per line)',
                                   'gateway_callback_url' => 'Callback URL',
+                                  'gateway_cancel_url'   => 'Cancel URL',
                                 },
           )
 %>
 
 
 <SCRIPT TYPE="text/javascript">
-  var modulesForNamespace = <% encode_json(\%modules_for_namespace, {canonical=>1}) %>;
-  function changeNamespace(what) {
-    var ns = what.value;
+  var modulesForNamespace = <% $json->encode(\%modules) %>;
+  function changeNamespace() {
+    var ns = document.getElementById('gateway_namespace').value;
     var select_module = document.getElementById('gateway_module');
     select_module.options.length = 0;
     for (var x in modulesForNamespace[ns]) {
@@ -30,6 +31,7 @@
       select_module.add(o, null);
     }
   }
+  window.onload = changeNamespace;
 </SCRIPT>
 
 <%init>
 die "access denied"
   unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
 
-my %modules =  (
-  '2CheckOut'             => 'Business::OnlinePayment',
-  'AuthorizeNet'          => 'Business::OnlinePayment',
-  'BankOfAmerica'         => 'Business::OnlinePayment', #deprecated?
-  'Beanstream'            => 'Business::OnlinePayment',
-  'Capstone'              => 'Business::OnlinePayment',
-  'Cardstream'            => 'Business::OnlinePayment',
-  'CashCow'               => 'Business::OnlinePayment',
-  'CyberSource'           => 'Business::OnlinePayment',
-  'eSec'                  => 'Business::OnlinePayment',
-  'eSelectPlus'           => 'Business::OnlinePayment',
-  'eWayShared'            => 'Business::OnlineThirdPartyPayment',
-  'ElavonVirtualMerchant' => 'Business::OnlinePayment',
-  'Exact'                 => 'Business::OnlinePayment',
-  'iAuthorizer'           => 'Business::OnlinePayment',
-  'Ingotz'                => 'Business::OnlinePayment',
-  'InternetSecure'        => 'Business::OnlinePayment',
-  'Interswitchng'         => 'Business::OnlineThirdPartyPayment',
-  'IPaymentTPG'           => 'Business::OnlinePayment',
-  'IPPay'                 => 'Business::OnlinePayment',
-  'Iridium'               => 'Business::OnlinePayment',
-  'Jettis'                => 'Business::OnlinePayment',
-  'Jety'                  => 'Business::OnlinePayment',
-  'LinkPoint'             => 'Business::OnlinePayment',
-  'MerchantCommerce'      => 'Business::OnlinePayment',
-  'Network1Financial'     => 'Business::OnlinePayment',
-  'OCV'                   => 'Business::OnlinePayment',
-  'OpenECHO'              => 'Business::OnlinePayment',
-  'PayConnect'            => 'Business::OnlinePayment',
-  'PayflowPro'            => 'Business::OnlinePayment',
-  'PaymenTech'            => 'Business::OnlinePayment',
-  'PaymentsGateway'       => 'Business::OnlinePayment',
-  'PayPal'                => 'Business::OnlinePayment',
-  #'PaySystems'            => 'Business::OnlinePayment',
-  'PlugnPay'              => 'Business::OnlinePayment',
-  'PPIPayMover'           => 'Business::OnlinePayment',
-  'Protx'                 => 'Business::OnlinePayment', #now SagePay
-  'PXPost'                => 'Business::OnlinePayment',
-  'SagePay'               => 'Business::OnlinePayment',
-  'SecureHostingUPG'      => 'Business::OnlinePayment',
-  'Skipjack'              => 'Business::OnlinePayment',
-  'StGeorge'              => 'Business::OnlinePayment',
-  'SurePay'               => 'Business::OnlinePayment',
-  'TCLink'                => 'Business::OnlinePayment',
-  'TransactionCentral'    => 'Business::OnlinePayment',
-  'TransFirsteLink'       => 'Business::OnlinePayment',
-  'Vanco'                 => 'Business::OnlinePayment',
-  'viaKLIX'               => 'Business::OnlinePayment',
-  'VirtualNet'            => 'Business::OnlinePayment',
-  'WesternACH'            => 'Business::OnlinePayment',
-  'WorldPay'              => 'Business::OnlinePayment',
-
-  'KeyBank'               => 'Business::BatchPayment',
-  'Paymentech'            => 'Business::BatchPayment',
-  'TD_EFT'                => 'Business::BatchPayment',
+my $json = Cpanel::JSON::XS->new;
+$json->canonical(1);
+my %modules = (
+  'Business::OnlinePayment' => [
+    '2CheckOut',
+    'AuthorizeNet',
+    'BankOfAmerica', #deprecated?
+    'Beanstream',
+    'Braintree',
+    'Capstone',
+    'CardFortress',
+    'Cardstream',
+    'CashCow',
+    'CyberSource',
+    'eSec',
+    'eSelectPlus',
+    'ElavonVirtualMerchant',
+    'eWay',
+    'Exact',
+    'FirstDataGlobalGateway',
+    'GlobalPayments',
+    'iAuthorizer',
+    'Ingotz',
+    'InternetSecure',
+    #'IPaymentTPG',
+    'IPPay',
+    'Iridium',
+    'Jettis',
+    'Jety',
+    'LinkPoint',
+    'Litle',
+    'MerchantCommerce',
+    'Network1Financial',
+    'NMI',
+    'OCV',
+    'Ogone',
+    'OpenECHO',
+    'PaperlessTrans',
+    'PayConnect',
+    'PayflowPro',
+    'PaymenTech',
+    'PaymentsGateway',
+    'PayPal',
+    #'PaySystems',
+    'PlugnPay',
+    'PPIPayMover',
+    'Protx', #now SagePay
+    'PXPost',
+    'SagePay',
+    'SecureHostingUPG',
+    'Skipjack',
+    'StGeorge',
+    'SurePay',
+    'SynapseGateway',
+    'TCLink',
+    'TransactionCentral',
+    'TransFirsteLink',
+    'USAePay',
+    'Vanco',
+    'viaKLIX',
+    'VirtualNet',
+    'vSecureProcessing',
+    'WesternACH',
+    'WorldPay',
+  ],
+  'Business::OnlineThirdPartyPayment' => [
+    #'eWayShared', support currently broken
+    'FCMB',
+    #'Interswitchng', #incomplete?
+    'PayPal',
+  ],
+  'Business::BatchPayment' => [
+    'BillBuddy',
+    'CardFortress',
+    'KeyBank',
+    'Paymentech',
+    'RBC',
+    'TD_EFT',
+  ],
 );
 
-my %modules_for_namespace;
-for (keys %modules) {
-  $modules_for_namespace{$modules{$_}} ||= [];
-  push @{ $modules_for_namespace{$modules{$_}} }, $_;
-}
-
 my @actions = (
                 'Normal Authorization',
                 'Authorization Only',
                 'Authorization Only,Post Authorization',
               );
 
-my $fields = [
-               {
+my $fields = [ {
                  field               => 'gateway_namespace',
                  type                => 'select',
                  options             => [ qw(
@@ -125,7 +144,9 @@ my $fields = [
                {
                  field    => 'gateway_module',
                  type     => 'select',
-                 options  => [ sort { lc($a) cmp lc ($b) } keys %modules ],
+                 # does it even make sense to list all modules here?
+                 options  => [ sort { lc($a) cmp lc($b) }
+                               map { @$_ } values %modules ],
                },
                'gateway_username',
                'gateway_password',
@@ -140,6 +161,11 @@ my $fields = [
                  size     => 40,
                },
                {
+                 field    => 'gateway_cancel_url',
+                 type     => 'text',
+                 size     => 40,
+               },
+               {
                  field               => 'gateway_options',
                  type                => 'textarea',
                  rows                => '12',
@@ -153,8 +179,11 @@ my $fields = [
 my $field_callback = sub {
   my ($cgi, $object, $field_hashref ) = @_;
   if ($object->gatewaynum) {
-    if ( $field_hashref->{field} =~ /gateway_(module|namespace)/ ) {
+    if ( $field_hashref->{field} eq 'gateway_module' ) {
+      $field_hashref->{type} = 'fixed';
+    } elsif ( $field_hashref->{field} eq 'gateway_namespace' ) {
       $field_hashref->{type} = 'fixed';
+      $field_hashref->{formatted_value} = $object->namespace_description;
     }
   }
 };