ApiSign.php 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <?php
  2. namespace App\Http\Middleware;
  3. use App\Util;
  4. use Closure;
  5. use App\Http\helper\ApiSign as Sign;
  6. use Illuminate\Support\Facades\Log;
  7. class ApiSign
  8. {
  9. /**
  10. * 验证签名 API接口
  11. * @param \Illuminate\Http\Request $request
  12. * @param Closure $next
  13. */
  14. public function handle($request, Closure $next)
  15. {
  16. // return $next($request);
  17. $params = $request->all();
  18. // 生成用户请求信息日志
  19. if (is_array($params)) {
  20. try {
  21. $request_extra = \GuzzleHttp\json_encode($params);
  22. }catch (\Exception $exception){
  23. Util::WriteLog("signerror",http_build_query($params));
  24. $request_extra='';
  25. }
  26. } else {
  27. $request_extra = '';
  28. }
  29. $sign = $params['sign'] ?? '';
  30. unset($params['sign']);
  31. $apiSign = Sign::sign($params);
  32. if (!empty($params) && $sign != $apiSign) {
  33. // Util::WriteLog("signerror",$params);
  34. Util::WriteLog("signerror",[$params,$_REQUEST,$_SERVER]);
  35. Log::info('服务端-客户端-所有请求信息 ' . $request_extra);
  36. Log::info('服务端签名信息-签名失败:' . $apiSign);
  37. return apiReturnFail('Payment error_1');
  38. }
  39. return $next($request);
  40. }
  41. }