+
+=head1 NAME
+
+Business::OnlinePayment::Bambora - Bambora backend for Business::OnlinePayment
+
+=head1 SYNOPSIS
+
+=head2 Card Transaction
+
+ use Business::OnlinePayment
+
+ my $tr = Business::OnlinePayment->new('Bambora');
+ $tr->content(
+ login => $BAMBORA_MERCHANT_ID,
+ password => $BAMBORA_API_KEY,
+
+ action => 'Normal Authorization',
+ amount => '13.37',
+
+ owner => 'Business OnlinePayment',
+ name => 'Mitch Jackson',
+ address => '1407 Graymalkin Lane',
+ city => 'Vancouver',
+ state => 'BC',
+ zip => '111 111',
+ country => 'CA',
+
+ invoice_number => time(),
+ card_number => '4030000010001234',
+ cvv2 => '123',
+ expiration => '1122',
+ phone => '415-462-1624',
+ email => 'mitch@freeside.biz',
+ );
+
+ $tr->submit;
+
+ if ( $tr->is_success ) {
+ print "Card processed successfully: ".$tr->authorization."\n";
+ } else {
+ print "Card was rejected: ".$tr->error_message."\n";
+ }
+
+=head2 Tokenize
+
+ use Business::OnlinePayment
+
+ my $tr = Business::OnlinePayment->new('Bambora');
+ $tr->content(
+ login => $BAMBORA_MERCHANT_ID,
+ password => $BAMBORA_API_KEY,
+
+ action => 'Tokenize',
+
+ owner => 'Business OnlinePayment',
+ name => 'Mitch Jackson',
+ address => '1407 Graymalkin Lane',
+ city => 'Vancouver',
+ state => 'BC',
+ zip => '111 111',
+ country => 'CA',
+
+ invoice_number => time(),
+ card_number => '4030000010001234',
+ cvv2 => '123',
+ expiration => '1122',
+ phone => '415-462-1624',
+ email => 'mitch@freeside.biz',
+ );
+
+ $tr->submit;
+
+ if ( $tr->is_success ) {
+ print "Card tokenized successfully: ".$tr->card_token."\n";
+ } else {
+ print "Card was rejected: ".$tr->error_message."\n";
+ }
+
+ my $tr_token = Business::OnlinePayment->new('Bambora');
+ $tr_token->content(
+ login => $BAMBORA_MERCHANT_ID,
+ password => $BAMBORA_API_KEY,
+
+ action => 'Normal Authorization',
+
+ card_token => $card_token,
+ amount => '7.77',
+ );
+
+ $tr_token->submit;
+
+ if ( $tr_token->is_success ) {
+ print "Card processed successfully: ".$tr_token->authorization."\n";
+ } else {
+ print "Card was rejected: ".$tr_token->error_message."\n";
+ }
+
+=head1 SUPPORTED TRANSACTION TYPES
+
+=head2 CC, Visa, Mastercard, American Express, Discover
+
+Content required: type, login, password, action, amount, card_number, expiration
+
+=head1 DESCRIPTION
+
+For detailed information see L<Business::OnlinePayment>
+
+=head1 METHODS AND FUNCTIONS
+
+See L<Business::OnlinePayment> for the complete list. The following methods
+either override the methods inherited from L<Business::OnlinePayment> or
+provide additional functions
+
+=head2 result_code
+
+Returns the response error code
+
+=head2 error_message
+
+Returns the response error description text
+
+=head2 response_page
+
+Returns the complete response from the Bambora API call
+
+=head2 response_decoded
+
+Returns hashref containing the decoded JSON response from the Bambora API call
+
+=head1 Handling of content(%content) data:
+
+=head2 action
+
+The following actions are valid
+
+ Normal Authorization
+ Authorization Only
+ Reverse Authorization
+ Post Authorization
+ Void
+ Credit
+ Tokenize
+
+=head1 Settings Bambora parameters from content(%content)
+
+The following rules are applied to map data from %content into
+a Bambora API request
+
+ Bambora Business::OnlinePayment-%content
+ -----------------------------------------------------
+ order_number invoice_number
+ amount amount
+
+ transaction_id order_number
+ customer_code card_token
+
+ card:number card_number
+ card:name owner OR name
+ card:expiry_month expiration
+ card:expiry_year expiration
+ card:cvd cvv2
+
+ billing:name name
+ billing:address_line1 address
+ billing:city city
+ billing:province state
+ billing:country country
+ billing:postal_code zip
+ billing:phone_number phone
+ billing:email_address email
+
+=head1 Bambora Authentication
+
+This module generates HTTP Authorization headers based on your
+Bambora API Access Pascode. You must generate an API Access Passcode
+within the Bambora merchant portal under the menu headings
+Administration > Account Settings > Order Settings
+
+If you intend to use tokenization, you must also copy the same
+API Access Passcode to the configuration page found at
+Configuration > Payment Profile Configuration
+
+=head1 Tokenization Implementation
+
+Many use tokenization is achieved via the Bambora Payment Profile feature
+
+The token created by this module represents the Bambora customer_code identifier
+for Payment Profile records
+
+This module does not support advanced management of the Payment Profile,
+such as storing multiple cards onto a single profile, or updating the
+stored profile detail
+
+Recommending configuration settings in your Bambora merchant portal:
+( as of the time of this module's writing )
+
+ Main Manu > Configuration > Payment Profile Configuration
+
+ General Settings:
+ - Uncheck "Requre unique order numbers"
+ - Uncheck "Do not allow profile to be created with billing information
+ duplicated from an existing profile"
+
+ Security Settings:
+ - Select: API Access Passcode (requierd for this API)
+ - The API Access Passcode will be your "password" using this module
+
+ Credit Card Settings
+ - Uncheck "Do not allow profile to be created with card data duplicated
+ from an existing profile""
+
+=cut
+