Business-CPI

 view release on metacpan or  search on metacpan

lib/Business/CPI/Gateway/Test.pm  view on Meta::CPAN


        $i++;
    }

    $i = 1;

    foreach my $receiver (@{ $cart->_receivers }) {
        push @hidden_inputs,
          (
            "receiver${i}_id"      => $receiver->account->gateway_id,
            "receiver${i}_percent" => sprintf("%.2f", 0+$receiver->percent_amount),
          );
        $i++;
    }

    return @hidden_inputs;
}

# TODO
# use SQLite?
# sub get_notification_details {}

lib/Business/CPI/Role/Receiver.pm  view on Meta::CPAN

    is      => 'rw',
    isa     => Bool,
);

has fixed_amount => (
    is     => 'rw',
    isa    => Money,
    coerce => Money->coercion,
);

has percent_amount => (
    is     => 'rw',
    coerce => sub { 0 + $_[0] }
);

around BUILDARGS => sub {
    my $orig = shift;
    my $self = shift;

    my $args = $self->$orig(@_);

lib/Business/CPI/Role/Receiver.pm  view on Meta::CPAN


    # when building a cart
    my $cart = $cpi->new_cart({
        ...
        receivers => [
            {
                # alias for account.gateway_id
                gateway_id      => 2313,

                fixed_amount    => 50.00,
                percent_amount  => 5.00,
                pay_gateway_fee => 1,
            },
            {
                account         => $cpi->account_class->new({ ... }),
                fixed_amount    => 250.00,
                pay_gateway_fee => 0,
            },
        ],
    });

=head1 DESCRIPTION

This role is meant to be included by the class which represents Receivers in
the gateway, such as L<Business::CPI::Base::Receiver>. A Receiver is an account
in the gateway which is going to receive a percentage or fixed amount of the
payment being made.

=head1 ATTRIBUTES

=head2 account

B<MANDATORY>. A representation of the user account in the gateway. See
L<< the Account role | Business::CPI::Role::Account >> for details.

=head2 gateway_id (shortcut)

lib/Business/CPI/Role/Receiver.pm  view on Meta::CPAN

PayPal.

=head2 gateway_fee

The fee amount this receiver was charged by the gateway.

=head2 fixed_amount

The value, in the chosen currency, this receiver is getting of the payment.

=head2 percentual_amount

The percentage of the payment that this receiver is getting.

=head1 AUTHOR

André Walker <andre@andrewalker.net>

=head1 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

t/06receivers.t  view on Meta::CPAN

        address_number     => '25b',
        address_district   => 'My neighbourhood',
        address_complement => 'Apartment 05',
        address_city       => 'Happytown',
        address_state      => 'SP',
        address_country    => 'BR',
    },
    receivers => [
        {
            gateway_id => 'receiver1',
            percent_amount => 5,
        },
        {
            account => Business::CPI::Base::Account->new(gateway_id => 'receiver2', _gateway => $cpi),
            percent_amount => 5,
        },
    ],
});

$cart->add_item({
    id          => 1,
    description => 'Sample item',
    price       => 200,
    quantity    => 10,
});

t/06receivers.t  view on Meta::CPAN

is( get_value_for($form, 'buyer_name'),     'Mr. Buyer',                'form value buyer_name is correct' );
is( get_value_for($form, 'buyer_email'),    'buyer@andrewalker.net',    'form value buyer_email is correct' );
is( get_value_for($form, 'encoding'),       'UTF-8',                    'form value encoding is correct' );

is( get_value_for($form, 'item1_id'),        '1',                        'form value item1_id is correct' );
is( get_value_for($form, 'item1_desc'),      'Sample item',              'form value item1_desc is correct' );
is( get_value_for($form, 'item1_price'),     '200.00',                   'form value item1_price is correct' );
is( get_value_for($form, 'item1_qty'),       '10',                       'form value item1_qty is correct' );

is( get_value_for($form, 'receiver1_id'),      'receiver1',              'form value receiver1_id is correct' );
is( get_value_for($form, 'receiver1_percent'), '5.00',                   'form value receiver1_percent is correct' );

is( get_value_for($form, 'receiver2_id'),      'receiver2',              'form value receiver2_id is correct' );
is( get_value_for($form, 'receiver2_percent'), '5.00',                   'form value receiver2_percent is correct' );

done_testing;

sub get_value_for {
    my ($form, $name) = @_;
    return $form->look_down(_tag => 'input', name => $name )->attr('value');
}



( run in 0.363 second using v1.01-cache-2.11-cpan-709fd43a63f )