Business-Tax-VAT-Validation

 view release on metacpan or  search on metacpan

META.json  view on Meta::CPAN

            "ExtUtils::MakeMaker" : "0"
         }
      },
      "configure" : {
         "requires" : {
            "ExtUtils::MakeMaker" : "0"
         }
      },
      "runtime" : {
         "requires" : {
            "HTTP::Request::Common" : "1",
            "JSON" : "0",
            "LWP::UserAgent" : "1",
            "perl" : "v5.8.9"
         }
      }
   },
   "release_status" : "stable",
   "resources" : {
      "bugtracker" : {
         "web" : "https://github.com/bigpresh/Business-Tax-VAT-Validation/issues"

META.yml  view on Meta::CPAN

license: gpl
meta-spec:
  url: http://module-build.sourceforge.net/META-spec-v1.4.html
  version: '1.4'
name: Business-Tax-VAT-Validation
no_index:
  directory:
    - t
    - inc
requires:
  HTTP::Request::Common: '1'
  JSON: '0'
  LWP::UserAgent: '1'
  perl: v5.8.9
resources:
  bugtracker: https://github.com/bigpresh/Business-Tax-VAT-Validation/issues
  homepage: https://github.com/bigpresh/Business-Tax-VAT-Validation/
  repository: https://github.com/bigpresh/Business-Tax-VAT-Validation
version: '1.24'
x_serialization_backend: 'CPAN::Meta::YAML version 0.018'

Makefile.PL  view on Meta::CPAN

use 5.005;
use ExtUtils::MakeMaker;
# See lib/ExtUtils/MakeMaker.pm for details of how to influence
# the contents of the Makefile that is written.
WriteMakefile(
    'NAME'		=> 'Business::Tax::VAT::Validation',
    'VERSION_FROM'	=> 'lib/Business/Tax/VAT/Validation.pm', # finds $VERSION
    'PREREQ_PM'		=>  {
				HTTP::Request::Common => 1.0,
				LWP::UserAgent	      => 1.0,
				JSON                  => 0,
				perl                  => 5.8.9,
                            }, 
    ABSTRACT_FROM    => 'lib/Business/Tax/VAT/Validation.pm',
    AUTHOR           => 'David Precious <davidp@preshweb.co.uk>',
    LICENSE          => 'GPL_3',
    META_MERGE => {
    resources => {
        repository => 'https://github.com/bigpresh/Business-Tax-VAT-Validation',

lib/Business/Tax/VAT/Validation.pm  view on Meta::CPAN

#  As usual with GNU software, this one is provided as is,                   #
#  WITHOUT ANY WARRANTY, without even the implied warranty of                #
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                      #
#                                                                            #
############################################################################
use strict;
use warnings;

our $VERSION = '1.24';

use HTTP::Request::Common qw(POST);
use LWP::UserAgent;
use JSON qw/ decode_json /;

=head1 NAME

Business::Tax::VAT::Validation - Validate EU VAT numbers against VIES/HMRC

=head1 SYNOPSIS

  use Business::Tax::VAT::Validation;

lib/Business/Tax/VAT/Validation.pm  view on Meta::CPAN

    } else {
        $ua->env_proxy;
    }
    $ua->agent( 'Business::Tax::VAT::Validation/'. $Business::Tax::VAT::Validation::VERSION );
    return $ua;
}

sub _check_vies {
  my ($self, $vatNumber, $countryCode) = @_;
  my $ua = $self->_get_ua();
  my $request = HTTP::Request->new(POST => $self->{baseurl});
  $request->content(_in_soap_envelope($vatNumber, $countryCode));
  $request->content_type("text/xml; charset=utf-8");

  my $response = $ua->request($request);

  return $countryCode . '-' . $vatNumber if $self->_is_res_ok( $response->code, $response->decoded_content );
}

sub _check_hmrc {
    my ($self, $vatNumber, $countryCode) = @_;
    my $ua = $self->_get_ua();

    my $request = HTTP::Request->new(GET => $self->{hmrc_baseurl}.$vatNumber);
    $request->header(Accept => 'application/vnd.hmrc.1.0+json');
    my $response = $ua->request($request);

    $self->{res} = $response->decoded_content;
    if ($response->code == 200) {
        my $data = decode_json($self->{res});
        $self->{information}->{name} = $data->{target}->{name};
        my $line = 1;
        my $address = "";
        while (defined $data->{target}->{address}->{"line$line"}) {



( run in 0.439 second using v1.01-cache-2.11-cpan-de7293f3b23 )