From 25ff64defeba6bcb70a1e35ce4d5b5d8eb432354 Mon Sep 17 00:00:00 2001 From: xuanchen <122383162@qq.com> Date: Fri, 4 Jun 2021 14:53:29 +0800 Subject: [PATCH] =?UTF-8?q?=E9=98=B6=E6=AE=B5=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- config/config.php | 29 ++++++- src/Action/CouponAction.php | 51 ++++++++++++ src/Action/Init.php | 149 ++++++++++++++++++++++++++++-------- src/Action/UrlAction.php | 36 +++++++++ src/PingAn.php | 20 ----- src/ServiceProvider.php | 4 +- src/WashCar.php | 42 ++++++++++ 8 files changed, 273 insertions(+), 60 deletions(-) create mode 100644 src/Action/CouponAction.php create mode 100644 src/Action/UrlAction.php delete mode 100644 src/PingAn.php create mode 100644 src/WashCar.php diff --git a/README.md b/README.md index 912c60a..8994563 100644 --- a/README.md +++ b/README.md @@ -1 +1 @@ -# 平安skd \ No newline at end of file +# 洗车券 \ No newline at end of file diff --git a/config/config.php b/config/config.php index dc38588..f5956b7 100644 --- a/config/config.php +++ b/config/config.php @@ -6,8 +6,31 @@ return [ * 平安洗车券 */ - 'appId' => 122121, - 'appSecret' => '122121', - 'apiVersion' => 'v2', + 'this_type' => 'test', + /** + * 测试环境参数 + */ + 'test' => [ + 'client_id' => env('WASH_CAR_APPID', ''),//就是 appId + 'client_secret' => env('WASH_CAR_SECRET', ''),// 就是 client_secret + 'apiVersion' => 'v2', + 'grant_type' => 'client_credentials', + 'tokenUri' => 'https://open.cyzl.com/beta/api/auth/oauth/token', + 'baseUri' => 'https://open.cyzl.com/beta/api', + 'urlKey' => env('WASH_CAR_URLKEY', ''),//免登陆跳转 + ], + + /** + * 生产环境参数 + */ + 'dev' => [ + 'client_id' => env('WASH_CAR_APPID', ''),//就是 appId + 'client_secret' => env('WASH_CAR_SECRET', ''),// 就是 client_secret + 'apiVersion' => 'v2', + 'grant_type' => 'client_credentials', + 'tokenUri' => 'https://open.cyzl.com/api/auth/oauth/token', + 'baseUri' => 'https://open.cyzl.com/api', + 'urlKey' => env('WASH_CAR_URLKEY', ''),//免登陆跳转 + ], ]; diff --git a/src/Action/CouponAction.php b/src/Action/CouponAction.php new file mode 100644 index 0000000..ad2a734 --- /dev/null +++ b/src/Action/CouponAction.php @@ -0,0 +1,51 @@ +config['baseUri'] . '/v2/rights/coupon/getCoupon'; + + $res = $this->http($url, $this->params); + dd($res); + } + + /** + * Notes: 查询 + * @Author: 玄尘 + * @Date : 2021/6/4 14:28 + */ + public function query() + { + $url = $this->config['baseUri'] . '/v2/rights/coupon/getCouponStatus'; + + $this->http($url, $this->params); + + return $this->getResponse(); + + } + + /** + * Notes: 取消优惠券 + * @Author: 玄尘 + * @Date : 2021/6/4 14:29 + */ + public function cancel() + { + $url = $this->config['baseUri'] . '/v2/rights/coupon/recedeCoupon'; + + $this->http($url, $this->params); + + return $this->getResponse(); + + } + +} diff --git a/src/Action/Init.php b/src/Action/Init.php index c6b2464..ecd2de2 100644 --- a/src/Action/Init.php +++ b/src/Action/Init.php @@ -4,26 +4,97 @@ namespace XuanChen\WashCar\Action; use GuzzleHttp\Client; use GuzzleHttp\Exception\RequestException; +use Illuminate\Support\Facades\Cache; class Init { - protected $appId; - - protected $appSecret; - - protected $apiVersion = 'v2'; - + /** + * @var 入参 + */ protected $params; + /** + * @var 待校验的签名 + */ protected $sign; - protected $url; + /** + * @var 环境 + */ + protected $this_type; + + /** + * @var token + */ + protected $access_token; + + /* + * @var 错误标识 + */ + protected $error = 0; + + /* + * @var 错误原因 + */ + protected $message; public function __construct() { - $this->appId = config('pingan.appId'); - $this->appSecret = config('pingan.appSecret'); + $this->this_type = config('washcar.this_type'); + $this->config = config('washcar.' . $this->this_type); + } + + /** + * 获取access_token + * @return void [type] [description] + */ + public function getToken() + { + $this_type = $this->config['this_type']; + + //从缓存里找token + $token = Cache::get('token_' . $this_type); + + if ($token) { + $token = collect($token); + $this->access_token = $token->access_token; + + } else { + $this->getAjaxToken(); + } + } + + /** + * 请求平台 access_token + * @return void [type] [description] + */ + public function getAjaxToken() + { + $params = [ + 'client_id' => $this->config['client_id'], + 'grant_type' => $this->config['grant_type'], + 'client_secret' => $this->config['client_secret'], + ]; + + $tokenUrl = $this->config['tokenUri']; + + try { + $this->http($tokenUrl, $params, 'POST'); + + if ($this->error > 0) { + return new \Exception($this->message); + } + + Cache::put('token_' . $this->grant_type, $this->data['expires_in']); + + $this->access_token = $data['access_token']; + + } catch (RequestException $e) { + $this->error = 9999; + $this->message = $e->getMessage(); + } + } /** @@ -40,8 +111,8 @@ class Init $this->sign = $data['sign']; } else { $data = array_merge($data, [ - 'appId' => $this->appId, - 'apiVersion' => $this->apiVersion, + 'appId' => $this->config['client_id'], + 'apiVersion' => $this->config['apiVersion'], 'timestamp' => $this->getMillisecond(), ]); } @@ -92,20 +163,6 @@ class Init return false; } - /** - * Notes: 封装跳转链接 - * @Author: 玄尘 - * @Date : 2021/6/1 15:25 - * @return string - */ - public function getUrl() - { - $params = $this->params; - $params['sign'] = $this->getSign(); - - return $this->url . http_build_query($this->params); - } - /** * Notes: 获取时间戳 * @Author: 玄尘 @@ -140,7 +197,7 @@ class Init ksort($params); - return http_build_query($params) . $this->appSecret; + return http_build_query($params) . $this->config['client_secret']; } /** @@ -154,23 +211,47 @@ class Init public function http($url, $query, $method = 'POST') { try { + $headers = [ + 'Content-Type' => 'application/json', + ]; + $client = new Client(); - $response = $client->request($method, $url, $query); - $body = $response->getBody(); - $content = $body->getContents(); - $result = json_decode($content, true); + $response = $client->request($method, $url, [ + 'json' => $query, + 'headers' => $headers, + ]); + + $body = $response->getBody(); + $content = $body->getContents(); + $result = json_decode($content, true); if ($result['ret'] > 0) { - $retData = $result['msg']; + $this->error = $result['ret']; + $this->message = $result['message']; + + return false; } else { - $retData = $result['data']; + $retData = $result['data']; + $this->data = $retData; } - return $retData; } catch (RequestException $e) { - return ['ret' => '99999', $e->getMessage()]; } } + /** + * Notes: 返回 + * @Author: 玄尘 + * @Date : 2021/6/4 14:48 + */ + public function getResponse() + { + return [ + 'error' => $this->error, + 'message' => $this->message, + 'data' => $this->data, + ]; + } + } diff --git a/src/Action/UrlAction.php b/src/Action/UrlAction.php new file mode 100644 index 0000000..beadb35 --- /dev/null +++ b/src/Action/UrlAction.php @@ -0,0 +1,36 @@ +config['baseUri'] . '/v2/h5/redirect/autoLogin/returnUrl'; + + $params = array_merge($this->params, [ + 'urlKey' => $this->config['urlKey'], + ]); + + $this->http($url, $params); + + return $this->getResponse(); + } + + /*** + * Notes: 获取优惠券详情地址 + * @Author: 玄尘 + * @Date : 2021/6/4 14:11 + */ + public function getCouponInfoUrl() + { + + } + +} diff --git a/src/PingAn.php b/src/PingAn.php deleted file mode 100644 index 45708b3..0000000 --- a/src/PingAn.php +++ /dev/null @@ -1,20 +0,0 @@ -publishes([__DIR__ . '/../config/config.php' => config_path('pingan.php')]); } - $this->app->bind('xuanchen.pingan_washcar', function ($app) { - return new PingAn(); + $this->app->bind('xuanchen.washcar', function ($app) { + return new WashCar(); }); } diff --git a/src/WashCar.php b/src/WashCar.php new file mode 100644 index 0000000..6648002 --- /dev/null +++ b/src/WashCar.php @@ -0,0 +1,42 @@ +