NAME

   Net-Flotum - use Flotum as your payment gateway

SYNOPSIS

       use Net::Flotum;

       $flotum = Net::Flotum->new(
           merchant_api_key => 'foobar',
       );

       # returns a Net::Flotum::Object::Customer
       $customer = $flotum->new_customer(

           name  => 'name here',
           remote_id => 'your id here',
           legal_document => '...',
           default_address_neighbourhood => '...'
       );

       # try to load field 'foobar' from $customer
       $customer->foobar

       # set customer new name
       $customer->update( name => 'new name' )

       # returns a Net::Flotum::Object::Customer
       $customer = $flotum->load_customer(

           # via remote_id
           remote_id => 'foobar',
           # or via id
           id => '0b912879-7c7b-42a1-8f49-722f13b67ae6'

           # lazy load (only works with `id`, lazy loading with `remote_id` is not supported)
           lazy => 1

       );

       # returns a hash reference containing details for creating an credit card.
       $http_description = $customer->new_credit_card();
       # something like that
       {
           accept     :  "application/json",
           fields     :  {
               address_city         :  "?Str",
               address_inputed_at   :  "?GmtDateTime",
               address_name         :  "?Str",
               address_neighbourhood:  "?Str",
               address_number       :  "?Str",
               address_observation  :  "?Str",
               address_state        :  "?Str",
               address_street       :  "?Str",
               address_zip          :  "?Str",
               brand                :  "*Brand",
               csc                  :  "*CSC",
               legal_document       :  "*Str",
               name_on_card         :  "*Str",
               number               :  "*CreditCard",
               validity             :  "*YYYYDD"
           },
           href       :  "https://default.flotum.com/customers/9baa2e37-2cb0-4c5c-9fe0-b2d91fdd53fe/credit-cards/?api_key=xxxx",
           method     :  "POST",
           valid_until:  1448902516
       }
       # ? means not required
       # * means required.
       # Str = Any String, CreditCard = credit card number, YYYYMD = Year+Month (2 pad)
       # Brands acceptance may vary, but may be one or more of bellow:
       # visa|mastercard|discover|americanexpress|jcb|enroute|bankcard|solo|chinaunionpay|laser|isracard|aura|elo


       # returns a list of Net::Flotum::Object::CreditCard
       @credit_cards = $customer->list_credit_cards();

       # Creating a charge.
       my $charge = $customer->new_charge(
           amount   => 100,
           currency => 'bra',
           metadata => {
               'Please use' => 'The way you need',
               'but'        => 'Do not use more than 10000 bytes after encoded in JSON',
           }
       );

       # Doing payment.
       my $payment = $charge->payment(
           customer_credit_card_id => $customer_credit_card_id,
           csc_check               => '000',
       );

       # Capture.
       my $capture = $charge->capture(description => "is optional");
       print $capture->{transaction_status} . "\n"; # authorized

       # Refund.
       my $refund = $charge->refund();
       print $refund->{status} . "\n";             # aborted
       print $refund->{transaction_status} . "\n"; # in-cancellation

DESCRIPTION

   this is WIP work, please check this page later! Flotum is currently
   only being used on eokoe.com startups.

   Flotum is a solution for storing credit card information and creating
   charges against it. It allow you to change between operators (Stripe,
   Paypal, etc) while keeping your customer credit cards in one place.

AUTHOR

   Renato CRON <[email protected]>

COPYRIGHT

   Copyright 2015-2016 Renato CRON

   Owing to http://eokoe.com

LICENSE

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

SEE ALSO

   Business::Payment Business::OnlinePayment