php计算获取抖音签名

//以订单详情作为案例来展示代码
//请求参数
	 $biz_params =[
	   'shop_order_id'=>$shop_order_id
	 ];

 //序列化参数
	 function marshal(array $param){
	     rec_ksort($param); // 对关联数组中的kv,执行排序,需要递归
	     $s = json_encode($param, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE); // 重新序列化,确保所有key按字典序排序
	     // 加入flag,确保斜杠不被escape,汉字不被escape
	     return $s;
	 }
 	//对参数进行排序
	function rec_ksort(array &$arr) {
       $kstring = true;
       foreach ($arr as $k => &$v) {
           if (!is_string($k)) {
               $kstring = false;
           }
           if (is_array($v)) {
              rec_ksort($v);
           }
       }
       if ($kstring) {
           ksort($arr);
       }
    }
    

  //计算签名
  function Douyinsign(string $appKey, string $appSecret, string $method, string $timestamp, string $paramJson): string {
        $paramPattern = 'app_key' . $appKey . 'method' . $method . 'param_json' . $paramJson . 'timestamp' . $timestamp . 'v2';
        $signPattern = $appSecret . $paramPattern . $appSecret;


        return hash_hmac("sha256", $signPattern, $appSecret);
    }
 //序列化后的参数
  $paramJson = marshal($biz_params);
  //获取签名
  $appid = 'xxxx';
  $key = 'xxxxx'
  $method = 'order.orderDetail';
  $timestamp = time();
  
  $sign = Douyinsign($appid,$key,$method,$timestamp,$paramJson);
    

版权声明:本文为ddliyoutang原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。