|
阿里云的阿里短信服务,说白了就是云短用帮你发验证码、通知、信使营销消息的阿里API接口。你得先有一个阿里云账号,云短用然后去控制台开通短信服务,信使这步没什么门槛,阿里实名认证过了就行。云短用 开通之后,信使你得干三件事:申请签名、阿里申请模板、云短用拿AccessKey。信使签名就是阿里短信开头那个【某某公司】,比如【阿里云】。云短用模板就是信使短信正文的格式,像“您的验证码是${ code},5分钟内有效”。这两个都得提交审核,一般几小时到一天就能过。我第一次用的时候,签名写了个“测试”,结果被驳回了,客服说签名必须有明确的企业或个人品牌标识,后来改成我网站的名字才通过。 真正麻烦的是代码对接。你需要在阿里云控制台创建一个RAM用户,给它分配AliyunDysmsFullAccess权限,然后拿它的AccessKey ID和Secret。千万别用主账号的AccessKey,万一泄露了,人家能直接删你所有短信模板。 代码部分,官方文档给的是Java、Python、PHP的SDK示例。我拿Python举个例子,你装个aliyunsdkdysmsapi包,然后大概这么写: ```python from aliyunsdkcore.client import AcsClient from aliyunsdkdysmsapi.request.v20170525 import SendSmsRequest client = AcsClient('你的AccessKeyId', '你的AccessKeySecret', 'cn-hangzhou') request = SendSmsRequest.SendSmsRequest() request.set_PhoneNumbers('13800138000') request.set_SignName('你的签名') request.set_TemplateCode('SMS_123456789') request.set_TemplateParam('{ "code":"1234"}') response = client.do_action_with_exception(request) ``` 跑通了会返回一个Code字段,值是“OK”就代表发送成功。如果返回“isv.SMS_SIGNATURE_ILLEGAL”,那就是签名没审核通过或者写错了。如果返回“isv.MOBILE_NUMBER_ILLEGAL”,检查手机号是不是多了空格或者国家代码。 关于费用,阿里云短信是按条计费的,国内短信大概0.045元一条,不同的套餐包折扣不一样。你可以在控制台买套餐包,1000条大概45块,比按量付费便宜一点。但注意,营销类短信和验证码类短信价格可能不同,而且发送频率有限制——同一个手机号一分钟内最多收5条,一天最多10条,防止骚扰。 有个坑必须提醒你:短信模板里的变量不能乱写。比如你想发“您的订单${ orderId}已发货”,这个orderId只能包含数字和字母,如果你传了中文或者特殊符号,接口直接报错。还有,模板里不能出现“贷款”“加微信”“兼职”这些敏感词,审核过不了。 最后说个实际经验:测试的时候别用真实手机号,去阿里云控制台的“短信服务-快速测试”页面,那边有虚拟号码可以试收。我第一次测试用了我媳妇的手机号,结果她收到一条“您的验证码是123456”,以为手机中毒了,吓得不轻。后来学乖了,都拿测试号跑。 |