using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Http;
using Aliyun.Acs.Core.Profile;
using NCC.Dependency;
using NCC.Expand.Thirdparty.Sms.Model;
using Newtonsoft.Json;
using System;
using System.Text;
using TencentCloud.Common;
using TencentCloud.Common.Profile;
using TencentCloud.Sms.V20210111;
using TencentCloud.Sms.V20210111.Models;
namespace NCC.Expand.Thirdparty.Sms
{
///
/// 短信帮助
/// 版 本:V3.0.0
/// 版 权:Wesley(https://www.NCCsoft.com)
/// 作 者:NCC开发平台组
///
[SuppressSniffer]
public class Sms
{
#region 阿里云
///
/// 发送(阿里云短信)
///
///
///
public static string SendSmsByAli(SmsModel smsModel)
{
try
{
IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", smsModel.keyId, smsModel.keySecret);
DefaultAcsClient client = new DefaultAcsClient(profile);
CommonRequest request = new CommonRequest();
request.Method = MethodType.POST;
request.Domain = "dysmsapi.aliyuncs.com";
request.Version = "2017-05-25";
request.Action = "SendSms";
request.AddQueryParameters("PhoneNumbers", smsModel.mobileAli);
request.AddQueryParameters("SignName", smsModel.signName);
request.AddQueryParameters("TemplateCode", smsModel.templateId);
request.AddQueryParameters("TemplateParam", smsModel.templateParamAli);
CommonResponse response = client.GetCommonResponse(request);
return MessageHandle(Encoding.Default.GetString(response.HttpResponse.Content));
}
catch (Exception ex)
{
return "短信发送失败";
}
}
///
/// 消息处理机制
///
///
///
private static string MessageHandle(string str)
{
SmsMessageModel message = JsonConvert.DeserializeObject(str);
string result = "";
switch (message.Code)
{
case "OK":
//短信发送成功
result = "OK";
break;
case "isp.RAM_PERMISSION_DENY":
result = "RAM权限DENY";
break;
case "isv.OUT_OF_SERVICE":
result = "业务停机";
break;
case "isv.PRODUCT_UN_SUBSCRIPT":
result = "未开通云通信产品的阿里云客户";
break;
case "isv.PRODUCT_UNSUBSCRIBE":
result = "产品未开通";
break;
case "isv.ACCOUNT_NOT_EXISTS":
result = "账户不存在";
break;
case "isv.ACCOUNT_ABNORMAL":
result = "账户异常 ";
break;
case "isv.SMS_TEMPLATE_ILLEGAL":
result = "短信模板不合法";
break;
case "isv.SMS_SIGNATURE_ILLEGAL":
result = "短信签名不合法";
break;
case "isv.INVALID_PARAMETERS":
result = "参数异常";
break;
case "isv.MOBILE_NUMBER_ILLEGAL":
result = "非法手机号";
break;
case "isv.MOBILE_COUNT_OVER_LIMIT":
result = "手机号码数量超过限制";
break;
case "isv.TEMPLATE_MISSING_PARAMETERS":
result = "模板缺少变量";
break;
case "isv.BUSINESS_LIMIT_CONTROL":
result = "业务限流";
break;
case "isv.INVALID_JSON_PARAM":
result = "JSON参数不合法,只接受字符串值";
break;
case "isv.PARAM_LENGTH_LIMIT":
result = "参数超出长度限制";
break;
case "isv.PARAM_NOT_SUPPORT_URL":
result = "不支持URL";
break;
case "isv.AMOUNT_NOT_ENOUGH":
result = "账户余额不足";
break;
case "isv.TEMPLATE_PARAMS_ILLEGAL":
result = "模板变量里包含非法关键字";
break;
}
return result;
}
#endregion
#region 腾讯云
///
/// 腾讯云短信
///
/// secretId
/// secretKey
/// 地域(华北地区:ap-beijing,华南地区:ap-guangzhou,华东地区:ap-nanjing)
/// 签名
/// 手机号(国内+86)
/// smsSdkAppId
/// 模板id
/// 模板参数
///
public static string SendSmsByTencent(SmsModel smsModel)
{
try
{
Credential cred = new Credential
{
SecretId = smsModel.keyId,
SecretKey = smsModel.keySecret
};
ClientProfile clientProfile = new ClientProfile();
HttpProfile httpProfile = new HttpProfile();
httpProfile.Endpoint = ("sms.tencentcloudapi.com");
clientProfile.HttpProfile = httpProfile;
SmsClient client = new SmsClient(cred, smsModel.region, clientProfile);
SendSmsRequest req = new SendSmsRequest();
req.PhoneNumberSet = smsModel.mobileTx;
req.SmsSdkAppId = smsModel.appId;
req.SignName = smsModel.signName;
req.TemplateId = smsModel.templateId;
req.TemplateParamSet = smsModel.templateParamTx;
SendSmsResponse resp = client.SendSmsSync(req);
return resp.RequestId;
}
catch (Exception ex)
{
return "短信发送失败";
}
}
#endregion
}
}