| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- <?php
- /**
- * 人机验证
- */
- namespace sms;
- use afs\Request\V20180112 as Afs;
- class Verify
- {
- protected $accesskey_id;
- protected $accesskey_secret;
- public function __construct ()
- {
- $this->accesskey_id = env('aliyun.access_key', '');
- $this->accesskey_secret = env('aliyun.secret_key', '');
- }
- /**
- * 人机验证
- * @param string $app_key
- * @param string $scene
- * @param string $sessionId
- * @param string $token
- * @param string $sig
- * @return bool
- */
- public function ali_verify ($app_key = '', $scene = '', $sessionId = '', $token = '', $sig = '')
- {
- if (env('aliyun.verify_appkey', '') != $app_key || env('aliyun.verify_scene', '') != $scene) return false;
- include_once __DIR__ . '/../aliyun-afs/aliyun-php-sdk-core/Config.php';
- //YOUR ACCESS_KEY、YOUR ACCESS_SECRET请替换成您的阿里云accesskey id和secret
- $iClientProfile = \DefaultProfile::getProfile("cn-hangzhou", env('aliyun.access_key', ''), env('aliyun.secret_key', ''));
- $client = new \DefaultAcsClient($iClientProfile);
- \DefaultProfile::addEndpoint("cn-hangzhou", "cn-hangzhou", "afs", "afs.aliyuncs.com");
- $request = new Afs\AuthenticateSigRequest();
- $request->setSessionId($sessionId);// 必填参数,从前端获取,不可更改,android和ios只传这个参数即可
- $request->setToken($token);// 必填参数,从前端获取,不可更改
- $request->setSig($sig);// 必填参数,从前端获取,不可更改
- $request->setScene($scene);// 必填参数,从前端获取,不可更改
- $request->setAppKey($app_key);//必填参数,后端填写
- $request->setRemoteIp(app('request')->ip());//必填参数,后端填写
- $response = $client->getAcsResponse($request);//返回code 100表示验签通过,900表示验签失败
- $response = object_array($response);
- sr_log($response);
- if ($response['Code'] == 100) { //验签成功
- return true;
- }
- return false;
- }
- /**
- * 生成签名
- * @param $data
- * @return string
- */
- public function get_sign ($data)
- {
- unset($data['sign']);
- $str = '68j5r28xc1v21ya0a66ecef62b4edfdcc1fe' . '2';
- foreach ($data as $k => $v) {
- $str .= $k;
- if (is_array($v)) {
- foreach ($v as $kk => $vv) {
- $str .= $kk;
- $str .= $vv;
- }
- } else {
- $str .= $v;
- }
- }
- for ($i = 0; $i < strlen($str); $i++) {
- $temp_str = ord($str[$i]);
- $change_after[$i] = $temp_str;
- }
- sort($change_after);
- $str = '';
- for ($i = 0; $i < count($change_after); $i++) {
- $str .= chr($change_after[$i]);
- }
- $str = preg_replace('/[^a-zA-Z0-9]/s', '', $str);
- $sign_me = strtoupper(MD5($str));
- return $sign_me;
- }
- }
|