doulu3808 2017-01-17 05:31
浏览 63

我想在PHP中集成Aadhaar卡身份验证。 我尝试使用此代码进行API访问,但我无法得到任何响应

I want to integrate the Aadhaar Card Authentication in PHP. I can try this code but not get response. How can get the response using this code other wise where I was wrong? I can find more details of Aadhaar card api but not get response.

<?php

$URL = "http://auth.uidai.gov.in/1.6/public/9/9/MH4hSkrev2h_Feu0lBRC8NI-iqzT299_qPSSstOFbNFTwWrie29ThDo";

$xml_data = '<?xml version="1.0"?>         
    <Auth xmlns="http://www.uidai.gov.in/authentication/uid-auth-request/1.0" 
          ver="1.5" tid="public" ac="public" sa="public" 
          lk="MKg8njN6O+QRUmYF+TrbBUCqlrCnbN/Ns6hYbnnaOk99e5UGNhhE/xQ=" uid="999999990019" 
          txn="GEO.11051880"> 
          <Skey ci="20131003">Nc6DrZKFk1oQXxfgnFUl0mmtYYIPl0RGaFd2oINkpChU1++xdddMx6Dlbz6mEYs3 
                IyzChGjRXN5/al9r0runFX8LspTfMchwpxaaDIOyIUguBoYmPUqJDqTQcwey6Ntc 
                TJWFSgOvBg+omUkdbK/9GOQ5KWWrN+E0A9JN0IPU4IJqJZmsA6ETZlVoZteYtoMI 
                Ucv53qmxNPOEmJ3s4BC3ppHRRWRFMUp/eW7DFJ33W+uInZB6yekKE0dz8fYeo03w 
                2JUT1wlafL7aseb04nv5tNEbllHWafmbMpbv2pXKr+WPgytjrygt1LagGqF4a5Mr 
                /UTNwsy4m/YwlkWN0QcYVw== 
          </Skey> 
          <Uses otp="n" pin="n" bio="n" pa="n" pfa="n" pi="y" /> 
          <Data>YOn05vg5qMwElULpEmdiH0j6rM1XWcbQN0n+CFNQeazouCgjyPBH/a2SwbFgq/fF 
                CYUm+the8gQyYC36VO49NLcNcD7WdMhweoiDYgJoCX/t87Kbq/ABoAetfX7OLAck 
                /mHrTmw8tsfJgo4xGSzKZKr+pVn1O8dDHJjwgptySr7vp2Ntj6ogu6B905rsyTWw 
                73iMgoILDHf5soM3Pvde+/XW5rJD9AIPQGhHnKirwkiAgNIhtWU6ttYg4t6gHHbZ 
                0gVBwgjRzM3sDWKzK0EnmA== 
          </Data> 
          <Hmac>xy+JPoVN9dsWVm4YPZFwhVBKcUzzCTVvAxikT6BT5EcPgzX2JkLFDls+kLoNMpWe 
          </Hmac> 
          <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> 
                <SignedInfo> 
                      <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> 
                      <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /> 
                      <Reference> 
                            <Transforms> 
                                  <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /> 
                            </Transforms> 
                            <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> 
                            <DigestValue>Idd9hQtO+YAR4bjfQpNxXQ/EvXc=</DigestValue> 
                      </Reference> 
                </SignedInfo> 
                <SignatureValue>SyFAqzqtJ/VTWcR5cdxoIcsa7GMmgJo7X2Rtr+CVYZLaL2myg3HgaasaT7tPOa95 
                      xYJwnwA/pl+S7ki+W/4Kq1nraV/wxArgE5hFTUFG8G/MOcuMy9Ajd1VPvuqMGvHA 
                      gzGfV+qTcU+1lhQscYnwJqqFmoViZO7NRVwPcfgadXs=</SignatureValue> 
                <KeyInfo> 
                      <X509Data> 
                            <X509Certificate>MIICfzCCAeigAwIBAgIGAbAh09VkMA0GCSqGSIb3DQEBBQUAMHoxCzAJBgNVBAYT 
                                  AklOMQswCQYDVQQIEwJLQTESMBAGA1UEBxMJQmFuZ2Fsb3JlMQ4wDAYDVQQKEwVV 
                                  SURBSTEeMBwGA1UECxMVQXV0aGVudGljYXRpb24gU2VydmVyMRowGAYDVQQDExFV 
                                  SURBSSBBdXRoIFNlcnZlcjAeFw0xMTA2MjgwNDQwNDRaFw0xMjA2MjgwNDQwNDRa 
                                  MGkxCzAJBgNVBAYTAklOMQswCQYDVQQIEwJLQTESMBAGA1UEBxMJQmFuZ2Fsb3Jl 
                                  MRMwEQYDVQQKEwpQdWJsaWMgQVVBMQ8wDQYDVQQLEwZQdWJsaWMxEzARBgNVBAMT 
                                  ClB1YmxpYyBBVUEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJBEgKhZZNmH 
                                  ejKTFaSg0Z/KN6kP98/FKpPkGTlkovJxa7KX0x74I++JhObM8SkRgCGR3DBK/YZB 
                                  o0ZCbvs9czTEoDA8CBMDSFLEP5z+Zi65hdNT9XQiaeN0sSY7N4cafsS/KH/LESbM 
                                  6I5OLvSGj10aQB8KDgwItvp/7xK6/Vu3AgMBAAGjITAfMB0GA1UdDgQWBBSd3qZJ 
                                  j5lPp+1zkJJCqyZoTLLWAzANBgkqhkiG9w0BAQUFAAOBgQBiGVbCITrygzpC+09u 
                                  R/l8w0hCInLusQMZeXgHcnxBGDSk1AQxKk5UfQmCwHNcRJMB5Zkj8+9n6T+/wx6D 
                                  tKDelktgIoo7w0EJ6MdVJ9Qzr5PJcYzX+ERgJEd/NNNVoPjFc2Al2odjToZdFN8+ 
                                  /upJnBH02TRb1Wq63OtcuyBIFA==</X509Certificate> 
                            <X509SubjectName>CN=Public AUA,OU=Public,O=Public 
                                  AUA,L=Bangalore,ST=KA,C=IN</X509SubjectName> 
                      </X509Data> 
                </KeyInfo> 
          </Signature> 
    </Auth>';

//setting the curl parameters.
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $URL);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/xml'));
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_data);

if (curl_errno($ch)) {
    // moving to display page to display curl errors
    echo curl_errno($ch);
    echo curl_error($ch);
} else {
    //getting response from server
    $response = curl_exec($ch);
    print_r($response);

    curl_close($ch);
}
?>
  • 写回答

2条回答 默认 最新

  • dreamice2013 2017-01-17 08:06
    关注

    In the above code you are sending request to version 1.6 while in XML data you have mentioned version 1.5 You are missing some parameters in xml data which is being sent and those missing data are mandatory. There are some key missing in the request section.

    I have solved this as per uidai guide. But haven't got successful response as you didn't provided the some keys and some keys you have provided are invalid.

    <?php
    /**
     * Read the documentation here
     * https://uidai.gov.in/images/FrontPageUpdates/aadhaar_authentication_api_1_6.pdf
     */
    $adhar_card_no = "";
    
    function buildUrl($adhar_card_no)
    {
        $host = "http://auth.uidai.gov.in";
        $version = 1.6;
        $aua = "";
        $asalk = "";
        $uid = str_split($adhar_card_no);
        $url =  $host."/".$version."/".$aua."/".$uid[0]."/".$uid[1]."/".$asalk;
        return $url;
    }
    
    function requestDataBuilder($uid)
    {
        $encrypted_encoded_session_key = "";
        $encrypted_pid_block = "";
        $sha256_pid_bloc_encrypted_encoded= "";
        $digital_aua_signatrure= "";
        /**
         * Authentication data to send request --Mandatory
         */
        $auth_data = [
            "uid" => $uid, //Adhaar Card No.
            "tid" => "", //Terminal Id for registered device else public
            "ac" => "", //10 char unique code, public for testing
            "sa" => "", //max length 10, same as ac possible
            "ver" => 1.6, //Current version
            "txn" => "", //AUA transaction  identifier. max length 50, not U*
            "lk" => "", //Valid License Key, max length 64
        ];
        /**
         * Uses data comprises of options as yes (y) or no (n) -- Mandatory
         */
        $uses_data = [
            "pi" => "n",
            "pa" => "n",
            "pfa" => "n",
            "bio" => "n",
            "bt" => "n",
            "pin" => "n",
            "otp" => "n"
        ];
        /**
         * Token data -- optional
         */
        $tkn_data = [
            "type" => "001", //only this option available for now which is mobile no.
            "value" => "" //Mobile no. 10 digit only no prefix
        ];
        /**
         * Meta Data Mandatory
         */
        $meta_data = [
            "udc" => $udc, //[vendorcode][date of deployment][serial number] max length 20
            "fdc" => "NA", //Fingerprint device code. use NA or NC or given code
            "idc" => "NA", //Iris device  code,  us na or NC
            "pip" => "NA", //Public IP address of the device, or NA
            "lot" => "P", //G -lat long format. p for pincode format
            "lov" => "110025" // value as per G and P- my pin change it
        ];
        /**
         * Skey data -- Mandatory
         */
        $skey_data = [
            "ci" => "", //Public key certificate Identifier --mandatory
            "ki" => "" //This is for advanced use only, --optional
        ];
    
        $format = '<Auth uid=”'.$auth_data['uid'].'” tid =”'.$auth_data['tid'].'” ac=”'.$auth_data['ac'].'” sa=”'.$auth_data['sa'].'” ver=”'.$auth_data['ver'].'” txn=”'.$auth_data['txn'].'” lk=”'.$auth_data['lk'].'”>';
        $format.= '<Uses pi=”'.$uses_data['pi'].'” pa=”'.$uses_data['pa'].'” pfa=”'.$uses_data['pfa'].'” bio=”'.$uses_data['bio'].'” bt=”'.$uses_data['bt'].'” pin=”'.$uses_data['pin'].'” otp=”'.$uses_data['otp'].'”/>';
        $format.= '<Tkn type=”'.$tkn_data['type'].'” value=”'.$tkn_data['value'].'”/>';
        $format.= '<Meta udc=”'.$meta_data['udc'].'” fdc=”'.$meta_data['fdc'].'” idc=”'.$meta_data['idc'].'” pip=”'.$meta_data['pip'].'” lot=”'.$meta_data['lot'].'” lov=”'.$meta_data['lov'].'”/>';
        $format.= '<Skey ci=”'.$skey_data['ci'].'” ki=”'.$skey_data['ci'].'”>'.$encrypted_encoded_session_key.'</Skey>';
        $format.= '<Data type=”X”>'.$encrypted_pid_block.'</Data>';
        $format.= '<Hmac>'.$sha256_pid_bloc_encrypted_encoded.'</Hmac>';
        $format.= '<Signature>'.$digital_aua_signatrure.'</Signature></Auth>';
        return $format;
    
    }
    $request_url = buildUrl($adhar_card_no);
    $data_to_send = requestDataBuilder($adhar_card_no);
    //setting the curl parameters.
    $ch = curl_init();
    $curl_options = [
        CURLOPT_URL => $request_url,
        CURLOPT_VERBOSE => 1,
        CURLOPT_SSL_VERIFYHOST => 0,
        CURLOPT_SSL_VERIFYPEER => 0,
        CURLOPT_POST => 1,
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_HTTPHEADER => array('Content-Type: application/xnl'),
        CURLOPT_POSTFIELDS => $data_to_send
    ];
    curl_setopt_array($ch, $curl_options);
    if (curl_errno($ch)) {
    // moving to display page to display curl errors
        echo curl_errno($ch) ;
        echo curl_error($ch);
    } else {
        //getting response from server
        $response = curl_exec($ch);
        print_r($response);
        curl_close($ch);
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了