Business-OnlinePayment-CyberSource
view release on metacpan or search on metacpan
lib/Business/OnlinePayment/CyberSource/Client.pm view on Meta::CPAN
package Business::OnlinePayment::CyberSource::Client;
use 5.010;
use strict;
use warnings;
use Moose;
use Module::Runtime qw( use_module );
use MooseX::Aliases;
use MooseX::StrictConstructor;
use Try::Tiny;
use Business::CyberSource::Client 0.007006;
use MooseX::Types::CyberSource qw(AVSResult);
use MooseX::Types::Moose qw(Bool HashRef Int Str);
use MooseX::Types::Common::String qw(NonEmptySimpleStr);
# ABSTRACT: CyberSource Client object for Business::OnlinePayment::CyberSource
our $VERSION = '3.000016'; # VERSION
#### Subroutine Definitions ####
# Sends an authorization request to CyberSource
# Accepts: A hash or reference to a hash of request parameters
# Returns: 1 if the transaction was successful and 0 otherwise
sub authorize {
my ( $self, @args ) = @_;
my $class = 'Business::CyberSource::Request::Authorization';
return $self->_authorize( $class, @args );
}
sub sale {
my ( $self, @args ) = @_;
my $class = 'Business::CyberSource::Request::Sale';
return $self->_authorize( $class, @args );
}
sub _authorize {
my ( $self, $class, @args ) = @_;
my $data = $self->_parse_input( @args );
# Validate input
my $message;
$message = 'No request data specified to authorize'
if scalar keys %$data == 0;
$message = 'purchase_totals data must be specified to authorize as a hashref'
unless $data->{purchase_totals} && ref $data->{purchase_totals} eq 'HASH';
$message = 'No payment medium specified to authorize'
unless $data->{card};
$message = 'No reference code specified to authorize'
unless $data->{reference_code};
Exception::Base->throw( $message ) if $message;
unless ( $self->require_avs() ) {
$data->{business_rules} = { ignore_avs_result => 1 };
}
my $request = try {
use_module( $class )->new( $data );
}
catch {
$message = shift;
( run in 2.137 seconds using v1.01-cache-2.11-cpan-ceb78f64989 )