|
@@ -0,0 +1,104 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+namespace app\common\util\SysSDK\Baidu;
|
|
|
+
|
|
|
+use think\facade\Log;
|
|
|
+
|
|
|
+class Identify {
|
|
|
+
|
|
|
+ private $vi_url = Config::get('baidu.request.vi_url'); //百度vi_url地址
|
|
|
+ private $viv_url = Config::get('baidu.request.viv_url');//百度viv_url地址
|
|
|
+
|
|
|
+ private $url = Config::get('baidu.request.oauth_url');//百度鉴权地址
|
|
|
+ private $client_id = Config::get('baidu.request.client_id');//百度鉴权client_id
|
|
|
+ private $client_secret = Config::get('baidu.request.client_secret');//百度鉴权client_id对应secret
|
|
|
+
|
|
|
+ //重新获取鉴权认证
|
|
|
+ public function refresh(){
|
|
|
+ $post_data['grant_type'] = 'client_credentials';
|
|
|
+ $post_data['client_id'] = $this->client_id;
|
|
|
+ $post_data['client_secret'] = $this->client_secret;
|
|
|
+ $o = "";
|
|
|
+ foreach ( $post_data as $k => $v )
|
|
|
+ {
|
|
|
+ $o.= "$k=" . urlencode( $v ). "&" ;
|
|
|
+ }
|
|
|
+ $post_data = substr($o,0,-1);
|
|
|
+
|
|
|
+ $data = $this->curl($this->url, $post_data);
|
|
|
+ Log::info(' get access_token result:'.json_encode($data));
|
|
|
+ return $data;
|
|
|
+ }
|
|
|
+
|
|
|
+ /*
|
|
|
+ * 发票识别
|
|
|
+ * access_token 百度 access_token 鉴权返回值
|
|
|
+ * files 发票图片文件
|
|
|
+ */
|
|
|
+ public function vat_invoice($access_token, $files){
|
|
|
+ $file_name_array = explode('.', $files);
|
|
|
+ if(count($file_name_array) < 2){
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ $suffix = $file_name_array[count($file_name_array)-1];
|
|
|
+ //判断文件后缀
|
|
|
+ if(in_array(strtolower($suffix), ['jpg','jpeg','png','bmp'])){
|
|
|
+ $param_type = 'image';
|
|
|
+ }
|
|
|
+ else if(strtolower($suffix) == 'pdf'){
|
|
|
+ $param_type = 'pdf_file';
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ $img = file_get_contents($files);
|
|
|
+ $img = base64_encode($img);
|
|
|
+ $param = array(
|
|
|
+ $param_type => $img
|
|
|
+ );
|
|
|
+ //这里也可以自己写curl方法调用
|
|
|
+ $data = $this->curl($this->vi_url.'?access_token='.$access_token, $param);
|
|
|
+ Log::info(' get result:'.json_encode($data));
|
|
|
+ return $data;
|
|
|
+ }
|
|
|
+
|
|
|
+ //发票验真
|
|
|
+ //access_token 百度 access_token 鉴权返回值
|
|
|
+ public function vat_invoice_verification($access_token, $invoice_code, $invoice_num, $invoice_date, $invoice_type, $check_code, $total_amount){
|
|
|
+ $bodys = array(
|
|
|
+ 'invoice_code' => $invoice_code,//"发票代码",
|
|
|
+ 'invoice_num' => $invoice_num,//"发票号码",
|
|
|
+ 'invoice_date' => $invoice_date,//"开票日期",
|
|
|
+ 'check_code' => $check_code,//"校验码。填写发票校验码后6位",
|
|
|
+ 'invoice_type' => $invoice_type,//"发票类型",
|
|
|
+ 'total_amount' => $total_amount,//"不含税金额"
|
|
|
+ );
|
|
|
+
|
|
|
+ $data = $this->curl($this->viv_url.'?access_token='.$access_token, $bodys);
|
|
|
+ Log::info(' get result:'.json_encode($data));
|
|
|
+ return $data;
|
|
|
+ }
|
|
|
+
|
|
|
+ private function curl($url = '', $param = '')
|
|
|
+ {
|
|
|
+ if (empty($url) || empty($param)) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ $postUrl = $url;
|
|
|
+ $curlPost = $param;
|
|
|
+ $curl = curl_init();//初始化curl
|
|
|
+ curl_setopt($curl, CURLOPT_URL, $postUrl);//抓取指定网页
|
|
|
+ curl_setopt($curl, CURLOPT_HEADER, 0);//设置header
|
|
|
+ curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
|
|
|
+ curl_setopt($curl, CURLOPT_POST, 1);//post提交方式
|
|
|
+ curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
|
|
|
+ $data = curl_exec($curl);//运行curl
|
|
|
+ //记录每次获取到的信息
|
|
|
+ Log::info(' get curl result:' . json_encode($data));
|
|
|
+ curl_close($curl);
|
|
|
+
|
|
|
+ return $data;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|