Business-CPI-Gateway-PayPal
view release on metacpan or search on metacpan
lib/Business/CPI/Gateway/PayPal/IPN.pm view on Meta::CPAN
package Business::CPI::Gateway::PayPal::IPN;
# ABSTRACT: Instant Payment Notifications
use Moo;
use LWP::UserAgent ();
our $VERSION = '0.905'; # VERSION
has is_valid => (
is => 'lazy',
default => sub {
my $self = shift;
for ($self->response->decoded_content) {
return 0 if /^INVALID$/;
return 1 if /^VERIFIED$/;
die "Vague response: " . $_;
}
}
);
has vars => (
is => 'lazy',
default => sub {
my $self = shift;
return { map { $_ => $self->query->param($_) } $self->query->param };
},
);
has gateway_url => (
is => 'ro',
default => sub { 'https://www.paypal.com/cgi-bin/webscr' },
);
has query => (
is => 'ro',
default => sub { require CGI; CGI->new() },
);
has user_agent_name => (
is => 'ro',
default => sub {
my $base = 'Business::CPI::Gateway::PayPal';
my $version = __PACKAGE__->VERSION;
return $version ? "$base/$version" : $base;
}
);
has user_agent => (
is => 'lazy',
default => sub {
my $self = shift;
my $ua = LWP::UserAgent->new();
$ua->agent( $self->user_agent_name );
return $ua;
},
);
has response => (
is => 'lazy',
default => sub {
my $self = shift;
my $ua = $self->user_agent;
my %vars = %{ $self->vars };
my $gtw = $self->gateway_url;
$vars{cmd} = "_notify-validate";
my $r = $ua->post( $gtw, \%vars );
( run in 0.703 second using v1.01-cache-2.11-cpan-d7f47b0818f )