BaiduService.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. namespace App\Services\Common;
  3. use GuzzleHttp\Client;
  4. use Illuminate\Support\Facades\Cache;
  5. /**
  6. * 百度智能云
  7. * Class BaiduService
  8. * @package App\Services\Common
  9. */
  10. class BaiduService
  11. {
  12. protected $url = "https://aip.baidubce.com/";
  13. protected $appid;
  14. protected $appkey;
  15. protected $httpClient;
  16. /**
  17. * BaiduService constructor.
  18. */
  19. public function __construct()
  20. {
  21. $this->httpClient=new Client([
  22. 'http_errors' => false
  23. ]);
  24. $this->appid=config('aix.fangyi.fangyi_zhaokao.fangyi_zhaokao.client_id');
  25. $this->appkey=config('aix.fangyi.fangyi_zhaokao.fangyi_zhaokao.client_secret');
  26. }
  27. public function getAccessToken()
  28. {
  29. $access_token = Cache::get('baidu_access_token');
  30. if (empty($access_token)) {
  31. $uri=$this->url."oauth/2.0/token?grant_type=client_credentials&client_id=$this->appid&client_secret=$this->appkey";
  32. $resopnse = $this->httpClient->get($uri);
  33. //$curl = new CurlService();
  34. //$resopnse= $curl->get($uri);
  35. $result = json_decode($resopnse->getBody()->getContents(), true);
  36. Cache::put("baidu_access_token", $result['access_token'], 24*60*29);
  37. return $result['access_token'];
  38. }
  39. return $access_token;
  40. }
  41. public function health_code($image, $options=array())
  42. {
  43. $data = array();
  44. $data['image'] = base64_encode($image);
  45. $data = array_merge($data, $options);
  46. $access_token = $this->getAccessToken();
  47. $resopnse = $this->httpClient->post($this->url . "rest/2.0/ocr/v1/health_code?access_token=".$access_token,['form_params' => $data]);
  48. return json_decode($resopnse->getBody()->getContents(),true);
  49. }
  50. public function trip_code($image, $options=array())
  51. {
  52. $data = array();
  53. $data['image'] = base64_encode($image);
  54. $data = array_merge($data, $options);
  55. $access_token = $this->getAccessToken();
  56. $resopnse = $this->httpClient->post($this->url . "rest/2.0/ocr/v1/travel_card?access_token=".$access_token,['form_params' => $data]);
  57. return json_decode($resopnse->getBody()->getContents(),true);
  58. }
  59. }