//以订单详情作为案例来展示代码
//请求参数
$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);
php计算获取抖音签名
最新推荐文章于 2024-06-05 17:45:52 发布