c#短信验证码接口c#如何实现网站或APP的短信验证码功能

每一个做技术开发的多多少少都会接触到网站或是APP的注册登录功能的实现。

要实现商业网站或是APP用户注册登录成为会员,一般多采用短信验证码的方式进行身份确认。

当用户注册或是改密码时,如何通过下发验证码到用户的手机号上验证用户身份呢?很简单是通过短信接口来实现的。

以下是c#短信接口的demo 仅供参考。

短信发送接口

1.1 请求地址

请求地址是客户接口程序调用时请求的url地址,采用的是https post 接口,地址是

https://sh2.ipyy.com/sms.aspx 对应UTF-8

https://sh2.ipyy.com/smsGBK.aspx 对应GB2312

https://sh2.ipyy.com/smsJson.aspx 对应UTF-8(返回值为json格式)

https://sh2.ipyy.com/ensms.ashx 对应UTF-8(加密传输,使用json)

 

入口地址一般不会发生变化,当发生变化的时候,会通知接口用户

1.2参数说明

参数名称

含义

说明

userid

企业id

企业ID(不验证)

account

发送用户帐号

用户帐号,由系统管理员

password

发送帐号密码

用户账号对应的密码

可以使用明文,也可以全用md5加密方式,md5采用32位大写

abc123加密后为

E99A18C428CB38D5F260853678922E03

mobile

全部被叫号码

短信发送的目的号码.多个号码之间用半角逗号隔开 

content

发送内容

短信的内容,内容需要UTF-8编码,提交内容格式:内容+【签名】。签名是公司的名字或者公司项目名称。示例:您的验证码:1439【腾飞】。【】是签名的标识符。请按照正规的格式提交内容测试

sendTime

定时发送时间

为空表示立即发送,定时发送格式2010-10-24 09:08:10

action

发送任务命令

设置为固定的:send

extno

扩展子号

请先询问配置的通道是否支持扩展子号,如果不支持,请填空。子号只能为数字,且最多5位数。

例如:

https://sh2.ipyy.com/sms.aspx?action=send&userid=&account=账号&password=密码&mobile=15023239810,13527576163&content=内容&sendTime=&extno=

1.3返回值

在接收到客户端发送的https请求后,返回以xml的方式返回处理结果。格式为:

<?xml version="1.0"  encoding="utf-8" ?>

<returnsms>

<returnstatus>status</returnstatus> ---------- 返回状态值:成功返回Success 失败返回:Faild

<message>message</message> ---------- 相关的错误描述

<remainpoint> remainpoint</remainpoint> ---------- 返回余额

<taskID>taskID</taskID>  -----------  返回本次任务的序列ID

<successCounts>successCounts</successCounts> --成功短信数:当成功后返回提交成功短信数

</returnsms>

 

1.4 Json返回值

{"returnstatus":"Success",
"message":"操作成功",
"remainpoint":"-4",
"taskID":"1504080852350206",
"successCounts":"1"}
以下是c#短信接口的demo

// 华信短信发送DEMO程序(aspx接口)
// 短信验证码免费测试:17721077856  2885400276
// 开发环境:vs2015,.net framework 4.0,Microsfot Http Client 2.2.29
// 版本:1.1
// 最近修订:2016-12-28
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Xml.Linq;
using System.Xml.XPath;
 
namespace Huaxin.MessageSend.Demo
{
    class SendViaAspx : ISender
    {
        private const string URL = @"https://sh2.ipyy.com/sms.aspx";
        private readonly HttpClient _client = new HttpClient();
 
        public SendViaAspx()
        {
            _client.DefaultRequestHeaders.Clear();
            _client.BaseAddress = new Uri(URL);
        }
 
        public void DoSend()
        {
            var accountName = "yzz";     //改为实际账号名
            var password = "yzz123";      //改为实际发送密码
            var mobiles = "18611729367";    //多个手机号用“,”分隔
            var content = "c#版aspx接口发送测试,您的验证码:8888【华信】";
            var extNumber = "";
            var result = GetResult(accountName, password, mobiles, content, extNumber);
            Print(result);
        }
 
        private string GetResult(string accountName, string password,string mobiles, string content, string extNumber)
        {
            var req = new HttpRequestMessage();
            req.Headers.Clear();
            req.Headers.Add("ContentType", "application/x-www-form-urlencoded;charset=utf-8");
            req.Method = HttpMethod.Post;
            req.Content = new FormUrlEncodedContent(new Dictionary<string, string>
            {
                {"action", "send"},
                {"userid", ""},
                {"account", accountName},
                {"password", password},
                {"mobile", mobiles},
                {"content", content},
                {"sendtime", ""},
                {"extno", extNumber}
            });
            var response = _client.SendAsync(req).Result;
            try
            {
                response.EnsureSuccessStatusCode();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error:{0}", ex.Message);
                return "";
            }
            return response.Content.ReadAsStringAsync().Result;
        }
 
        private void Print(string resultString)
        {
            var el = XElement.Parse(resultString);
            var root = el.XPathSelectElement("/");
            var status = root.XPathSelectElement("returnstatus").Value;
            var message = root.XPathSelectElement("message").Value;
            var remainpoint = root.XPathSelectElement("remainpoint").Value;
            var taskid = root.XPathSelectElement("taskID").Value;
            var successCounts = root.XPathSelectElement("successCounts").Value;
            Console.WriteLine("状态:{0}",status);
            Console.WriteLine("状态描述:{0}", message);
            Console.WriteLine("余额:{0}", remainpoint);
            Console.WriteLine("任务ID:{0}", taskid);
            Console.WriteLine("成功条数:{0}", successCounts);
        }
    }
}


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31509632/viewspace-2151325/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/31509632/viewspace-2151325/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值