예제 #1
0
        /// <summary>
        /// 判断预览消息发送是否成功。
        /// </summary>
        /// <param name="sendWXPreviewMessageResponseModel"></param>
        /// <returns></returns>
        public static bool IsPreviewMessageSentSuccessfully(SendWXPreviewMessageResponseModel sendWXPreviewMessageResponseModel)
        {
            bool isSuccess = false;

            //判断是否成功
            if (sendWXPreviewMessageResponseModel != null && sendWXPreviewMessageResponseModel.Ret == 0) //不为空,并且错误码为 0时
            {
                isSuccess = true;
            }

            return(isSuccess);
        }
예제 #2
0
        /// <summary>
        /// 判断是否为无效的推送号。
        /// </summary>
        /// <param name="sendWXPreviewMessageResponseModel"></param>
        /// <returns></returns>
        private static bool IsInvalidPushNo(SendWXPreviewMessageResponseModel sendWXPreviewMessageResponseModel)
        {
            var isInvalidPushNo = false;

            if (sendWXPreviewMessageResponseModel == null ||
                sendWXPreviewMessageResponseModel.Ret == 64501 ||
                sendWXPreviewMessageResponseModel.Ret == 64502 ||
                sendWXPreviewMessageResponseModel.Ret == 64503 ||
                sendWXPreviewMessageResponseModel.Ret == 10703 ||
                sendWXPreviewMessageResponseModel.Ret == -20000 ||
                sendWXPreviewMessageResponseModel.Ret == -2 ||
                sendWXPreviewMessageResponseModel.Ret == -1
                )
            {
                isInvalidPushNo = true;
            }

            return(isInvalidPushNo);
        }
예제 #3
0
        private static IEnumerable <WXPublicAccountBlockStatusModel> SetPreviewMessageSuccess(string apiBaseUrl, int serverID,
                                                                                              Proc_GetRobotServerMessageQueueForWXRobot_Result mq,
                                                                                              SendWXPreviewMessageResponseModel sendWXPreviewMessageResponseModel,
                                                                                              IEnumerable <WXPublicAccountBlockStatusModel> wxPublicAccountBlockStatuses)
        {
            #region 状态此消息队列状态为“已发送”【注:此接口,已经自动把公众账号修改为Unblocked状态,所以不用专门更新Unblock状态,以减少跟数据库的请求次数】
            var dataForUpdateMessageQueueStatusToSent = string.Format("serverID={0}&messageQueueIDs={1}&AppMsgIDs={2}", serverID, mq.ID, sendWXPreviewMessageResponseModel.AppMsgID);
            var updateMessageQueueStatusToSentString  = _httper.Post(string.Format("{0}/api/zcooApi/UpdateMessageQueueStatusToSent", apiBaseUrl), dataForUpdateMessageQueueStatusToSent);

            //得到返回Model
            var updateMessageQueueStatusToSentResponseModel = Newtonsoft.Json.JsonConvert.DeserializeObject <CommonResponseModel>(updateMessageQueueStatusToSentString);
            mq.ShouldDelete = true;
            #endregion

            #region 成功时,把公众账号改回Unblocked状态
            if (updateMessageQueueStatusToSentResponseModel != null &&
                string.Compare(updateMessageQueueStatusToSentResponseModel.ReturnMessage, "OK", StringComparison.InvariantCultureIgnoreCase) == 0)
            {
                wxPublicAccountBlockStatuses = UpdateWXPublicAccountBlockStatusModelToUnblockStatus(wxPublicAccountBlockStatuses, (int)mq.PublicAccountID);
            }
            #endregion

            return(wxPublicAccountBlockStatuses);
        }
예제 #4
0
        private static SendWXPreviewMessageResponseModel SendPreviewMessage(
            string apiBaseUrl,
            string urlForSendPreviewMessage,
            string dataForSendPreviewMessage,
            Proc_GetMessageInfoByMessageIDs_Result message,
            Proc_GetRobotServerMessageQueueForWXRobot_Result mq,
            int showCoverInContent,
            int showSourceUrlInContent,
            int relogin)
        {
            var sendWXPreviewMessageResponseModel = new SendWXPreviewMessageResponseModel()
            {
                Ret = -1000
            };                                                                                        //默认让错误码为 -1000,这样当返回为0时,就是成功的

            urlForSendPreviewMessage = string.Format("{0}/api/wx/SendWXPreviewMessage", apiBaseUrl);  //fuxily
            string sourceUrl = null;

            if (!string.IsNullOrEmpty(mq.MoreParams) && !string.IsNullOrEmpty(message.SourceUrl))
            {
                if (message.MessageFunctionID != 12)
                {
                    string secret = WebConfigurationManager.AppSettings["AESEncryptSecret"].ToString();
                    string newSD  = "";
                    try
                    {
                        newSD = Common.Encryptor.AESEncryptor.AESEncrypt(mq.ID.ToString(), secret);
                        newSD = System.Web.HttpUtility.UrlEncode(newSD);
                    }
                    catch
                    {
                    }
                    sourceUrl = message.SourceUrl + "?messageQueueID=" + newSD;
                }
                else
                {
                    sourceUrl = message.SourceUrl + ",messageQueueID@" + mq.ID + ",ToUserID@" + mq.ToUserID + "," + mq.MoreParams;
                }
            }
            else
            {
                sourceUrl = message.SourceUrl;
            }
            dataForSendPreviewMessage = Common.HTTP.PostDataHandler.GetPostData
                                        (
                new List <PostDataRequestModel>()
            {
                new PostDataRequestModel()
                {
                    ParameterName = "schoolPublicAccountID", ParameterValue = message.SchoolPublicAccountID
                },
                new PostDataRequestModel()
                {
                    ParameterName = "messageFunctionID", ParameterValue = message.MessageFunctionID
                },
                new PostDataRequestModel()
                {
                    ParameterName = "toWxNo", ParameterValue = mq.PushNo
                },
                new PostDataRequestModel()
                {
                    ParameterName = "title", ParameterValue = message.Title
                },
                new PostDataRequestModel()
                {
                    ParameterName = "digest", ParameterValue = message.Digest
                },
                new PostDataRequestModel()
                {
                    ParameterName = "content", ParameterValue = message.Content, ConvertToHtml = true
                },
                new PostDataRequestModel()
                {
                    ParameterName = "sourceUrl", ParameterValue = sourceUrl
                },
                new PostDataRequestModel()
                {
                    ParameterName = "author", ParameterValue = "志酷通"
                },
                new PostDataRequestModel()
                {
                    ParameterName = "showCoverPic", ParameterValue = showCoverInContent
                },
                new PostDataRequestModel()
                {
                    ParameterName = "showSourceUrl", ParameterValue = showSourceUrlInContent
                },
                new PostDataRequestModel()
                {
                    ParameterName = "relogin", ParameterValue = relogin
                },
                new PostDataRequestModel()
                {
                    ParameterName = "greeting", ParameterValue = mq.Greeting
                },
                new PostDataRequestModel()
                {
                    ParameterName = "signature", ParameterValue = mq.NickName
                },
                new PostDataRequestModel()
                {
                    ParameterName = "toUserID", ParameterValue = mq.ToUserID
                },
                new PostDataRequestModel()
                {
                    ParameterName = "fromUserID", ParameterValue = mq.FromUserID
                }
            }
                                        );

            var sendPreviewMessageResultString = _httper.Post(urlForSendPreviewMessage, dataForSendPreviewMessage);

            sendWXPreviewMessageResponseModel = Newtonsoft.Json.JsonConvert.DeserializeObject <SendWXPreviewMessageResponseModel>(sendPreviewMessageResultString);

            return(sendWXPreviewMessageResponseModel);
        }