SYNOPSIS

  use Business::OnlinePayment;

  my $tx = new Business::OnlinePayment(
      'viaKLIX', 'default_ssl_user_id' => 'webuser',
  );

  # See the module documentation for details of content()
  $tx->content(
      type           => 'CC',
      action         => 'Normal Authorization',
      description    => 'Business::OnlinePayment::viaKLIX test',
      amount         => '49.95',
      invoice_number => '100100',
      customer_id    => 'jef',
      name           => 'Jeff Finucane',
      address        => '123 Anystreet',
      city           => 'Anywhere',
      state          => 'GA',
      zip            => '30004',
      email          => '[email protected]',
      card_number    => '4111111111111111',
      expiration     => '12/09',
      cvv2           => '123',
      order_number   => 'string',
  );

  $tx->submit();

  if ( $tx->is_success() ) {
      print(
          "Card processed successfully: ", $tx->authorization, "\n",
          "order number: ",                $tx->order_number,  "\n",
          "CVV2 response: ",               $tx->cvv2_response, "\n",
          "AVS code: ",                    $tx->avs_code,      "\n",
      );
  }
  else {
      print(
          "Card was rejected: ", $tx->error_message, "\n",
          "order number: ",      $tx->order_number,  "\n",
      );
  }

DESCRIPTION

This module is a back end driver that implements the interface specified by Business::OnlinePayment to support payment handling via viaKLIX's Internet payment solution.

See Business::OnlinePayment for details on the interface this modules supports.

Standard methods

set_defaults()

This method sets the 'server' attribute to 'www.viaklix.com' and the port attribute to '443'. This method also sets up the \*(L"Module specific methods\*(R" described below.

submit()

Unofficial methods

This module provides the following methods which are not officially part of the standard Business::OnlinePayment interface (as of 3.00_06) but are nevertheless supported by multiple gateways modules and expected to be standardized soon:

order_number()
avs_code()
cvv2_response()

Module specific methods

This module provides the following methods which are not currently part of the standard Business::OnlinePayment interface:

expdate_mmyy()
debug()

Settings

The following default settings exist:

server

www.viaklix.com

port

443

path

/process.asp

Parameters passed to constructor

If any of the key/value pairs passed to the constructor have a key beginning with \*(L"default_\*(R" then those values are passed to viaKLIX as a the corresponding form field (without the \*(L"default_\*(R") whenever content(%content) lacks that key.

Handling of content(%content)

The following rules apply to content(%content) data:

type

If 'type' matches one of the following keys it is replaced by the right hand side value:

'visa' => 'CC', 'mastercard' => 'CC', 'american express' => 'CC', 'discover' => 'CC',

The value of 'type' is used to set transaction_type(). Currently this module only supports the above values.

Setting viaKLIX parameters from content(%content)

The following rules are applied to map data to viaKLIX parameters from content(%content):

# viaKLIX param => $content{<key>} ssl_merchant_id => 'login', ssl_pin => 'password',

ssl_amount => 'amount', ssl_card_number => 'card_number', ssl_exp_date => \( $month.$year ), # MM/YY from 'expiration' ssl_cvv2 => 'present' whenever cvv2 data is provided ssl_cvv2cvc2 => 'cvv2', ssl_description => 'description', ssl_invoice_number=> 'invoice_number', ssl_customer_code => 'customer_id',

ssl_first_name => 'first_name', ssl_last_name => 'last_name', ssl_avs_address => 'address', ssl_city => 'city', ssl_state => 'state', ssl_zip => \$zip, # 'zip' with non-alphanumerics removed ssl_country => 'country', ssl_phone => 'phone', ssl_email => 'email',

CardHolderName => 'name', CustomerName => 'account_name',

Mapping viaKLIX transaction responses to object methods

The following methods provides access to the transaction response data resulting from a viaKLIX request (after submit()) is called:

\fIorder_number()\fP

This order_number() method returns the ssl_txn_id field for card transactions to uniquely identify the transaction.

\fIresult_code()\fP

The result_code() method returns the ssl_result field for card transactions. It is the numeric return code indicating the outcome of the attempted transaction.

\fIerror_message()\fP

The error_message() method returns the ssl_result_message field for transactions. This provides more details about the transaction result.

\fIauthorization()\fP

The authorization() method returns the ssl_approval_code field, which is the approval code obtained from the card processing network.

\fIavs_code()\fP

The avs_code() method returns the ssl_avs_response field from the transaction result.

\fIcvv2_response()\fP

The cvv2_response() method returns the ssl_cvvw_response field, which is a response message returned with the transaction result.

\fIexpdate_mmyy()\fP

The expdate_mmyy() method takes a single scalar argument (typically the value in $content{expiration}) and attempts to parse and format and put the date in \s-1MMYY\s0 format as required by PayflowPro specification. If unable to parse the expiration date simply leave it as is and let the PayflowPro system attempt to handle it as-is.

\fIdebug()\fP

Enable or disble debugging. The value specified here will also set $Business::OnlinePayment::HTTPS::DEBUG in submit() to aid in troubleshooting problems.

COMPATIBILITY

This module implements an interface to the viaKLIX \s-1API\s0 version 2.0

AUTHORS

Jeff Finucane <[email protected]>

Based on Business::OnlinePayment::PayflowPro written by Ivan Kohler and Phil Lobbes.

RELATED TO Business::OnlinePayment::viaKLIX…

perl\|(1), Business::OnlinePayment, Carp, and the Developer Guide to the viaKLIX Virtual Terminal.