Experian-IDAuth

 view release on metacpan or  search on metacpan

lib/Experian/IDAuth.pm  view on Meta::CPAN

package Experian::IDAuth;

use 5.010;
use strict;
use warnings;

our $VERSION = '2.53';

use Locale::Country;
use Path::Tiny;
use Syntax::Keyword::Try;
use WWW::Mechanize;
## no critic (DiscouragedModules)
use XML::Simple;
use XML::Twig;
use SOAP::Lite;
use File::MimeInfo::Magic;
use IO::Socket::SSL 'SSL_VERIFY_NONE';
use Carp;
use Digest::SHA qw(hmac_sha256_base64);

sub new {
    my ($class, %args) = @_;
    my $obj = bless {}, $class;
    $obj->set($obj->defaults, %args);
    return $obj;
}

sub defaults {
    my $self = shift;
    return (
        username      => 'experian_user',
        password      => '?',
        private_key   => 'private_key',
        public_key    => 'public_key',
        members_url   => 'https://proveid.experian.com',
        api_uri       => 'http://corpwsdl.oneninetwo',
        api_proxy     => 'https://xml.proveid.experian.com/IDSearch.cfc',
        header_ns_url => 'http://xml.proveid.experian.com/xsd/Headers',
        folder        => '/tmp/proveid',

        # if you're using a logger,
        #logger     => Log::Log4per::get_logger,
    );
}

sub set {
    my ($self, %args) = @_;
    $self->{$_} = $args{$_} for keys %args;
    return $self;
}

sub get_result {
    my $self = shift;

    my $search_option = $self->{search_option};

    croak "invalid search_option $search_option" if $search_option !~ /(?:ProveID_KYC|CheckID)/;

    $self->_do_192_authentication;

    return $self->_get_result_proveid if $search_option eq 'ProveID_KYC';

    return $self->_get_result_checkid;
}

sub save_pdf_result {
    my $self = shift;

    # Parse and convert the result to hash
    my $result = $self->_xml_as_hash or croak 'no xml result in place';

    # 192 reference which we should pass to 192 to download the result
    my $our_ref = $result->{OurReference} or croak "No 'OurReference'; invalid save-pdf request";

    my $url  = $self->{members_url};
    my $mech = WWW::Mechanize->new();
    $mech->ssl_opts(



( run in 0.691 second using v1.01-cache-2.11-cpan-39bf76dae61 )