PHP 调用 e 签宝接口签名指南
<?php
// 假设你已经有了阿里云accessKey和accessSecret
$accessKey = 'your_access_key';
$accessSecret = 'your_access_secret';
// 接口参数
$apiParams = [
'Method' => 'epic.signature',
'Product' => 'Dysmsapi',
'Version' => '2017-05-25',
'RegionId' => 'cn-hangzhou',
'PhoneNumbers' => '13888888888',
'SignName' => '阿里云短信签名',
'TemplateCode' => 'SMS_1000000',
'TemplateParam' => '{"code":"12345"}',
];
// 生成签名
$signature = generateSignature($apiParams, $accessSecret);
// 发送请求
$url = 'https://dysmsapi.aliyuncs.com/?' . http_build_query($apiParams) . '&Signature=' . urlencode($signature);
$result = file_get_contents($url);
echo $result;
// 生成签名的函数
function generateSignature($parameters, $accessSecret) {
$sortedParams = argSort($parameters);
$stringToSign = 'GET&%2F&' . percentEncode(join('&', $sortedParams));
$signature = base64_encode(hash_hmac('sha1', $stringToSign, $accessSecret . '&', true));
return $signature;
}
// 参数排序函数
function argSort($array) {
ksort($array);
$sorted = [];
foreach ($array as $key => $value) {
$sorted[] = $key . '=' . percentEncode($value);
}
return $sorted;
}
// 百分号编码函数
function percentEncode($value) {
if (is_array($value)) {
$value = json_encode($value);
}
return urlencode(str_replace('+', '%20', $value));
}
?>
这段代码展示了如何使用阿里云提供的accessKey和accessSecret来生成请求签名,并发送一个GET请求到阿里云短信服务API。代码中的generateSignature
函数负责生成请求签名,argSort
函数负责对请求参数进行排序,而percentEncode
函数负责对参数进行百分比编码。最终生成的请求URL被发送到阿里云短信服务API,并将响应结果打印出来。
评论已关闭