草庐提供以下SDK,你可以自行封装加密参数,也可以使用SDK:
PHP SDK、JAVA SDK
本站采用MD5方式加密。签名生成步骤如下:
1:组装业务参数,按照接口文档的“业务请求参数”进行组合;
2:组装请求参数,按照接口文档的“公共请求参数”进行组合,此时附带额外的appkey参数,且不包含sign参数;
3:请求参数排序,把上述第二步的请求参数按照ASCII码从小到大排序;
4:拼接待签名的数据,使用URL键值对的格式(即key1=value1&key2=value2..)拼接成字符串;
5:数据签名,使用md5加密上述步骤四种的字符串;
6:重新封装请求参数,把数据签名添加熬请求参数中,同时剔除appkey参数
现已发送消息业务为例进行签名示例:
| 短信网关 | 阿里云 |
| 短信网关的appid | LOAINV8pIUzMccgZ |
| 草庐平台的appkey | ZZYxVOAAOxJSmCsODqkT3rUS2pdhp9 |
| 短信模版ID | SMS_174890022 |
| 短信签名 | 草庐 |
| 接收短信手机号码 | 18888888888 |
| 发送参数 | 2个参数,分别是code和url,其对应值如下: code=>1234 url=>cao.lu |
第一步,组装业务参数
$bizdata = array( 'gateway'=>'aliyun', 'appid'=>'LOAINV8pIUzMccgZ', 'phonenum'=>'18888888888', 'tcode'=>'SMS_174890022', 'smssign'=>'草庐', 'senddata'=>array( 'code'=>'1234', 'url'=>'cao.lu' ) ); |
第二步,组装请求参数。不包含sign参数,且附带appkey参数
$postdata = array( 'method'=>'sendmsg', 'app_id'=>'888888', 'appkey'=>'ZZYxVOAAOxJSmCsODqkT3rUS2pdhp9', 'signtype'=>'md5', 'version'=>'v1.0', 'biz_content'=>json_encode($bizdata,JSON_UNESCAPED_UNICODE) ); |
第三步,请求参数排序
| ksort($postdata); |
第四步,拼接待签名的数据
$signstr = ''; foreach($postdata as $key=>$val){ $signstr .= '&'.$key.'='.$val; } $signstr = substr($signstr,1); |
此时,待签名的字符串如下:
| app_id=888888&appkey=ZZYxVOAAOxJSmCsODqkT3rUS2pdhp9&biz_content={"gateway":"aliyun","appid":"LOAINV8pIUzMccgZ","phonenum":"18888888888","tcode":"SMS_174890022","smssign":"草庐","senddata":{"code":"1234","url":"cao.lu"}}&method=sendmsg&signtype=md5&version=v1.0 |
第五步,数据签名
| $sign = md5($signstr); |
第六步,重新封装请求参数。删除appkey参数,以及增加sign参数。
unset($postdata['appkey']); $postdata['sign']=$sign; |
至此,postdata就是最终POST或者GET的数据了。
$postdata = array( 'method'=>'sendmsg', 'app_id'=>'888888', 'sign'=>'de2fb701b38f0c226577438cb47a9cd8', 'signtype'=>'md5', 'version'=>'v1.0', 'biz_content'=>json_encode($bizdata,JSON_UNESCAPED_UNICODE) ); |