NAME

Business::OnlinePayment::Litle - Litle & Co. Backend for Business::OnlinePayment

VERSION

Version 0.932

SYNOPSIS

This is a plugin for the Business::OnlinePayment interface. Please refer to that docuementation for general usage, and here for Litle specific usage.

In order to use this module, you will need to have an account set up with Litle & Co. http://www.litle.com/

use Business::OnlinePayment;
my $tx = Business::OnlinePayment->new(
   "Litle",
   default_Origin => 'NEW',
);

$tx->content(
    type           => 'CC',
    login          => 'testdrive',
    password       => '123qwe',
    action         => 'Normal Authorization',
    description    => 'FOO*Business::OnlinePayment test',
    amount         => '49.95',
    customer_id    => 'tfb',
    name           => 'Tofu Beast',
    address        => '123 Anystreet',
    city           => 'Anywhere',
    state          => 'UT',
    zip            => '84058',
    card_number    => '4007000000027',
    expiration     => '09/02',
    cvv2           => '1234', #optional
    invoice_number => '54123',
);
$tx->submit();

if($tx->is_success()) {
    print "Card processed successfully: ".$tx->authorization."\n";
} else {
    print "Card was rejected: ".$tx->error_message."\n";
}

METHODS AND FUNCTIONS

See Business::OnlinePayment for the complete list. The following methods either override the methods in Business::OnlinePayment or provide additional functions.

result_code

Returns the response error code.

error_message

Returns the response error description text.

server_request

Returns the complete request that was sent to the server. The request has been stripped of card_num, cvv2, and password. So it should be safe to log.

server_response

Returns the complete response from the server. The response has been stripped of card_num, cvv2, and password. So it should be safe to log.

Handling of content(%content) data:

action

The following actions are valid

normal authorization
authorization only
post authorization
credit
void

Litle specific data

Fields

Most data fields not part of the BOP standard can be added to the content hash directly, and will be used

Most data fields will truncate extra characters to conform to the Litle XML length requirements. Some fields (mostly amount fields) will error if your data exceeds the allowed length.

Products

Part of the enhanced data for level III Interchange rates

products        =>  [
{   description =>  'First Product',
    sku         =>  'sku',
    quantity    =>  1,
    units       =>  'Months'
    amount      =>  '5.00',
    discount    =>  0,
    code        =>  1,
    cost        =>  '5.00',
},
{   description =>  'Second Product',
    sku         =>  'sku',
    quantity    =>  1,
    units       =>  'Months',
    amount      =>  1500,
    discount    =>  0,
    code        =>  2,
    cost        =>  '5.00',
}

],

SPECS

Currently uses the Litle XML specifications version 8.12 and chargeback version 2.2

TESTING

In order to run the provided test suite, you will first need to apply and get your account setup with Litle. Then you can use the test account information they give you to run the test suite. The scripts will look for three environment variables to connect: BOP_USERNAME, BOP_PASSWORD, BOP_MERCHANTID

Currently the description field also uses a fixed descriptor. This will possibly need to be changed based on your arrangements with Litle.

FUNCTIONS

_info

Return the introspection hash for BOP 3.x

set_defaults

test_transaction

Get/set the server used for processing transactions. Possible values are Live, Certification, and Sandbox Default: Live

#Live
$self->test_transaction(0);

#Certification
$self->test_transaction(1);

#Sandbox
$self->test_transaction('sandbox');

#Read current value
$val = $self->test_transaction();

map_fields

format_misc_field

Used internally to guarentee that XML data will conform to the Litle spec. maxLen - The maximum length allowed (extra bytes will be truncated) minLen - The minimum length allowed errorOnLength - boolean 0 - truncate any extra bytes 1 - error if the length is out of bounds isRequired - boolean 0 - ignore undefined values 1 - error if the value is not defined

$tx->format_misc_field( \%content, [field, maxLen, minLen, errorOnLength, isRequired] );
$tx->format_misc_field( \%content, ['amount',   0,     12,             0,          0] );

format_amount_field

Used internally to change amounts from the BOP "5.00" format to the format expected by Litle "500"

$tx->format_amount_field( \%content, 'amount' );

format_phone_field

Used internally to strip invalid characters from phone numbers. IE "1 (800).TRY-THIS" becomes "18008788447"

$tx->format_phone_field( \%content, 'company_phone' );

chargeback_retrieve_support_doc

Retrieve a currently uploaded file

$tx->content(
 login       => 'testdrive',
 password    => '123qwe',
 mercahntid  => '123456',
 case_id     => '001',
 filename    => 'mydoc.pdf',
);
$tx->chargeback_retrieve_support_doc();
$myFileData = $tx->{'fileContent'};

chargeback_delete_support_doc

Delete a currently uploaded file. Follows the same format as chargeback_retrieve_support_doc

chargeback_upload_support_doc

Upload a new file

$tx->content(
 login       => 'testdrive',
 password    => '123qwe',
 mercahntid  => '123456',
 case_id     => '001',
 filename    => 'mydoc.pdf',
 filecontent => $binaryPdfData,
 mimetype    => 'applicatoin/pdf',
);
$tx->chargeback_upload_support_doc();

chargeback_replace_support_doc

Replace a previously uploaded file. Follows the same format as chargeback_upload_support_doc

list_support_docs

Return a hashref that contains a list of files that already exist on the server.

$tx->content(
 login       => 'testdrive',
 password    => '123qwe',
 mercahntid  => '123456',
 case_id     => '001',
);
my $ret = $tx->chargeback_list_support_docs();

Currently this returns in this format

$ret = {
  'file1' => {},
  'file2' => {},
};

Litle does not currently send any file attributes. However the hash is built for future expansion.

add_item

A new method, not supported under BOP yet, but interface to adding multiple entries, so we can write and interface with batches

$tx->add_item( \%content );

AUTHORS

Jason Hall, <jayce at lug-nut.com>

Jason Terry

UNIMPLEMENTED

Certain features are not yet implemented (no current personal business need), though the capability of support is there, and the test data for the verification suite is there.

Force Capture
Capture Given Auth
3DS
billMeLater

BUGS

Please report any bugs or feature requests to bug-business-onlinepayment-litle at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Business-OnlinePayment-Litle. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

You may also add to the code via github, at http://github.com/Jayceh/Business--OnlinePayment--Litle.git

SUPPORT

You can find documentation for this module with the perldoc command.

perldoc Business::OnlinePayment::Litle

You can also look for information at:

http://www.litle.com/

ACKNOWLEDGEMENTS

Heavily based on Jeff Finucane's l<Business::OnlinePayment::IPPay> because it also required dynamically writing XML formatted docs to a gateway.

COPYRIGHT & LICENSE

Copyright 2012 Jason Hall.

This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.

See http://dev.perl.org/licenses/ for more information.

SEE ALSO

perl(1). Business::OnlinePayment

1 POD Error

The following errors were encountered while parsing the POD:

Around line 1882:

=back without =over