C#调用移动通信有限公司政企客户云MAS(1.0)平台发短信接口

     移动云MAS提供了多种调用方式去发短信,本文采用HTTP方式使用C#程序调用短信发送功能。一开始要申请号云MAS企业账号,一般是 集团客户名称,用户名,密码。 使用这个账号 登录云MAS系统然后创建调用接口的账号,而不是使用登录云MAS平台的账号密码调用接口。

    有了账后之后第一步便是登录,然后根据登录信息调用发送短信接口

      地址是:

参数名称

说明

ec_name

集团客户名称

user_name

用户名

user_passwd

密码

     

返回值

描述

mas_user_id

用户登录id

access_token

API输入参数签名密钥

access_token_expire_seconds

API输入参数签名超时时间,超过此阈值后API输入参数签名密钥作废,需要重新申请,调用HTTP API时应该在超时时间到达以前申请新的签名密钥

status

验证状态,错误码请参考:3.1.1

    

HTTP客户端向云MAS平台发送请求,带上相应的请求参数,云MAS平台接收请求,并进行验证,验证通过后进行短信发送。

  1. 请求声明

测试环境:http:// 112.33.1.13:80/app/http/sendSms

正式环境:http://mas.ecloud.10086.cn/app/http/sendSms

  1. 参数详解

参数名称

说明

mas_user_id

用户唯一标识

mobiles

手机号码数组,逗号分隔。

content

发送短信内容

sign

网关签名编码,必填,签名编码在中国移动集团开通帐号后分配,可以在云MAS网页端管理子系统-SMS接口管理功能中下载。

serial

扩展码,根据向移动公司申请的通道填写,如果申请的精确匹配通道,则填写空字符串(""),否则添加移动公司允许的扩展码

mac

API输入参数签名结果,签名算法:将mas_user_id,mobiles,content ,sign,serial, access_token按照顺序拼接,然后通过MD5+HEX计算后得出的值

 

  1. 返回值
    1. RET-CODE

返回值

描述

SC:4060

登录验证请求超速

SC:4010

用户 TOKEN 不存在,可能已失效或未登录

SC:4000

HTTP MAC 校验错误,请注意签名参数顺序

SC:4140

手机号码数量超过200

SC:4141

短信内容字符数超过5000

SC:4011

用户信息缺失,可能已失效或未登录

SC:5001

接口处理异常,请联系技术支持或稍候再试

SC:0000

短信成功提交至云MAS平台

SC:7002

非法号码批次

SC:7003

重复号码

SC:112

签名错误或普通短信不允许使用模板短信的签名编码

    1. MSG-GROUP
      返回短信批次号

 

C#代码

   

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;

namespace MES.Service.SMS
{
    public class SMS
    {
       //账号信息是在申请完账号,在平台开通发短信接口账号时就有了一下的信息
        string ec_name { set; get; }
        string user_name { set; get; }
        string user_passwd { set; get; }
        string url { set; get; }
        string sign { set; get; }

        public SMS(string url,string ec_name,string user_name,string user_passwd,string sign)
        {
            this.url = url;
            this.ec_name = ec_name;
            this.user_name = user_name;
            this.user_passwd = user_passwd;
            this.sign = sign;
        }

        public Result GetAuthorize()
        {
            HttpClient myHttpClient = new HttpClient();
            string strResult = "";
            Result result=new Result();
            //提交当前地址的webapi
            myHttpClient.BaseAddress = new Uri(url);
            var content = new FormUrlEncodedContent(new Dictionary<string, string>()
            {
             {"ec_name",ec_name},
             {"user_name",user_name},
             {"user_passwd",user_passwd }
            });
            var response = myHttpClient.PostAsync("authorize", content).Result;
            if (response.IsSuccessStatusCode)
            {
                // 登陆成功返回值{\"status\":\"Success\",\"access_token_expire_seconds\":\"7200\",\"mas_user_id\":\"b32fa74d-21c4-4378-9399-375565f0ef59\",\"access_token\":\"obrBEXGK8KOcwPJ8mCVmnwpBHubEVw\"}"
                strResult = response.Content.ReadAsStringAsync().Result;
                if (strResult.Contains("Success"))
                {
                   result=  JsonConvert.DeserializeObject<Result>(strResult);
                }
                else
                {
                    result.status = "Fail";
                    result.errorMassage = strResult;
                }

            }
            else
            {
                result.status = "Fail";
                result.errorMassage = response.StatusCode.ToString();
            }
            return result;
        }
        public Result SendMsg(SMSObject content)
        {
            Result result = new Result();
            string str = content.mas_user_id + content.mobiles + content.content + sign + content.serial + content.access_token;
            content.mac = Md5Hex(str);
            string strJson = JsonConvert.SerializeObject(content);
            //string _data = EncryptBase64(strJson);
            var _data = new FormUrlEncodedContent(new Dictionary<string, string>()
            {
             {"mas_user_id",content.mas_user_id},
             {"mobiles",content.mobiles},
             {"content",content.content },
             {"sign",sign },
             {"serial","" },
             {"mac",content.mac }
            });
            _data.Headers.ContentType.CharSet = "UTF-8";// = new MediaTypeHeaderValue("application/x-www-form-urlencoded; charset=UTF-8");

            HttpClient myHttpClient = new HttpClient();
            string strResult = "";
            //提交当前地址的webapi
            myHttpClient.BaseAddress = new Uri(url);

            var response = myHttpClient.PostAsync("sendSms", _data).Result;
            if (response.IsSuccessStatusCode)
            {
                //发送成功返回字符串实例{\"RET-CODE\":\"SC:0000\",\"MSG-GROUP\":\"be654d4c-2e9a-4e8b-9ef4-3930dabd6f18\"}
                strResult = response.Content.ReadAsStringAsync().Result;
                    if (strResult.Contains("SC:0000"))//SC:0000 发送成功的返回代码
                    {
                        result.status = "Success";
                    }
                    else
                    {
                        result.status = "Fail";
                        result.errorMassage = strResult;
                    }

             }
            else
            {
                result.status = "Fail";
                result.errorMassage = response.StatusCode.ToString();
            }
            return result;
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="mobiles"></param>
        /// <param name="content"></param>
        /// <returns></returns>
        public Result sendMsg(string mobiles,string content)
        {
            SMSObject smsObject = new SMSObject();
            Result result = GetAuthorize();
            if (result.status == "Success")
            {
                smsObject.access_token = result.access_token;
                smsObject.mas_user_id = result.mas_user_id;
                smsObject.mobiles = mobiles; //如果是多个号码中间加逗号13049718607,17629216670
                smsObject.content = content; ";
               

                Result resultSendMsg = SendMsg(smsObject);
                if (resultSendMsg.status == "Success")
                {
                    return resultSendMsg;
                }
                else
                {
                    return resultSendMsg;
                }

            }
            else
            {
                return result;
            }

        }

        private static string Md5Hex(string data)
        {
            MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
            byte[] dataHash = md5.ComputeHash(Encoding.UTF8.GetBytes(data));
            StringBuilder sb = new StringBuilder();
            foreach (byte b in dataHash)
            {
                sb.Append(b.ToString("x2").ToUpper());
            }
            return sb.ToString();
        }
    }
    

    public class SMSObject
    {
     public   string mas_user_id { set; get; }
     //public   string apId { set; get; }
     //public   string secretKey { set; get; }
     public   string mobiles { set; get; }
     public   string content { set; get; }
     public    string serial { set; get; }
     public    string mac { set; get; }
     public    string access_token { set; get; }
     
    }

   
    public class Result
    {
        public string status { set; get; }
        public string access_token_expire_seconds { set; get; }
        public string mas_user_id { set; get; }
        public string access_token { set; get; }
        public string errorMassage { set; get; }
    }

}

 

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值