Net-Stripe
view release on metacpan or search on metacpan
lib/Net/Stripe/Customer.pm view on Meta::CPAN
package Net::Stripe::Customer;
$Net::Stripe::Customer::VERSION = '0.42';
use Moose;
use Kavorka;
use Net::Stripe::Plan;
use Net::Stripe::Token;
use Net::Stripe::Card;
use Net::Stripe::Discount;
use Net::Stripe::List;
extends 'Net::Stripe::Resource';
# ABSTRACT: represent a Customer object from Stripe
# Customer creation args
has 'email' => (is => 'rw', isa => 'Maybe[Str]');
has 'description' => (is => 'rw', isa => 'Maybe[Str]');
has 'trial_end' => (is => 'rw', isa => 'Maybe[Int|Str]');
has 'card' => (is => 'rw', isa => 'Maybe[Net::Stripe::Token|Net::Stripe::Card|StripeTokenId]');
has 'source' => (is => 'rw', isa => 'Maybe[Net::Stripe::Card|StripeTokenId|StripeSourceId]');
has 'quantity' => (is => 'rw', isa => 'Maybe[Int]');
has 'plan' => (is => 'rw', isa => 'Maybe[Net::Stripe::Plan|Str]');
has 'coupon' => (is => 'rw', isa => 'Maybe[Net::Stripe::Coupon|Str]');
has 'discount' => (is => 'rw', isa => 'Maybe[Net::Stripe::Discount]');
has 'metadata' => (is => 'rw', isa => 'Maybe[HashRef]');
has 'account_balance' => (is => 'rw', isa => 'Maybe[Int]', trigger => \&_account_balance_trigger);
has 'balance' => (is => 'rw', isa => 'Maybe[Int]', trigger => \&_balance_trigger);
has 'default_card' => (is => 'rw', isa => 'Maybe[Net::Stripe::Token|Net::Stripe::Card|Str]');
has 'default_source' => (is => 'rw', isa => 'Maybe[StripeCardId|StripeSourceId]');
# API object args
has 'id' => (is => 'ro', isa => 'Maybe[Str]');
has 'cards' => (is => 'ro', isa => 'Net::Stripe::List');
has 'deleted' => (is => 'ro', isa => 'Maybe[Bool|Object]', default => 0);
has 'sources' => (is => 'ro', isa => 'Net::Stripe::List');
has 'subscriptions' => (is => 'ro', isa => 'Net::Stripe::List');
has 'subscription' => (is => 'ro',
lazy => 1,
builder => '_build_subscription');
sub _build_subscription {
my $self = shift;
return $self->subscriptions->get(0);
}
method _account_balance_trigger(
Maybe[Int] $new_value!,
Maybe[Int] $old_value?,
) {
return unless defined( $new_value );
return if defined( $old_value ) && $old_value eq $new_value;
return if defined( $self->balance ) && $self->balance == $new_value;
$self->balance( $new_value );
}
method _balance_trigger(
Maybe[Int] $new_value!,
Maybe[Int] $old_value?,
) {
return unless defined( $new_value );
return if defined( $old_value ) && $old_value eq $new_value;
return if defined( $self->account_balance ) && $self->account_balance == $new_value;
$self->account_balance( $new_value );
}
method form_fields {
$self->account_balance( undef ) if
defined( $self->account_balance ) &&
defined( $self->balance ) &&
$self->account_balance == $self->balance;
return $self->form_fields_for(
qw/email description trial_end account_balance balance quantity card plan coupon
metadata default_card source default_source/
);
}
__PACKAGE__->meta->make_immutable;
1;
__END__
=pod
=head1 NAME
Net::Stripe::Customer - represent a Customer object from Stripe
=head1 VERSION
version 0.42
=head1 ATTRIBUTES
=head2 account_balance
Reader: account_balance
Writer: account_balance
Type: Maybe[Int]
=head2 balance
Reader: balance
Writer: balance
Type: Maybe[Int]
=head2 boolean_attributes
Reader: boolean_attributes
Type: ArrayRef[Str]
=head2 card
Reader: card
Writer: card
Type: Maybe[Net::Stripe::Card|Net::Stripe::Token|StripeTokenId]
=head2 cards
Reader: cards
Type: Net::Stripe::List
=head2 coupon
Reader: coupon
Writer: coupon
Type: Maybe[Net::Stripe::Coupon|Str]
=head2 default_card
Reader: default_card
Writer: default_card
Type: Maybe[Net::Stripe::Card|Net::Stripe::Token|Str]
=head2 default_source
Reader: default_source
Writer: default_source
Type: Maybe[StripeCardId|StripeSourceId]
=head2 deleted
Reader: deleted
Type: Maybe[Bool|Object]
=head2 description
Reader: description
Writer: description
Type: Maybe[Str]
=head2 discount
Reader: discount
Writer: discount
Type: Maybe[Net::Stripe::Discount]
=head2 email
Reader: email
Writer: email
Type: Maybe[Str]
=head2 id
Reader: id
Type: Maybe[Str]
=head2 metadata
Reader: metadata
Writer: metadata
Type: Maybe[HashRef]
=head2 plan
Reader: plan
Writer: plan
Type: Maybe[Net::Stripe::Plan|Str]
=head2 quantity
Reader: quantity
Writer: quantity
Type: Maybe[Int]
=head2 source
Reader: source
Writer: source
Type: Maybe[Net::Stripe::Card|StripeSourceId|StripeTokenId]
=head2 sources
Reader: sources
Type: Net::Stripe::List
=head2 subscription
Reader: subscription
=head2 subscriptions
Reader: subscriptions
Type: Net::Stripe::List
=head2 trial_end
Reader: trial_end
Writer: trial_end
Type: Maybe[Int|Str]
=head1 AUTHORS
=over 4
=item *
Luke Closs
=item *
Rusty Conover
=back
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2015 by Prime Radiant, Inc., (c) copyright 2014 Lucky Dinosaur LLC.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut
( run in 0.400 second using v1.01-cache-2.11-cpan-3989ada0592 )