1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | <?php //https协议是否需要验证证书 define( 'SSL_VERIFYPEER' , true); $key = "您申请的key,在会员中心->我的数据->对应数据的下方" ; $url = "https://v.1dq.com/api/Face/actionLiv" ; $param [ "appid" ]= "您的appid,在会员中心->安全设置->对应数据->appid" ; $param [ 'video_base64' ] = '' ; $param [ 'code' ] = '' ; $param [ 'save_face' ] = '' ; ksort( $param ); //对字符串进行字典(a-z)排序,需排除sign字段; $param [ "sign" ] = md5(urlencode(http_build_query( $param )). $key ); //生成sign //发送远程请求; $result = APIStore( $url , $param , true); if ( $result [ 'error_code' ] == 0) { //处理成功 echo $result [ 'reason' ]; } else { //处理失败 echo $result [ 'reason' ]; } //打印返回数据 print_r( $result ); /** * APIStore 获取数据 * @param $url 接口地址 * @param null $param 要发送的数据 * @param bool $ispost 是否采用POST发送,默认GET * @return mixed */ function APIStore( $url , $param = null, $ispost = false) { $curl = curl_init(); curl_setopt( $curl , CURLOPT_URL, $ispost ? $url : $url . '?' . http_build_query( $param )); //如果是https协议 if ( stripos ( $url , "https://" ) !== FALSE) { /** * 如果需要验证证书 */ if (SSL_VERIFYPEER) { //验证交换证书 curl_setopt( $curl , CURLOPT_SSL_VERIFYPEER, true); //检查SSL证书公用名是否存在,并且是否与提供的主机名匹配 curl_setopt( $curl , CURLOPT_SSL_VERIFYHOST, 2); //设置实现协议为TLS1.0版本 curl_setopt( $curl , CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1); //根证书文件路径,相对路径和绝对路径均可, //推荐使用绝对路径;为了安全证书文件最好不要和应用代码放在一起; //用户请保持更新 使用https接口需要设置该证书文件为可信任根证书, //以最大限度满足安全性(使用信任任何证书的方式并不安全)。 curl_setopt( $curl , CURLOPT_CAINFO, dirname( __FILE__ ) . '/cacert.pem' ); } /** * 如果不需要验证证书 */ else { curl_setopt( $curl , CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt( $curl , CURLOPT_SSL_VERIFYHOST, FALSE); //CURL_SSLVERSION_TLSv1 curl_setopt( $curl , CURLOPT_SSLVERSION, 1); } } //USERAGENT curl_setopt( $curl , CURLOPT_USERAGENT, 'APIStore' ); //超时时间 curl_setopt( $curl , CURLOPT_CONNECTTIMEOUT, 120); curl_setopt( $curl , CURLOPT_TIMEOUT, 120); //通过POST方式提交 if ( $ispost ) { curl_setopt( $curl , CURLOPT_POST, true); curl_setopt( $curl , CURLOPT_POSTFIELDS, http_build_query( $param )); } curl_setopt( $curl , CURLOPT_RETURNTRANSFER, 1); //返回内容 $callbcak = curl_exec( $curl ); //关闭,释放资源 curl_close( $curl ); //返回内容JSON_DECODE return json_decode( $callbcak , true); } |