TG.WXCRM.V4/CRMServices/PkgSms/InterfaceExec/YiZhengSms.cs

111 lines
3.8 KiB
C#

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Net;
using System.Text;
using System.Web;
using WX.CRM.BLL.Util;
using WX.CRM.CRMServices.SMS.InterfaceModel;
using WX.CRM.IBLL.Util;
namespace WX.CRM.CRMServices.SMS.InterfaceExec
{
public class YiZhengSms : IMsgSend
{
string account = "";
string pwd = "";
string url = "";
public YiZhengSms(string _account = "", string _password = "")
{
YiZhengConfig config = new YiZhengConfig();
account = config.account;
pwd = config.pwd;
url = config.url;
if (!string.IsNullOrEmpty(_account) && !string.IsNullOrEmpty(_password))
{
pwd = _password;
account = _account;
}
}
public ReturnResult Execute(string[] mobiles, string msg)
{
return Send(mobiles, msg);
}
public decimal queryAmt()
{
throw new NotImplementedException();
}
ReturnResult Send(string[] mobiles, string msg)
{
var mobilesStr = string.Join(",", mobiles);
var result = new ReturnResult();
result.SendStr = mobilesStr;
result.ReturnStr = mobilesStr;
try
{
//WX.CRM.Common.LogHelper.Error("url:" + url);
var list = new List<SmsDto>();
foreach (var item in mobiles)
{
list.Add(new SmsDto() { mobile = item, message = msg });
}
var json = JsonConvert.SerializeObject(list);
ISecurityHelper sHelper = new SecurityHelper();
//var para = sHelper.createSignEncodingStr(json);
string clientid = "UPWEBSITE";
//string key = "content={0}&clientid=gd_crm&sign={1}";
string jiami = sHelper.encyptData(clientid, json);
string jiami1 = HttpUtility.UrlEncode(jiami, Encoding.UTF8);
string jiasuo = sHelper.signData(clientid, jiami);
string jiasuo1 = HttpUtility.UrlEncode(jiasuo, Encoding.UTF8);
var para = new PutSmsDto() { clientid = clientid, content = jiami1, sign = jiasuo1 };
WebClient webClient = new WebClient();
webClient.Encoding = Encoding.UTF8;
webClient.Headers.Add("Content-Type", "application/json");
//LogHelper.Info("url:" + url);
//LogHelper.Info("para:" + JsonConvert.SerializeObject(para));
var jsonResult = webClient.UploadString(url, "POST", JsonConvert.SerializeObject(para));
//var jsonResult = Utility.GetData(url, para, Encoding.UTF8);
var objResult = JsonConvert.DeserializeObject<SmsResult>(jsonResult);
if (objResult.result)
{
result.submitStatus = SubmitStatus.success;
}
else
{
result.submitStatus = SubmitStatus.fail;
}
}
catch (Exception ex)
{
result.submitStatus = SubmitStatus.fail;
WX.CRM.Common.LogHelper.Error("YiZhengSms.Send:" + ex.Message + ex.StackTrace);
}
return result;
}
private class SmsDto
{
public string message { get; set; }
public string mobile { get; set; }
}
private class SmsResult
{
public bool result { get; set; }
public int retcode { get; set; }
}
private class PutSmsDto
{
public string content { get; set; }
public string clientid { get; set; }
public string sign { get; set; }
}
}
}