NAME

Business::BalancedPayments - BalancedPayments API bindings

VERSION

version 0.0100

SYNOPSIS

use Business::BalancedPayments;

my $secret = 'abc123';
my $bp = Business::BalancedPayments->new(secret => $secret);

my $card = $bp->create_card({
    card_number      => "5105105105105100",
    expiration_month => 12,
    expiration_year  => 2020,
    security_code    => 123,
});

$bp->get_card($card->{id});

DESCRIPTION

This module provides bindings for the BalancedPayments API.

METHODS

get_card

get_card($id)

Returns the credit card for the given id.

Example response:

{ 
    account          => { ... },
    brand            => "MasterCard",
    card_type        => "mastercard",
    created_at       => "2012-06-07T11:00:40.003671Z",
    expiration_month => 12,
    expiration_year  => 2020,
    id               => "CC92QRQcwUCp5zpzEz7lXKS",
    is_valid         => 1,
    last_four        => 5100,
    name             => undef,
    uri              => "/v1/marketplaces/MK98f1/cards/CC92QRQcwUCp5zpzKS",
}

create_card

create_card({
    card_number      => "5105105105105100",
    expiration_month => 12,
    expiration_year  => 2020,
    security_code    => 123,
})

Creates a credit card. See "get_card" for an example response.

get_account

get_account($id)

Returns the account for the given id.

Example response:

{
    id                => "AC7A",
    uri               => "/v1/marketplaces/MK98/accounts/AC7A",
    email_address     => "naveed\@crowdtilt.com",
    meta              => {},
    name              => undef,
    roles             => [],
    created_at        => "2012-06-07T21:01:38.801460Z",
    bank_accounts_uri => "/v1/marketplaces/MK98/accounts/AC7A/bank_accounts",
    cards_uri         => "/v1/marketplaces/MK98/accounts/AC7A/cards",
    credits_uri       => "/v1/marketplaces/MK98/accounts/AC7A/credits",
    debits_uri        => "/v1/marketplaces/MK98/accounts/AC7A/debits",
    holds_uri         => "/v1/marketplaces/MK98/accounts/AC7A/holds",
    refunds_uri       => "/v1/marketplaces/MK98/accounts/AC7A/refunds",
    transactions_uri  => "/v1/marketplaces/MK98/accounts/AC7A/transactions",
}

get_account_by_email

get_account_by_email($email)

Returns the account for the given email address. See "get_account" for an example response.

create_account

create_account($account)
create_account($account, card => $card)

Creates an account. An account hashref is required. The account hashref must have an email_address field:

$bp->create_account({ email_address => 'bob@crowdtilt.com' });

It is possible to create an account and associate it with a credit card at the same time. You can do this in 2 ways. You can provide a card such as one returned by calling "get_card":

my $card = $bp->get_card($card_id);
$bp->create_account({ email_address => 'bob@crowdtilt.com' }, card => $card)

Alternatively, you can provide a card_uri inside the account hashref:

my $card = $bp->get_card($card_id);
$bp->create_account({
    email_address => 'bob@crowdtilt.com',
    card_uri      => $card->{uri},
});

Returns an account hashref. See "get_account" for an example response.

update_account

update_account($account)

Updates an account. It expects an account hashref, such as one returned by "get_account". The account hashref must contain a uri or id field.

add_card

add_card($card, account => $account)

Adds a card to an account. It expects a card hashref, such as one returned by "get_card", and an account hashref, such as one returned by "get_account".

Returns an account hashref. See "get_account" for an example response.

get_hold

get_hold($hold_id)

Returns the hold with the given id. Example response:

{
  id          => "HL5byxIzSvf0entZuO9eEsWJ",
  uri         => "/v1/marketplaces/MK98/holds/HL5byxIzSvf0entZuO9eEsWJ",
  amount      => 200,
  account     => { ... },
  created_at  => "2012-06-08T09:23:53.745746Z",
  debit       => undef,
  description => undef,
  expires_at  => "2012-06-15T09:23:53.705009Z",
  fee         => 35,
  is_void     => 0,
  meta        => {},
  source => {
    brand            => "MasterCard",
    card_type        => "mastercard",
    created_at       => "2012-06-07T11:00:40.003671Z",
    expiration_month => 12,
    expiration_year  => 2020,
    id               => "CC92QRQcwUCp5zpzEz7lXKS",
    is_valid         => 1,
    last_four        => 5100,
    name             => undef,
    uri => "/v1/marketplaces/MK98/accounts/AC7A/cards/CC92QRQcwUCp5zpzEz7lXKS",
  },
}

create_hold

create_hold($hold, account => $account)
create_hold($hold, card => $card)

Creates a hold for the given account. It expects a hold hashref which at least contains an amount field. The amount must be an integer value >= 200.

An account or card must be provided. If an account is provided, Balanced defaults to charging the most recently added card for the account.

my $account = $bp->get_account($account_id);
$bp->create_hold ({ account => 250 }, account => $account);

You can pass in a card if you want to charge a specific card:

my $card = bp->get_card($card_id);
$bp->create_hold({ amount => 250 }, card => $card);

See "get_hold" for an example response.

capture_hold

capture_hold($hold)

Capturing a hold will create a debit representing the flow of funds from the buyer's account to your marketplace.

my $hold = $bp->get_hold($hold_id);
$bp->capture_hold($hold);

Returns a debit hashref. Example response:

{
  id                      => "WD2Lpzyz8Okbhx2Nbw7YuTP3",
  uri                     => "/v1/marketplaces/MK98/debits/WD2L",
  amount                  => 50,
  appears_on_statement_as => "example.com",
  available_at            => "2012-06-08T09:57:27.686977Z",
  created_at              => "2012-06-08T09:57:27.750828Z",
  description             => undef,
  fee                     => 1,
  meta                    => {},
  hold                    => { ... },
  account                 => { ... },
  refunds_uri             => "/v1/marketplaces/MK98/debits/WD2L/refunds",
  source => {
    brand            => "MasterCard",
    card_type        => "mastercard",
    created_at       => "2012-06-07T11:00:40.003671Z",
    expiration_month => 12,
    expiration_year  => 2020,
    id               => "CC92QRQcwUCp5zpzEz7lXKS",
    is_valid         => 1,
    last_four        => 5100,
    name             => undef,
    uri => "/v1/marketplaces/MK98/accounts/AC7A/cards/CC92QRQcwUCp5zpzEz7lXKS",
  },
  transaction_number => "W476-365-3767",
}

void_hold

void_hold($hold)

Voids a hold.

my $hold = $bp->get_hold($hold_id);
$bp->void_hold($hold);

Returns a hold hashref. See "get_hold" for an example response.

refund_debit

refund_debit($debit)

Refunds a debit. If no amount is found in the debit hashref, then Balanced refunds the entire amount.

my $account = $bp->get_account($account_id);
my $debit = $bp->capture_hold(
    $bp->create_hold({ amount => 305 }, account => $account)
);
$bp->refund_debit($debit);

Example response:

{
    id                      => "RFrFB30adjtze8HSIoghLPr",
    uri                     => "/v1/marketplaces/MK98/refunds/RFrFB30adLPr",
    amount                  => 305,
    created_at              => "2012-06-11T11:31:59.414827Z",
    description             => undef,
    fee                     => -10,
    meta                    => {},
    transaction_number      => "RF536-609-0270",
    appears_on_statement_as => "example.com",
    account                 => { ... },
    debit                   => { ... },
}

get_bank_account

get_bank_account($id)

Returns the bank account for the given id.

Example response:

{
    id          =>  "BA3gES",
    uri         =>  "/v1/marketplaces/MK98/bank_accounts/BA3gES",
    name        =>  "WHC III Checking",
    bank_name   =>  "SAN MATEO CREDIT UNION",
    bank_code   =>  321174851,
    last_four   =>  1234,
    created_at  =>  "2012-06-12T15:00:59.248638Z",
    is_valid    =>  1,
    account     =>  { ... },
}

create_bank_account

create_bank_account($bank_account)

Creates a bank account. A bank account hashref is required:

$bp->create_bank_account({
    name           => "WHC III Checking",
    account_number => "12341234",
    bank_code      => "321174851",
});

Returns a bank account hashref. See "get_bank_account" for an example response.

add_bank_account

add_bank_account($bank_account, account => $account)

Adds a bank account to an account. It expects a bank account hashref and an account hashref:

my $account = $bp->get_account($account_id);
$bp->add_bank_accounti(
    {
        name           => "WHC III Checking",
        account_number => "12341234",
        bank_code      => "321174851",
    },
    account => $account
);

This operation implicitly adds the "merchant" role to the account.

Returns a bank account hashref. See "get_bank_account" for an example response.

update_bank_account

update_bank_account($bank_account)

Updates a bank account. A bank account hashref must be provided which must contain an id or uri for the bank account. Balanced only allows you to update the is_valid and meta fields. You may invalidate a bank account by passing is_valid with a false value. Once a bank account has been invalidated it cannot be re-activated.

$bp->update_bank_account({
    id       => 'BA3gES',
    is_valid => 0,
    meta     => { foo => 'bar' },
});

Returns a bank account hashref. See "get_bank_account" for an example response.

invalidate_bank_account

invalidate_bank_account($bank_account_id);

Invalidates a bank account. A bank account id is required. This is a convenience method that does the equivalent of:

update_bank_account({ id => $bank_id, is_valid => 0 });

Returns a bank account hashref. See "get_bank_account" for an example response.

create_credit

create_credit($credit, account => $account)
create_credit($credit, bank_account => $bank_account)

Creates a credit. This is a way of sending money to merchant accounts. The credit hashref should at least contain an amount field. An account or bank account hashref is required. You may pass in a bank account if you would like to specify a specific bank account to send money to.

my $bank_account = $bp->get_bank_account($bank_account_id);
$bp->create_credit({ amount => 50 }, bank_account => $bank_account);

If an account is provided, Balanced will default to crediting the most recently added bank account. The account should have the merchant role.

my $account = $bp->get_account($account_id);
$bp->create_credit({ amount => 50 }, account => $account);

Returnds a credit hashref. Example response:

{
    id                  => "CR4GkfkOzYNBjFXW5Mxtpn1I",
    uri                 => "/v1/marketplaces/MK98/credits/CR4Gkf",
    amount              => 50,
    created_at          => "2012-06-12T18:51:21.097085Z",
    description         => undef,
    meta                => {},
    transaction_number  => "CR382-740-3389",
    account             => { ... },
    destination         => {
        bank_code  => 321174851,
        bank_name  => "SAN MATEO CREDIT UNION",
        created_at => "2012-06-12T15:00:59.248638Z",
        id         => "BA3gESxjg9yO61fj3CVUhGQm",
        is_valid   => 1,
        last_four  => 1234,
        name       => "WHC III Checking",
        uri => "/v1/marketplaces/MK98/accounts/AC78/bank_accounts/BA3g",
    },
}

AUTHORS

  • Naveed Massjouni <naveedm9@gmail.com>

  • Khaled Hussein <khaled.hussein@gmail.com>

COPYRIGHT AND LICENSE

This software is copyright (c) 2012 by Crowdtilt, Inc..

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