/** * 通过app secret和友好速搭回传的参数,验证当前请求是否来自于友好速搭 * @param array $params 获取到的所有参数 * @return bool true表示验证正确,false表示错误 * @throws InvalidArgumentException */ public function hmac_verify(array $params = []) { $this->validate('app_secret'); $secret = $this->app_secret; if (!is_array($params) || !isset($params['hmac'])) { throw new InvalidArgumentException('参数不正确'); } //获取hmac并从数组中销毁 $hmac = $params['hmac']; unset($params['hmac']); //重新生成hmac $digest = YhsdApiHelper::generate_hmac($params, $secret); //返回比较结果 return $hmac == $digest; }
/** * 生成验证字符串 * @param $key * @param $secret * @return string */ public function authorization($key, $secret) { $str = $key . ":" . $secret; $encoded = YhsdApiHelper::urlsafe_b64encode($str); $basic = "Basic " . $encoded; return $basic; }
/** * @dataProvider getData */ public function test_urlsafe_b64decode($params, $ans) { $this->assertEquals($ans, YhsdApiHelper::urlsafe_b64decode($params)); }