Sms.cs
6.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
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
{
/// <summary>
/// 短信帮助
/// 版 本:V3.0.0
/// 版 权:Wesley(https://www.NCCsoft.com)
/// 作 者:NCC开发平台组
/// </summary>
[SuppressSniffer]
public class Sms
{
#region 阿里云
/// <summary>
/// 发送(阿里云短信)
/// </summary>
/// <param name="smsModel"></param>
/// <returns></returns>
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 "短信发送失败";
}
}
/// <summary>
/// 消息处理机制
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
private static string MessageHandle(string str)
{
SmsMessageModel message = JsonConvert.DeserializeObject<SmsMessageModel>(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 腾讯云
/// <summary>
/// 腾讯云短信
/// </summary>
/// <param name="secretId">secretId</param>
/// <param name="secretKey">secretKey</param>
/// <param name="region">地域(华北地区:ap-beijing,华南地区:ap-guangzhou,华东地区:ap-nanjing)</param>
/// <param name="signName">签名</param>
/// <param name="mobile">手机号(国内+86)</param>
/// <param name="smsSdkAppId">smsSdkAppId</param>
/// <param name="templateId">模板id</param>
/// <param name="templateParam">模板参数</param>
/// <returns></returns>
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
}
}