/// <summary>
///商品提交微信审核通过后录入直播商品库
/// </summary>
/// <param name="QYID"></param>
/// <param name="PROMOTION_ID"></param>
/// <returns></returns>
[HttpPost]
public string ToWXSH(string PRO_SHSP)
{
string res = "", errStr = "", url="" ;
try
{
url = ConfigurationManager.AppSettings["LiveUrl"].ToString();
string a_token = GetAccessToken();//直播凭证
string path = "C:\\Users\\22813\\Pictures\\QQ浏览器截图\\product.png";
if (string.IsNullOrEmpty(a_token))
{
return JsonConvert.SerializeObject(new { code = "0", info = "AccessToken凭证获取失败" });
}
JArray jarr = (JArray)JsonConvert.DeserializeObject(PRO_SHSP);
List<Root> list = new List<Root>();
string updatesql = "";//更新sql
foreach (JObject item in jarr)
{
path = Server.MapPath("~") + item["ICON_URL"].ToString();
string Media_ID="";
string mediaRes= GetMedia_ID(a_token, "image", path);//媒体凭证
if (string.IsNullOrEmpty(mediaRes))
{
return JsonConvert.SerializeObject(new { code = "0", msg = item["SNAME"].ToString()+",商品图片不存在" });
}
else {
JObject Jres = (JObject)JsonConvert.DeserializeObject(mediaRes);
if (Jres.Property("media_id") != null)
{
Media_ID = Jres["media_id"].ToString();
}
else {
return JsonConvert.SerializeObject(new { code = "0", msg = item["SNAME"].ToString() + "图片错误:" + Jres["errmsg"] });
}
}
Root root = new Root();
GoodsInfo gif = new GoodsInfo();
gif.coverImgUrl = Media_ID;
gif.name = item["SNAME"].ToString();
gif.priceType = 1;
gif.price = item["PRICE"].ToString();
gif.url = url;
root.goodsInfo = gif;
string str = JsonConvert.SerializeObject(root);
string spres = SPSH(str, a_token);
JObject jres = (JObject)JsonConvert.DeserializeObject(spres);
if (jres.Property("errcode") != null && jres["errcode"].ToString() == "0")
{
string goodsId = jres["goodsId"].ToString();
string auditId = jres["auditId"].ToString();
//do something
}
else
{
errStr += "商品:" + item["SNAME"].ToString() + ",错误信息:" + jres["errmsg"].ToString() + ",";
}
}
}
catch (Exception ex)
{
res = JsonConvert.SerializeObject(new { code = "0", msg = ex.Message});
}
JObject resj = (JObject)JsonConvert.DeserializeObject(res);
if (!string.IsNullOrEmpty(errStr))
{
errStr += "存在审核失败的商品:" + errStr.TrimEnd(',');
}
resj["msg"] = resj["msg"].ToString() + errStr;
return resj.ToString();
}
/// <summary>
/// 获取凭证
/// </summary>
/// <returns></returns>
public static string GetAccessToken()
{
HttpCookie cookie = new HttpCookie("Access_Token");
string access_token = "";
if (cookie != null)
{
string url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=&secret=";
string result = GetUrLReq(url, "get", "application/x-www-form-urlencoded");
//Dictionary<string, string> dict = JsonConvert_v.ReadJson(result);
JObject jbj = (JObject)JsonConvert.DeserializeObject(result);
if (jbj.Property("access_token") != null)
{
access_token = jbj["access_token"].ToString();
//两小时才会过期,现在先存入 Session中
cookie["access_token"] = access_token;
cookie.Expires = DateTime.Now.AddHours(1.5);//设置一个半小时过期
return access_token;
}
}
else
{
cookie["access_token"].ToString();
}
return null;
}
/// <summary>
/// 获取媒体凭证
/// </summary>
/// <param name="access_token"></param>
/// <param name="type"></param>
/// <param name="path"></param>
/// <returns></returns>
public static string GetMedia_ID(string access_token, string type, string path)
{
string media_id = "";
// 设置参数
string url = string.Format("http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token={0}&type={1}", access_token, type);
if (!System.IO.File.Exists(path))
{
return "";
}
string res = HttpUploadFile(url, path);
//JObject jbj = (JObject)JsonConvert.DeserializeObject(res);
//if (jbj.Property("media_id") != null)
//{
// media_id = jbj["media_id"].ToString();
//}
//else {
//}
return res;
}
/// <summary>
/// 请求商品审核
/// </summary>
/// <param name="sps"></param>
/// <param name="a_token"></param>
/// <returns></returns>
public static string SPSH(string sps, string a_token)
{
string url = "https://api.weixin.qq.com/wxaapi/broadcast/goods/add?access_token=" + a_token;
string spRes = PostUrl(url, sps, "application/json");
return spRes;
}
/// <summary>
/// post发送json数据
/// </summary>
/// <param name="url"></param>
/// <param name="pm_str"></param>
/// <param name="pm_ContentType"></param>
/// <returns></returns>
public static string PostUrl(string url, string pm_str, string pm_ContentType)
{
StreamReader reader = null;
Stream requestStream = null;
HttpWebResponse Response = null;
try
{
HttpWebRequest myReq = (HttpWebRequest)HttpWebRequest.Create(url);
myReq.Method = "POST";
if (pm_ContentType != null)
{
myReq.ContentType = pm_ContentType;
}
byte[] bz = System.Text.Encoding.UTF8.GetBytes(pm_str);
requestStream = myReq.GetRequestStream();
requestStream.Write(bz, 0, bz.Length);
requestStream.Close();
requestStream = null;
Response = (HttpWebResponse)myReq.GetResponse();
reader = new StreamReader(Response.GetResponseStream(), Encoding.UTF8);
string retstr = reader.ReadToEnd().Trim();
return retstr;
}
catch (Exception ex)
{
return "ERR" + ex.Message.ToString();
}
finally
{
if (reader != null)
{
reader.Close();
reader = null;
}
if (requestStream != null)
{
requestStream.Close();
requestStream = null;
}
}
}
//商品类
public class GoodsInfo
{
/// <summary>
///
/// </summary>
public string coverImgUrl { get; set; }
/// <summary>
/// TIT茶杯
/// </summary>
public string name { get; set; }
/// <summary>
///
/// </summary>
public int priceType { get; set; }
/// <summary>
///
/// </summary>
public string price { get; set; }
public string url { get; set; }
}
public class Root
{
/// <summary>
///
/// </summary>
public GoodsInfo goodsInfo { get; set; }
}