2009-12-02 16:44:18 +00:00
|
|
|
package Business::PayPal::API::AuthorizationRequest;
|
|
|
|
|
|
|
|
use 5.008001;
|
|
|
|
use strict;
|
|
|
|
use warnings;
|
|
|
|
|
|
|
|
use SOAP::Lite 0.67;
|
2014-03-23 02:31:50 +00:00
|
|
|
|
2009-12-02 16:44:18 +00:00
|
|
|
#use SOAP::Lite +trace => 'debug';
|
|
|
|
use Business::PayPal::API ();
|
|
|
|
|
2014-03-23 02:31:50 +00:00
|
|
|
our @ISA = qw(Business::PayPal::API);
|
2009-12-02 16:44:18 +00:00
|
|
|
our @EXPORT_OK = qw(DoAuthorizationRequest);
|
|
|
|
|
|
|
|
sub DoAuthorizationRequest {
|
|
|
|
my $self = shift;
|
|
|
|
my %args = @_;
|
|
|
|
|
2014-03-23 02:31:50 +00:00
|
|
|
my %types = (
|
|
|
|
TransactionID => 'xs:string',
|
|
|
|
Amount => 'ebl:BasicAmountType',
|
|
|
|
);
|
2009-12-02 16:44:18 +00:00
|
|
|
|
|
|
|
$args{currencyID} ||= 'USD';
|
|
|
|
|
2014-03-23 02:31:50 +00:00
|
|
|
my @ref_trans = (
|
|
|
|
$self->version_req,
|
|
|
|
SOAP::Data->name( TransactionID => $args{TransactionID} )
|
|
|
|
->type( $types{TransactionID} ),
|
|
|
|
);
|
2009-12-02 16:44:18 +00:00
|
|
|
|
|
|
|
push @ref_trans,
|
2014-03-23 02:31:50 +00:00
|
|
|
SOAP::Data->name( Amount => $args{Amount} )->type( $types{Amount} )
|
|
|
|
->attr( { currencyID => $args{currencyID} } );
|
2009-12-02 16:44:18 +00:00
|
|
|
|
2014-03-23 02:31:50 +00:00
|
|
|
my $request
|
|
|
|
= SOAP::Data->name(
|
|
|
|
DoAuthorizationRequest => \SOAP::Data->value( @ref_trans ) )
|
|
|
|
->type( "ns:AuthorizationRequestType" );
|
2009-12-02 16:44:18 +00:00
|
|
|
|
|
|
|
my $som = $self->doCall( DoAuthorizationReq => $request )
|
2014-03-23 02:31:50 +00:00
|
|
|
or return;
|
2009-12-02 16:44:18 +00:00
|
|
|
|
|
|
|
my $path = '/Envelope/Body/DoAuthorizationResponse';
|
|
|
|
|
|
|
|
my %response = ();
|
2014-03-23 02:31:50 +00:00
|
|
|
unless ( $self->getBasic( $som, $path, \%response ) ) {
|
|
|
|
$self->getErrors( $som, $path, \%response );
|
2009-12-02 16:44:18 +00:00
|
|
|
return %response;
|
|
|
|
}
|
|
|
|
|
2014-03-23 02:31:50 +00:00
|
|
|
$self->getFields(
|
|
|
|
$som, $path,
|
|
|
|
\%response,
|
|
|
|
{ TransactionID => 'TransactionID',
|
|
|
|
Amount => 'Amount',
|
|
|
|
}
|
|
|
|
);
|
2009-12-02 16:44:18 +00:00
|
|
|
|
|
|
|
return %response;
|
|
|
|
}
|
|
|
|
|
|
|
|
1;
|
|
|
|
__END__
|
|
|
|
|
|
|
|
=head1 NAME
|
|
|
|
|
|
|
|
Business::PayPal::API::AuthorizationRequest - PayPal AuthorizationRequest API
|
|
|
|
|
|
|
|
=head1 SYNOPSIS
|
|
|
|
|
|
|
|
use Business::PayPal::API::AuthorizationRequest;
|
|
|
|
|
|
|
|
## see Business::PayPal::API documentation for parameters
|
|
|
|
my $pp = new Business::PayPal::API::DoAuthorizationRequest ( ... );
|
|
|
|
|
|
|
|
my %response = $pp->DoAuthorizationRequest (
|
|
|
|
TransactionID => $transid,
|
|
|
|
CurrencyID => $currencyID,
|
|
|
|
Amount => $amout,
|
|
|
|
);
|
|
|
|
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
|
|
|
|
B<Business::PayPal::API::AuthorizationRequest> implements PayPal's
|
|
|
|
B<AuthorizationRequest> API using SOAP::Lite to make direct API calls to
|
|
|
|
PayPal's SOAP API server. It also implements support for testing via
|
|
|
|
PayPal's I<sandbox>. Please see L<Business::PayPal::API> for details
|
|
|
|
on using the PayPal sandbox. This request is only used with "Order" type
|
|
|
|
Authorizations. An "Order" must first be placed using the ExpressCheckout
|
|
|
|
module. DirectPayment authorizations can only be used for "Basic"
|
|
|
|
authorizations.
|
|
|
|
|
|
|
|
=head2 AuthorizationRequest
|
|
|
|
|
|
|
|
Implements PayPal's B<AuthorizationRequest> API call. Supported
|
|
|
|
parameters include:
|
|
|
|
|
|
|
|
TransactionID
|
|
|
|
Amount
|
|
|
|
currencyID (defaults to 'USD' if not supplied)
|
|
|
|
|
|
|
|
as described in the PayPal "Web Services API Reference" document. The
|
|
|
|
default B<currencyID> setting is 'USD' if not otherwise specified.
|
|
|
|
|
|
|
|
Returns a hash containing the results of the transaction.
|
|
|
|
|
|
|
|
Example:
|
|
|
|
|
|
|
|
my %resp = $pp->DoAuthorizationRequest (
|
|
|
|
TransactionID => $trans_id,
|
|
|
|
Amount => '15.00',
|
|
|
|
);
|
|
|
|
|
|
|
|
unless( $resp{Ack} ne 'Success' ) {
|
|
|
|
for my $error ( @{$response{Errors}} ) {
|
|
|
|
warn "Error: " . $error->{LongMessage} . "\n";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
=head2 ERROR HANDLING
|
|
|
|
|
|
|
|
See the B<ERROR HANDLING> section of B<Business::PayPal::API> for
|
|
|
|
information on handling errors.
|
|
|
|
|
|
|
|
=head2 EXPORT
|
|
|
|
|
|
|
|
None by default.
|
|
|
|
|
|
|
|
=head1 SEE ALSO
|
|
|
|
|
|
|
|
L<https://developer.paypal.com/en_US/pdf/PP_APIReference.pdf>
|
|
|
|
|
|
|
|
=head1 AUTHOR
|
|
|
|
|
|
|
|
Danny Hembree E<lt>danny@dynamical.orgE<gt>
|
|
|
|
|
|
|
|
=head1 COPYRIGHT AND LICENSE
|
|
|
|
|
|
|
|
Copyright (C) 2006 by Danny Hembree
|
|
|
|
|
|
|
|
This library is free software; you can redistribute it and/or modify
|
|
|
|
it under the same terms as Perl itself, either Perl version 5.8.5 or,
|
|
|
|
at your option, any later version of Perl 5 you may have available.
|
|
|
|
|
|
|
|
|
|
|
|
=cut
|