百度api短信开发

公司原来有一个短信发送的功能,是调用第三方的,但是很不稳定,时不时就收不到短信,但是钱已经扣了。对于这样的事,谁都忍受不了的。于是想找一个稳定短信发送平台,第一想到的是阿里云,百度。在这两个平台上公司都有认证了,于是省了很多事。现在开始吧。

找到百度开放云登录窗口,然后登录,进入控制中心,然后在产品服务中找到,如下图

简单消息服务SMS。前提是账号已经认证了。

点击它跳转到

首先是短信签名申请,这个可以根据他们提供的文档一一操作,盖章,拍照上传,等待他们审核(大概两个星期吧)。审核成功,然后是短信模版申请,然后审核(大概一两天)

数量没有限制。

这个时候其实我们可以根据他们文档进行开发了,只要签名和短信模板审核已通过我们就可以测试了。

他们有Java等

SDK,但是没有.net的,因此我只能调用他们的API实现。首先要认证。

这个我是偷了一回懒。由于有同事做好了这个,他之前实现了一个百度api发送邮箱的功能。我只要把他那部分认证的代码搬过来就是了。如果愿意看,也是可以实现的。我把认证的代码搬来。

这个方法实现。

  ‘https://msdn.microsoft.com/zh-cn/library/system.security.cryptography.hmacsha256(v%3DVS.95).aspx
    ‘http://blog.sina.com.cn/s/blog_5eded52b0100e0mq.html
    Function GetSigningKeyByHMACSHA256HEX(ByVal SecretAccessKey As String, ByVal authStringPrefix As String) As String
        Dim Livehmacsha256 As HMACSHA256 = New HMACSHA256(Encoding.UTF8.GetBytes(SecretAccessKey))
        Dim LiveHash As Byte() = Livehmacsha256.ComputeHash(Encoding.UTF8.GetBytes(authStringPrefix))
        Dim SigningKey As String = HashEncode(LiveHash)
        Return SigningKey
    End Function

    Function GetSignatureByHMACSHA256HEX(ByVal SigningKey As String, ByVal CanonicalRequest As String) As String
        Dim Livehmacsha256 As HMACSHA256 = New HMACSHA256(Encoding.UTF8.GetBytes(SigningKey))
        Dim LiveHash As Byte() = Livehmacsha256.ComputeHash(Encoding.UTF8.GetBytes(CanonicalRequest))
        Dim Signature As String = HashEncode(LiveHash)
        Return Signature
    End Function
    ‘将字符串全部变成小写。
    Function HashEncode(ByVal hash As Byte()) As String
        Return BitConverter.ToString(hash).Replace("-", "").ToLower()
    End Function

    ‘http://www.cnblogs.com/runliuv/p/5088787.html
    Public Function GetSHA256hash(ByVal input As String, ByVal _input_charset As String) As String
        Dim clearBytes As Byte() = Encoding.UTF8.GetBytes(input)
        Dim sha256 As SHA256 = New SHA256Managed()
        sha256.ComputeHash(clearBytes)
        Dim hashedBytes As Byte() = sha256.Hash
        sha256.Clear()
        Dim output As String = BitConverter.ToString(hashedBytes).Replace("-", "").ToLower()
        Return output
    End Function
Imports System.Security.CryptographyImports System.Globalization
Imports System.IO.Compression

Public Class BaiduSMSTest

    Private smsinfo As SMSInfo
    Public Sub New(ByVal smsinfos As SMSInfo)
        Me.smsinfo = smsinfos
    End Sub
    Public Property GetSMSInfo() As SMSInfo
        Get
            Return smsinfo
        End Get
        Set(ByVal value As SMSInfo)
            smsinfo = value
        End Set
    End Property

    Function SendSMSWEBAPI() As String
        Try
            Dim receiveStream As System.IO.Stream = Nothing
            Dim responseReader As IO.StreamReader = Nothing
            Dim timestamp As String = Date.UtcNow.ToString("yyyy-MM-ddTHH:mm:ssZ")
            Dim timestamp2 As String = Date.UtcNow.ToString("yyyy-MM-dd")
            Dim SecretAccessKey As String = "Secret Access Key 申请所得"
            Dim AccessKeyId As String = "Access Key ID申请所得"
            ‘  Dim authStringPrefix As String = "bce-auth-v1/{accessKeyId}/{timestamp}/{expirationPeriodInSeconds}"
            Dim authStringPrefix As String = String.Format("bce-auth-v1/{1}/{0}/1800", timestamp, AccessKeyId) ‘这里要改
            ‘ Dim CanonicalRequest As String = "HTTP Method + "\n" + CanonicalURI + "\n" + CanonicalQueryString + "\n" + CanonicalHeaders"
            Dim CanonicalRequest As String = String.Format("POST" & vbLf & "/v1/message" & vbLf & vbLf & "host:sms.bj.baidubce.com")
            Dim SigningKey As String = GetSigningKeyByHMACSHA256HEX(SecretAccessKey, authStringPrefix)
            Dim Signature As String = GetSignatureByHMACSHA256HEX(SigningKey, CanonicalRequest)
            Dim Content As String = String.Empty

            Content = "{ ""templateId"":""" + smsinfo.TemplateId + """,""receiver"":" + smsinfo.Receiver + ",""contentVar"":""" + smsinfo.ContentVar + """}"
            Dim ContentByte As Byte() = Encoding.UTF8.GetBytes(Content)
            Dim GetOrderURL As String = New Uri("http://sms.bj.baidubce.com/v1/message").ToString()
            Dim HttpWReq As System.Net.HttpWebRequest = CType(System.Net.WebRequest.Create(GetOrderURL), System.Net.HttpWebRequest)
            ‘ HttpWReq.Timeout = 600 * 1000 ‘‘一分钟查询
            HttpWReq.ContentLength = ContentByte.Length
            HttpWReq.ContentType = "application/json"
            HttpWReq.Headers("x-bce-date") = timestamp
            HttpWReq.Headers("Authorization") = String.Format("bce-auth-v1/{2}/{0}/1800/host/{1}", timestamp, Signature, AccessKeyId)
            HttpWReq.Host = "sms.bj.baidubce.com"
            HttpWReq.Method = "POST"
            HttpWReq.KeepAlive = False
            Dim StreamData As System.IO.Stream = HttpWReq.GetRequestStream()
            StreamData.Write(ContentByte, 0, ContentByte.Length)
            StreamData.Close()
            Dim HttpWRes As System.Net.HttpWebResponse = CType(HttpWReq.GetResponse, System.Net.HttpWebResponse)

            If HttpWRes.Headers.Get("Content-Encoding") = "gzip" Then
                Dim zipStream As System.IO.Stream = HttpWRes.GetResponseStream()
                receiveStream = New GZipStream(zipStream, CompressionMode.Decompress)
            Else
                receiveStream = HttpWRes.GetResponseStream()
            End If
            responseReader = New IO.StreamReader(receiveStream)
            Dim responseString As String = responseReader.ReadToEnd()
            Return responseString
        Catch ex As Exception
            Return ex.Message
        End Try
    End Function

End Class
Public Class SMSInfo
    ‘模版id
    Private _templateId As String
    Public Property TemplateId() As String
        Get
            Return _templateId
        End Get
        Set(ByVal value As String)
            _templateId = value
        End Set
    End Property
    ‘接受短信者
    Private _receiver As String
    Public Property Receiver() As String
        Get
            Return _receiver
        End Get
        Set(ByVal value As String)
            _receiver = value
        End Set
    End Property
    ‘内容
    Private _contentVar As String
    Public Property ContentVar() As String
        Get
            Return _contentVar
        End Get
        Set(ByVal value As String)
            _contentVar = value
        End Set
    End Property

End Class

号码检查方法

 Function clearprefix(ByVal Telphonenum As String) As String
        Dim result As String = ""
        If Telphonenum.Length > 11 Then
            Dim Prefix As String = ""
            If Telphonenum.Length = 13 Then
                Prefix = Telphonenum.Substring(0, 2)
                If Prefix = "86" Then
                    result = Telphonenum.Substring(2, 11)
                End If
            ElseIf (Telphonenum.Length = 14) Then
                Prefix = Telphonenum.Substring(0, 3)
                If Prefix = "086" Or Prefix = "+86" Then
                    result = Telphonenum.Substring(3, 11)
                End If
            Else
                result = "号码错误"
            End If

        ElseIf (Telphonenum.Length < 11) Then
            result = "不是手机号码"
        Else
            result = Telphonenum
        End If
        Return result
    End Function

代码测试,发送的内容是自己根据自定义的模板来的,组成标准的格式就可以了。

 Dim SMSinfo As SMSInfo = New SMSInfo()
   SMSinfo.TemplateId = "申请的短信模板"
   SMSinfo.Receiver = "[""手机号码""]"
   SMSinfo.ContentVar = "{\""短信内容参数一\"":\""zhangsan \"",\""短信内容参数二\"":\""888888 \"",\""短信内容参数三\"":\""我是测试内容,我是测试内容 \""}"
  Protected Sub btntest_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btntest.Click
     Dim bdsms As BaiduSMSTest = New BaiduSMSTest(SMSinfo)
     Dim result As String = bdsms.SendSMSWEBAPI()
 End Sub

其实也可以在百度平台上测试

这样就算完成整个短信开发了。

时间: 2024-08-29 17:56:22

百度api短信开发的相关文章

路飞项目搭建3 TODO注释, 自定义模态框, vue-cookies操作浏览器cookies, 腾讯云短信开发, 代码(登录注册页面,多方式登录,手机是否存在验证接口,腾讯短信开发)

TODO注释 """ 作用:todo是一种特殊的注释,书写就是 # TODO 注释内容,可以在TODO控制台面板快速定位注释位置 """ 自定义模态框 componses/Login.vue <template> <div class="login"> <span @click="close_login">x</span> </div> </

短信开发系列(三):短信接收引擎

短信开发系列目录: 短信开发系列(一):GSM手机短信开发初探短信开发系列(二):GSM手机短信开发之短信解码短信开发系列(三):短信接收引擎 之前写了短信接收处理的一些内容,今年事情实在太多了,就停顿了这么一大段的时间.接下来会继续完成相关的内容. 今天先写用之前写的短信类库的一个应用,短信接收引擎.可以用在处理一些短信的提醒:作为前面两篇文章的一个实战运用,可以作为一个多线程.委托和事件.串口等方面知识的一个综合运用. 先来分析一下整个程序的流程: - 启动线程 - 定时运行线程主函数 -

聚合API-短信接口,THINKPHP整合聚合api短信接口

觉得发个短信验证码挺简单的,但是之前没写过,就想写一个看看,阿里大于的太贵了,只能用其他平台的数据接口, 第一步:聚合官网登录.注册,网址如下:https://www.juhe.cn/login(登录),https://www.juhe.cn/register(注册) 第二步:申请数据-短信api服务,网址如下:https://www.juhe.cn/docs/api/id/54,申请数据, 申请的时候送10条数据,如果想以后也想用,可以选择现在特价的9元300条数据. 第三步:进入个人中心,我

云之讯短信开发

一.在app\comom中建一个公共的(封装类) <?php /** * Created by PhpStorm. * User: Administrator * Date: 2018/7/17 0017 * Time: 下午 9:11 * 云之讯类, * 用于发送短信 */ namespace app\common; class Ucpaas{ //API请求地址 const BaseUrl = "https://open.ucpaas.com/ol/sms/"; //开发者账

深圳短信猫厂家自带短信猫开发包支持多种开发语言

深圳最早从事短信猫生产与销售的短信猫厂家-深圳百利通科技,是深圳短信猫厂家中质量上乘.服务周到的正规公司.提供有丰富短信猫开发软件包及接口程序,支持GSM MODEM短信猫二次开发,可广泛用于二次开发领域,将sms.dll文件拷贝到系统安装目录中的system32文件夹中,然后再根据以下接口函数说明和提供的例程源码开发.支持多种程序短信开发语言如:C#.delphi.VC++等,并提供有程序开发示例DEMO,方便参考.实现快速短信二次开发应用.多应用于如OA.ERP.用友.金蝶等办公系统的短信功

C# 通过串口发送短信

手机短信群发作为企业日常通知,公告,天气预报等信息的一个发布平台,在于成本低,操作方便等诸多特点,成为企业通讯之首选.本文介绍短信的编码方式,AT指令以及用C#实现串口通讯的方法. 前言目前,发送短信的方式主要有三种: 1.网关方式:向当前电信部门申请,不需要另外设备.但是费用相对来说,比较高,以目前上海移动公司推出的短信群发套餐来说,对于中小企业的短信息的发送数量来看, 短信群发和打电话相比,几乎没有什么优势.对于几万人的大公司而言,可能很便宜.对于几百人甚至更少人的公司来说,这种方式根本不划

什么是短信猫

你要问我科普是谁,额......,谁知道是哪国总统,你要问我静静是谁,估计还能告诉你!(偷笑) 科普!科普!科普!重要的事情说三遍! 是不是觉得头重脚轻.腰酸背痛.四肢麻木.昏昏欲睡.闷闷不乐,这就对啦,这就是节后综合征.哈哈,不过小编不是医生,生病还得看医生!是不是觉得小编一改往日风格,嗯,您已在心底默默地抢答了,是!应广大客户和擦边客户的要求,在这阳光灿烂的日子科普下什么是短信猫. 一.短信猫 短信猫其实是一种用来收发短信的设备,他和我们用的手机一样,需要手机SIM卡的支持,在需要收发短信的

java servlet手机app访问接口(二)短信验证

今天找了几个短信平台,其实最想使用的一个是sharesdk,使用它上面http api短信功能,不仅价格低,而且最少可以充值100RMB,但是审核过于严格,对应APP还必须集成他们的短信功能,而且要上传审核也得20多天,我也只是想找个短信平台测试下而已,所以它就算了.然后就在百度随便在好了一个短信平台www.wasun.cn,暂时感觉它还不错,至少它给的测试帐号接受短信的速度没超过5秒,我看了下一般是3秒甚至更快. 下面我就说说调用短信接口的方法,以及使用中途遇到的问题. 一.httpreque

金笛中间件:基于数据库接口的短信猫通信软件

金笛短信中间件的作用 一个可靠的系统,需要7*24小时不间断工作,短信猫在运行中,会碰到CMS ERROR,这些错误和运营商有关,需要根据不同的错误信息对设备运行状态做相应调整.很多客户花费了大量的人力和时间才能比较好地达到目标,这牵涉到了具体开发人员的水平,毕竟需要开发人员很好地去研究短信猫特性,反复做简单测试没问题后才能正常使用.短信猫需要长时间不间断运行,这对于整个行业应用来说,短信更多的是补充和扩展,往往在正式运行后出现一些没有测试到的问题,导致运行不稳定,容易丢包.死机等. 金笛短信猫