【Delphi】开发阿里云发送短信控件(二)含源代码

Delphi 阿里云短信控件需要实现的功能

控件源程序,控件使用文档以及Demo下载下载 TAli_SMS_Component 源代码

  1. 可以进行参数设置;
  2. 实现阿里云短信的全部功能:

一、需要实现的函数列表:

序号函数名称函数功能
1SendSms调用SendSms发送短信
2SendBatchSms调用SendBatchSms接口批量发送短信
3QuerySendDetails调用QuerySendDetails接口查看短信发送记录和发送状态
4AddSmsSign调用短信AddSmsSign申请短信签名
5DeleteSmsSign调用接口DeleteSmsSign删除短信签名
6ModifySmsSign调用接口ModifySmsSign修改未审核通过的短信签名,并重新提交审核
7QuerySmsSign调用接口QuerySmsSign查询短信签名申请状态
8AddSmsTemplate调用接口AddSmsTemplate申请短信模板
9DeleteSmsTemplate调用接口DeleteSmsTemplate删除短信模板
10ModifySmsTemplate调用接口ModifySmsTemplate修改未通过审核的短信模板
11QuerySmsTemplate调用接口QuerySmsTemplate查询短信模板的审核状态

二、调用以上函数需要的公共请求参数

序号参数名称必须说明
1Signature请求签名,即最终生成的签名结果值
2AccessKeyId访问密钥 ID。AccessKey 用于调用 API。。这个就是阿里云后台申请的参数。
3ActionAPI 的名称。这个就是上面列出的那些命令的名字,调用那个命令,就写那个名字。
4Format返回参数的语言类型。取值范围:json
5RegionIdAPI支持的RegionID,如短信API的值为:cn-hangzhou。这个参数实测没有什么作用,可以随便写什么都可以。可选参数。
6SignatureMethod签名方式。取值范围:HMAC-SHA1。目前必须写这个值
7SignatureNonce签名唯一随机数。用于防止网络重放攻击,建议您每一次请求都使用不同的随机数。这个参数就是为了防止重复发送短信,同时也有安全作用,建议使用但是的时间(精确到毫秒)作为该值。该值使用过一次后就不能再使用,也就是说每一条短信的这个值是不能一样的。
8Timestamp请求的时间戳。按照ISO8601 标准表示,并需要使用UTC时间,格式为yyyy-MM-ddTHH:mm:ssZ。示例:2018-01-01T12:00:00Z 表示北京时间 2018 年 01 月 01 日 20 点 00 分 00 秒。Delphi 开发者需要注意,如果需要UTC时间,就需要在当前时间上减去8小时,否则会出现时间不正确,因为阿里后台允许的时间误差在15分钟之内。
9VersionAPI 的版本号,格式为 YYYY-MM-DD。取值范围:2017-05-25。这个值亲测也没有什么作用,可以随便填写,可选参数。

三、阿里云调用约定

短信服务支持基于URL发送HTTP/HTTPS请求。请求参数需要包含在URL中,请求及返回结果都使用 UTF-8 字符集编码。也就是说,所有的请求,无论是使用GET还是使用POST,参数都在URL中。

以下为一条SendSms未编码的URL请求示例:

 https://dysmsapi.aliyuncs.com/?Action=SendSms&<公共请求参数>&<专有参数>
  • https :指定了请求通信协议。
  • dysmsapi.aliyuncs.com :指定了短信服务的服务接入地址(Endpoint)。
  • Action=SendSms :指定了要调用的API名称为SendSms,表示发送短信。
  • <公共请求参数> :是系统规定的其他公共参数。
  • <专有参数> :表示某个命令的专有参数,每个命令参数是不一样的。在阿里云的文档中没有提及专有参数,这个需要注意,实际上请求时是有专有参数的

四、阿里云请求签名算法说明

  1. 对于每一次HTTP或者HTTPS协议请求,阿里会根据访问中的签名信息验证访问请求者身份。具体由使用AccessKeyID和AccessKeySecret对称加密验证实现。其中AccessKeyID是访问者身份,AccessKeySecret是加密签名字符串和服务器端验证签名字符串的密钥,必须严格保密谨防泄露。
  2. 把所有的参数按照URL请求的参数约定进行排序(按照Key值排序,不是按照整个参数字符串排序);
  3. 把排序后的字符串按照阿里规定的POP特殊编码 进行编码,然后按照Key=Value拼接;
  4. 把上面的通过POP特殊编码 编码拼接的字符串再按照* HTTPMethod + “&” + specialUrlEncode(“/”) + ”&” + specialUrlEncode(sortedQueryString)拼接;
  5. 对上述字符串进行HmacSHA1算法 + Base64编码,需要使用AccessKeySecret,生成的字符串作为Signature 拼接再URL参数之中即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海纳老吴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值