調用:SubscribeMessageToUser("用戶openid字符串");
官方比較坑:限制必須點擊授權按鈕的時候才能執行否則就會提示:
{"errcode":43101,"errmsg":"user refuse to accept the msg rid: 5f66d001-785045b2-5443a9f9"}
翻譯解釋為:用戶拒絕接收信息
小程序向指定用戶推送模版消息(c#代碼)
[HttpPost]
public JsonResult SubscribeMessageToUser(string openid, string title=null, string content=null)
{
AjaxResult res = new AjaxResult();
res.state = false;
try
{
AccessTokenModel AccessTokenModel = xcx_Get_Token();//獲取access_token
string _url = string.Format("https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token={0}", AccessTokenModel.access_token);
//json參數
string jsonParam = Newtonsoft.Json.JsonConvert.SerializeObject(new
{
touser = openid,//用戶openid
template_id = "模版ID", // 模版template_id
page = "pages/index/index",
//miniprogram_state = "developer",
lang = "zh_CN",
data = new
{
thing1 = new { value = "簽到提醒" },
time5 = new { value = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") },
thing2 = new { value = "點擊簽到" }
}
});
var request = (HttpWebRequest)WebRequest.Create(_url);
request.Method = "POST";
request.ContentType = "application/json;charset=UTF-8";
byte[] byteData = Encoding.UTF8.GetBytes(jsonParam);
int length = byteData.Length;
request.ContentLength = length;
Stream writer = request.GetRequestStream();
writer.Write(byteData, 0, length);
writer.Close();
var response = (HttpWebResponse)request.GetResponse();
var responseString = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8")).ReadToEnd();
JavaScriptSerializer js = new JavaScriptSerializer(); //實例化一個能夠序列化數據的類
AccessTokenModel_Err ErrInfo = js.Deserialize<AccessTokenModel_Err>(responseString);
//AccessTokenModel_Err ErrInfo = (AccessTokenModel_Err)JsonConvert.DeserializeObject(responseString);
res.message = ErrInfo.errmsg;
if(ErrInfo.errcode==0)
res.state = true;
//return responseString.ToString();
}
catch (Exception ex)
{
res.state = false;
res.message = ex.Message;
}
return Json(res, JsonRequestBehavior.AllowGet);
}