|
- using System;
- using System.Collections.Generic;
- using System.Collections.Specialized;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Web;
- using Learun.Util;
- using Newtonsoft.Json;
- using Newtonsoft.Json.Linq;
-
- namespace Quanjiang.DigitalScholl.SendSms
- {
- /// <summary>
- /// 一信通短信平台
- /// </summary>
- public class YixintongSms:ISms
- {
- private static readonly string SpCode = ConfigManager.AppSettings["SpCode"].Value;//企业编号
- private static readonly string LoginName = ConfigManager.AppSettings["LoginName"].Value;//用户名
- private static readonly string Password = ConfigManager.AppSettings["Password"].Value;//接口密钥
-
- public async Task<(string code, string randomNum, string message, string errorType)> SendSmsToSingle(string phoneNumber, SmsType st, List<string> sendParams = null)
- {
- (string code, string randomNum, string message, string errorType) result;
- var (templatecode, templateparam, randomNum) = GetSmsTemplateBySmsType(st);
- try
- {
- StringBuilder sb=new StringBuilder();
- // 按照协议组织 post 请求包体
- sb.Append("SpCode="+SpCode);
- sb.Append("&LoginName=" + LoginName);
- sb.Append("&Password=" + Password);
- sb.Append("&MessageContent=" + sendParams.FirstOrDefault());
- sb.Append("&UserNumber=" + phoneNumber);
- //sb.Append("&templateId=" + templatecode);//测试帐号去掉
- sb.Append("&SerialNumber=" + DateTime.Now.ToString("yyyyMMddHHmmssffffff"));
- sb.Append("&f=1");
- //data.Add("ScheduleTime", "");
- //data.Add("signCode", "");
- //调接口
- string pushresult = Learun.Util.HttpMethods.HttpPost("https://opassapi.infocloud.cc/sms/Api/Send.do", sb.ToString(), Encoding.GetEncoding("utf-8"));
- //返回体
- pushresult = pushresult.Replace("<br>", "&");
- NameValueCollection query = HttpUtility.ParseQueryString(pushresult, Encoding.GetEncoding("utf-8"));
- var objresult = new SmsResult();
- objresult.result = Convert.ToInt32(query["result"]);
- objresult.description = query["description"];
- objresult.taskid = query["taskid"];
- objresult.faillist = query["faillist"];
-
- result =(objresult.result.ToString(), phoneNumber, objresult.description, objresult.faillist);
-
- }
- catch (Exception e)
- {
- result = ("", "", e.Message, e.GetType().ToString());
- }
- return result;
- }
-
- public async Task<(string code, string randomNum, string message, string errorType)> SendSmsToMulti(List<string> phoneNumbers, SmsType st, List<string> sendParams = null)
- {
- (string code, string randomNum, string message, string errorType) result;
- var (templatecode, templateparam, randomNum) = GetSmsTemplateBySmsType(st);
- try
- {
- // 按照协议组织 post 请求包体
- JObject data = new JObject();
- data.Add("SpCode", SpCode);
- data.Add("LoginName", LoginName);
- data.Add("Password", Password);
- data.Add("MessageContent", sendParams.FirstOrDefault());
- data.Add("UserNumber", string.Join(",", phoneNumbers.ToArray()));
- data.Add("templateId", templatecode);
- data.Add("SerialNumber", DateTime.Now.ToString("yyyyMMddHHmmssffffff"));
- data.Add("ScheduleTime", "");
- data.Add("f", "1");
- data.Add("signCode", "");
- //调接口
- string pushresult = Learun.Util.HttpMethods.HttpPost("https://api.ums86.com:9600/sms/Api/Send.do", JsonConvert.SerializeObject(data), Encoding.GetEncoding("gb2312"));
- //返回体
- pushresult = pushresult.Replace("<br>", "&");
- NameValueCollection query = HttpUtility.ParseQueryString(pushresult, Encoding.GetEncoding("gb2312"));
- var objresult = new SmsResult();
- objresult.result = Convert.ToInt32(query["result"]);
- objresult.description = query["description"];
- objresult.taskid = query["taskid"];
- objresult.faillist = query["faillist"];
-
- result = objresult.result == 0 ? ("OK", randomNum, "", "") : (objresult.result.ToString(), "", objresult.description, objresult.faillist);
-
- }
- catch (Exception e)
- {
- result = ("", "", e.Message, e.GetType().ToString());
- }
- return result;
- }
-
- /// <summary>
- /// 根据短信通知类型获取短信模板
- /// </summary>
- /// <param name="st"></param>
- /// <returns></returns>
- private (string templateCode, string templateParam, string randomNum) GetSmsTemplateBySmsType(SmsType st)
- {
- (string templateCode, string templateParam,string randomNum) result;
- var randomNum = CommonHelper.RandNum(6);
- switch (st)
- {
- case SmsType.Register:
- result = ("SMS_137485060", JsonConvert.SerializeObject(new { code = randomNum }), randomNum);
- break;
- case SmsType.LoginBind:
- result = ("SMS_137485060", JsonConvert.SerializeObject(new { code = randomNum }), randomNum);
- break;
- case SmsType.ForgetPassWord:
- result = ("SMS_137485060", JsonConvert.SerializeObject(new { code = randomNum }), randomNum);
- break;
- case SmsType.EADateArrangeNotification:
- result = ("1", JsonConvert.SerializeObject(new { code = randomNum }), randomNum);
- break;
- case SmsType.WorkFlowNotification:
- result = ("0", "", "");
- break;
- default:
- throw new ArgumentOutOfRangeException(nameof(st), st, null);
- }
- return result;
- }
-
- /// <summary>
- /// 发送短信返回内容
- /// </summary>
- public class SmsResult {
- /// <summary>
- /// 错误代码(0:发送短信成功,0-34,)
- /// </summary>
- public int result { get; set; }
- /// <summary>
- /// 错误描述
- /// </summary>
- public string description { get; set; }
- /// <summary>
- /// 任务编号
- /// </summary>
- public string taskid { get; set; }
- /// <summary>
- /// 失败号码列表(可多个)
- /// </summary>
- public string faillist { get; set; }
- }
-
-
- }
- }
|