NAME

Business::CPI::Gateway::Base - Father of all gateways

VERSION

version 0.924

ATTRIBUTES

driver_name

The name of the driver for this gateway. This is built automatically, but can be customized.

Example: for Business::CPI::Gateway::TestGateway, the driver name will be TestGateway.

log

Provide a logger to the gateway. It's the user's responsibility to configure the logger. By default, nothing is logged. You could set this to a Log::Log4perl object, for instance, to get full logging.

item_class

The class for the items (products) being purchased. Defaults to Business::CPI::${driver_name}::Item if it exists, or Business::CPI::Base::Item otherwise.

cart_class

The class for the shopping cart (the complete order). Defaults to Business::CPI::${driver_name}::Cart if it exists, or Business::CPI::Base::Cart otherwise.

buyer_class

The class for the buyer (the sender). Defaults to Business::CPI::${driver_name}::Buyer if it exists, or Business::CPI::Base::Buyer otherwise.

account_class

The class for the accounts. Defaults to Business::CPI::${driver_name}::Account if it exists, or Business::CPI::Base::Account otherwise.

account_address_class

The class for the addresses for the accounts. Defaults to Business::CPI::${driver_name}::Account::Address if it exists, or Business::CPI::Base::Account::Address otherwise.

account_business_class

The class for the business information of accounts. Defaults to Business::CPI::${driver_name}::Account::Business if it exists, or Business::CPI::Base::Account::Business otherwise.

receiver_id

ID, login or e-mail of the business owner. The way the gateway uniquely identifies the account owner.

currency

Currency code, such as BRL, EUR, USD, etc.

notification_url

The url for the gateway to postback, notifying payment changes.

return_url

The url for the customer to return to, after they finished the payment.

checkout_with_token

Boolean attribute to determine whether the form will hold the entire cart, or it will use the payment token generated for it. Defaults to false.

checkout_url

The url the application will post the form to. Defined by the gateway.

user_agent

User agent object (using LWP::UserAgent's API) to make requests to the gateway.

error

Whenever an exception is thrown, this attribute will also hold the exception object. This is because $@ may be overwritten before the exception is handled.

So one can use:

try {
    # do something that will trigger an exception
    $cpi->get_cart('something that doesnt exist');
}
catch {
    if ($cpi->error->type eq 'resource_not_found') {
        warn "Oops, it doesn't exist.";
    }

    # $cpi->error is the same as $_ and $_[0], unless someone messed up
    # with $@, e.g., using $SIG{__DIE__} or something nasty like that. In
    # that case, $_ is lost, but $cpi->error is safe.
}

most_recent_request

Whenever a request is made to the gateway, this attribute will hold the HTTP::Response object returned by the request.

Note: this is meant to be used for custom logging in the application. Usually, it's better to keep all the request-related details handled by Business::CPI, and abstract all the low-level details to the user. That includes logging, for the most part. The object returned by each method implemented by Business::CPI should be enough in most cases.

If you find yourself having to use this attribute too much, it probably means that gateway's Business::CPI driver is not doing what it should.

METHODS

new_cart

Creates a new Business::CPI::Role::Cart connected to this gateway.

new_account

Creates a new instance of an account. In general, you shouldn't need to use this, except for testing. Use create_account, instead, if your driver provides it.

get_checkout_code

Generates a payment token for a given cart. Do not call this method directly. Instead, see "get_checkout_code" in Business::CPI::Role::Cart.

get_notification_details

Get the payment notification (such as PayPal's IPN), and return a hashref with the details.

query_transactions

Search past transactions.

get_transaction_details

Get more details about a given transaction.

notify

This is supposed to be called when the gateway sends a notification about a payment status change to the application. Receives the request as a parameter (in a CGI-compatible format), and returns data about the payment. The format is still under discussion, and is soon to be documented.

map_object

Helper method for get_hidden_inputs to translate between Business::CPI and the gateway, using methods like checkout_form_items_map, checkout_form_buyer_map, etc.

AUTHOR

André Walker <andre@andrewalker.net>

COPYRIGHT AND LICENSE

This software is copyright (c) 2015 by André Walker.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.