=head1 NAME

WebService::MinFraud::Example - MaxMind minFraud client example

=head1 EXAMPLE

Here is an example using the client to submit a request of transaction
data to the minFraud service.  You can provide any subset of the C<< $request >>
so long as you provide a C<< $request->{device}{ip_address} >>.  Typically,
the more information that you provide, the more confident you can be in the risk
score.

    use 5.010;

    use Data::Dumper;

    use WebService::MinFraud::Client;

    my $client = WebService::MinFraud::Client->new(
        user_id     => 42,
        license_key => 'abcdef123456',
    );

    my $request = {
       account => {
           user_id      => '3132',
           username_md5 => '570a90bfbf8c7eab5dc5d4e26832d5b1'
       },
       billing => {
           address_2          => 'Unit 5',
           region             => 'CT',
           company            => 'Company',
           phone_country_code => '1',
           phone_number       => '323-123-4321',
           address            => '101 Address Rd.',
           last_name          => 'Last',
           country            => 'US',
           city               => 'City of Thorns',
           postal             => '06510',
           first_name         => 'First'
       },
       credit_card => {
           bank_phone_country_code => '1',
           avs_result              => 'Y',
           bank_phone_number       => '800-342-1232',
           last_4_digits           => '7643',
           cvv_result              => 'N',
           bank_name               => 'Bank of No Hope',
           issuer_id_number        => '323132'
       },
       device => {
           accept_language => 'en-US,en;q=0.8',
           ip_address      => '81.2.69.160',
           user_agent =>
               'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36',
       },
       email => {
           address => '977577b140bfb7c516e4746204fbdb01',
           domain  => 'maxmind.com'
       },
       event => {
           shop_id        => 's2123',
           type           => 'purchase',
           transaction_id => 'txn3134133',
           time           => '2014-04-12T23:20:50.052+00:00'
       },
       order => {
           affiliate_id    => 'af12',
           referrer_uri    => 'http://www.amazon.com/',
           subaffiliate_id => 'saf42',
           discount_code   => 'FIRST',
           currency        => 'USD',
           amount          => 323.21
       },
       payment => {
           decline_code   => 'invalid number',
           was_authorized => 0,
           processor      => 'stripe'
       },
       shipping => {
           city               => 'Nowhere',
           postal             => '73003',
           last_name          => 'ShipLast',
           country            => 'US',
           phone_number       => '403-321-2323',
           delivery_speed     => 'same_day',
           address_2          => 'St. 43',
           phone_country_code => '1',
           company            => 'ShipCo',
           address            => '322 Ship Addr. Ln.',
           region             => 'OK',
           first_name         => 'ShipFirst'
       },
       shopping_cart => [
           {
               category => 'pets',
               quantity => 2,
               price    => 20.43,
               item_id  => 'ad23232'
           },
           {
               category => 'beauty',
               quantity => 1,
               price    => 100.0,
               item_id  => 'bst112'
           }
       ],
    };

    my $score_response = $client->score($request);
    # say Dumper $score_response;

    say "Transaction risk score: ", $score_response->risk_score;
    say "Request id: ",$score_response->id;
    say "Credits Remaining: ",$score_response->credits_remaining;
    # output:
    # Transaction risk score: 5.84
    # Request id: 96A5C322-1B86-11E5-A3D3-72F613C364DD
    # Credits Remaining: 299923


    my $insights_response = $client->insights($request);
    # say Dumper $insights_response;

    say "Transaction risk score: ", $insights_response->risk_score;
    say "IP Address risk score: ", $insights_response->ip_address->risk;
    # output:
    # Transaction risk score: 5.84
    # IP Address risk score: 0.01
