WxMiddleware.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <?php
  2. namespace app\api\middleware;
  3. use app\api\middleware\Rsa;
  4. class WxMiddleware {
  5. /*
  6. * 中间件验证
  7. */
  8. public function handle($request, \Closure $next)
  9. {
  10. $rsa = new Rsa();
  11. // 1、获取参数
  12. $data = $request->post();
  13. if(empty($data['signData'])){
  14. return json('非法请求!');
  15. }else{
  16. // 2.解参数
  17. $privDecrypt = $rsa->privDecrypt($data['signData']);
  18. $sign = substr($privDecrypt,0,36);
  19. $timestamp = substr($privDecrypt,36);
  20. if($sign!='DQEBAQUAA4GNADCBiQKBgQCk7WKdggwBOtte'){
  21. return json('密钥错误!');
  22. }else{
  23. // 时间判断 大于3600s返回 系统错误
  24. $time_limit = 300;
  25. // $ttl= time();
  26. list($msec, $sec) = explode(' ', microtime());
  27. $msectime = (float)sprintf('%.0f', (floatval($msec) + floatval($sec)) * 1000);
  28. $msectimes = substr($msectime,0,13);
  29. if(abs((int)$timestamp - $msectimes) > $time_limit){
  30. // var_dump($msectimes);
  31. // var_dump($timestamp);
  32. return json('超时请求');
  33. }else{
  34. return $next($request);
  35. }
  36. }
  37. }
  38. // return($publicDecrypt);
  39. }
  40. }