Business-TrueLayer
view release on metacpan or search on metacpan
lib/Business/TrueLayer/Payment/Method.pm view on Meta::CPAN
package Business::TrueLayer::Payment::Method;
=head1 NAME
Business::TrueLayer::Payment::Method - class representing a payment_method
as used in the TrueLayer v3 API.
=head1 SYNOPSIS
my $PaymentMethod = Business::TrueLayer::Payment::Method->new(
name => ...
);
=cut
use strict;
use warnings;
use feature qw/ signatures postderef /;
use Moose;
use MooseX::Aliases;
use Moose::Util::TypeConstraints;
no warnings qw/ experimental::signatures experimental::postderef /;
with 'Business::TrueLayer::Types::Beneficiary';
use Business::TrueLayer::Provider;
use namespace::autoclean;
=head1 ATTRIBUTES
=over
=item type (Str)
=item beneficiary
A L<Business::TrueLayer::Beneficiary> object. Hash refs will be coerced.
=item provider
A L<Business::TrueLayer::Provider> object. Hash refs will be coerced.
=back
=cut
has [ qw/ type / ] => (
is => 'ro',
isa => 'Str',
required => 1,
);
has [ qw/ mandate_id / ] => (
is => 'ro',
isa => 'Str',
required => 0,
);
coerce 'Business::TrueLayer::Provider'
=> from 'HashRef'
=> via {
Business::TrueLayer::Provider->new( %{ $_ } );
}
;
has provider => (
is => 'ro',
isa => 'Business::TrueLayer::Provider',
coerce => 1,
required => 0,
alias => 'provider_selection',
);
has beneficiary => (
is => 'ro',
isa => 'Business::TrueLayer::Beneficiary',
coerce => 1,
required => 0,
);
sub BUILD {
my ( $self ) = @_;
# the type defines the requirement for some of the
# attributes of this object
if ( $self->is_bank_transfer ) {
$self->beneficiary || die "payment_method of type 'bank_transfer'"
( run in 2.073 seconds using v1.01-cache-2.11-cpan-d8267643d1d )