Signature.php 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  1. <?php
  2. namespace App\Http\Controllers\api\thirdPart\syrius\units;
  3. use Illuminate\Support\Facades\Log;
  4. trait Signature
  5. {
  6. public function verify(string $requestUrl, string $waitSignBody):bool
  7. {
  8. $baseUrl = "https://was.baoshi56.com";
  9. $requestUrl = substr($requestUrl,strlen($baseUrl));
  10. $header = "signature=";
  11. $secret = config("api.syrius.client_secret");
  12. $arr = explode("&",$requestUrl);
  13. $waitSignUrl = "";
  14. $signature = "";
  15. foreach ($arr as $item){
  16. if (!(substr($item,0,strlen($header)) == $header)){
  17. $waitSignUrl .= $item."&";
  18. }else $signature = substr($item,strlen($header));
  19. }
  20. $waitSignUrl = rtrim($waitSignUrl,"&");
  21. $plainText = "POST"."\n".$waitSignUrl."\n".$waitSignBody."\n";
  22. Log::warning("炬星验签",["拆取获得:".$secret.":".$plainText]);
  23. return $signature == $this->sign($secret.":".$plainText);
  24. }
  25. public function sign(string $str):string
  26. {
  27. return hash("sha256",$str);
  28. }
  29. }