コード例 #1
0
        private void DecryptDocument(X509Certificate2 decryptionSertificate)
        {
            var encryptedNode = ResponseDocument.SelectSingleNode("/env:Envelope/env:Body/xenc:EncryptedData", Nsmgr) as XmlElement;

            if (encryptedNode == null)
            {
                return;
            }

            var encryptedXml  = new EncryptedXml(ResponseDocument);
            var encryptedData = new EncryptedData();

            encryptedData.LoadXml(encryptedNode);

            var privateKey = decryptionSertificate.PrivateKey as RSACryptoServiceProvider;
            var cipher     = ResponseDocument.SelectSingleNode("/env:Envelope/env:Header/wsse:Security/xenc:EncryptedKey/xenc:CipherData/xenc:CipherValue", Nsmgr).InnerText;

            AesManaged aes = new AesManaged
            {
                Mode    = CipherMode.CBC,
                KeySize = 256,
                Padding = PaddingMode.None,
                Key     = privateKey.Decrypt(Convert.FromBase64String(cipher), true)
            };

            encryptedXml.ReplaceData(encryptedNode, encryptedXml.DecryptData(encryptedData, aes));
        }
コード例 #2
0
        public async Task <IActionResult> Get()
        {
            var widgets = await _widgetRepository.List();

            var resources = widgets.Select(WidgetMap.ToResource);

            return(Ok(ResponseDocument.Containing(resources)));
        }
コード例 #3
0
 private void ParseResponse(string jsonResponse)
 {
     try
     {
         RawResult += (jsonResponse + Environment.NewLine);
         ResponseDocument response = JsonConvert.DeserializeObject <ResponseDocument>(jsonResponse);
         Language = response.language;
     }
     catch (Exception e)
     {
         Trace.TraceError("Error parsing server response", e.ToString());
     }
 }
コード例 #4
0
        public async Task <IActionResult> Get(string id)
        {
            try
            {
                var widget = await _widgetRepository.Get(id);

                var resource = WidgetMap.ToResource(widget);
                return(Ok(ResponseDocument.Containing(resource)));
            }
            catch (WidgetNotFoundException)
            {
                return(NotFound());
            }
        }
コード例 #5
0
        public override void OnExecuted()
        {
            try
            {
                WX_InteractionInfo model = new WX_InteractionInfo
                {
                    OpenID             = OpenId,
                    CreateTime         = DateTime.Now,
                    MsgType            = (WxMsgType)((int)Request.MsgType),
                    InteractionContent = RequestDocument.ToString(),
                    CompanyID          = config.CompanyID
                };
                bool result = false;
                if ((int)Request.MsgType != 6)
                {
                    result = WXInteractionInfoServices.Add(model);
                    if (!result)
                    {
                        string msg = string.Format("保存微信和平台交换信息失败:OpenID:{0};CreateTime:{1}:MsgType:{2};Content:{3}", model.OpenID, model.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"), model.MsgType.GetDescription(), model.InteractionContent);
                        TxtLogServices.WriteTxtLogEx("WeiXinConversation", msg);
                    }
                }

                if (ResponseDocument != null)
                {
                    int replyId = 0;
                    if (result)
                    {
                        replyId = WXInteractionInfoServices.QueryMaxIdByOpenId(OpenId);
                    }
                    //回复给用户的消息
                    WX_InteractionInfo respModel = new WX_InteractionInfo
                    {
                        OpenID             = OpenId,
                        CreateTime         = DateTime.Now,
                        MsgType            = (WxMsgType)((int)Request.MsgType),
                        InteractionContent = ResponseDocument.ToString(),
                        ReplyID            = replyId.ToString(),
                        CompanyID          = config.CompanyID
                    };
                    WXInteractionInfoServices.Add(respModel);
                }
            }
            catch (Exception ex)
            {
                ExceptionsServices.AddExceptions(ex, string.Format("保存微信交互消息失败,OPENID:{0}", OpenId), LogFrom.WeiXin);
                TxtLogServices.WriteTxtLogEx("WeiXinConversation", ex);
            }
        }
 public Response GetDocument(DocumentRequest documentRequest)
 {
     try
     {
         var              data = _dalDoc.GetDocument(documentRequest);
         DataRow          row  = data.Tables[0].Rows[0];
         ResponseDocument r    = new ResponseDocument()
         {
             Document = new Document()
             {
                 UserID = (string)row[0], DocumentName = (string)row[2], docID = (int)row[3], ImageURL = (string)row[1]
             }
         };
         return(r);
     }
     catch
     {
         return(new ResponseErr());
     }
 }
コード例 #7
0
        /// <summary>
        /// Sjekker at soap envelopen inneholder timestamp, body og messaging element med korrekt id og referanser i security signaturen.
        /// </summary>
        protected void ValiderSignaturReferences(XmlElement signature, SignedXmlWithAgnosticId signedXml, string[] requiredReferences)
        {
            foreach (var elementXPath in requiredReferences)
            {
                // Sørg for at svar inneholde påkrevede noder.
                var nodes = ResponseDocument.SelectNodes(elementXPath, Nsmgr);
                if (nodes == null || nodes.Count == 0)
                {
                    throw new Exception(string.Format("Kan ikke finne påkrevet element '{0}' i svar fra meldingsformidler.", elementXPath));
                }
                if (nodes.Count > 1)
                {
                    throw new Exception(string.Format("Påkrevet element '{0}' kan kun forekomme én gang i svar fra meldingsformidler. Ble funnet {1} ganger.", elementXPath, nodes.Count));
                }

                // Sørg for at det finnes en refereanse til node i signatur element
                var elementId = nodes[0].Attributes["wsu:Id"].Value;

                var references = signature.SelectNodes(string.Format("./ds:SignedInfo/ds:Reference[@URI='#{0}']", elementId), Nsmgr);
                if (references == null || references.Count == 0)
                {
                    throw new Exception(string.Format("Kan ikke finne påkrevet refereanse til element '{0}' i signatur fra meldingsformidler.", elementXPath));
                }
                if (references.Count > 1)
                {
                    throw new Exception(string.Format("Påkrevet refereanse til element '{0}' kan kun forekomme én gang i signatur fra meldingsformidler. Ble funnet {1} ganger.", elementXPath, references.Count));
                }

                // Sørg for at Id node matcher
                var targetNode = signedXml.GetIdElement(ResponseDocument, elementId);
                if (targetNode != nodes[0])
                {
                    throw new Exception(string.Format("Signaturreferansen med id '{0}' må refererer til node med sti '{1}'", elementId, elementXPath));
                }
            }
        }
コード例 #8
0
        /// <summary>
        /// 【异步方法】执行微信请求
        /// </summary>
        public override async Task BuildResponseMessageAsync(CancellationToken cancellationToken)
        {
            #region NeuChar 执行过程

            var weixinAppId = this._postModel == null ? "" : this._postModel.AppId;

            switch (RequestMessage.MsgType)
            {
            case RequestMsgType.Text:
            {
                try
                {
                    var requestMessage = RequestMessage as RequestMessageText;
                    ResponseMessage = (await CurrentMessageHandlerNode.ExecuteAsync(requestMessage, this, weixinAppId).ConfigureAwait(false)
                                       ?? (await OnTextOrEventRequestAsync(requestMessage).ConfigureAwait(false)))
                                      ?? (await OnTextRequestAsync(requestMessage).ConfigureAwait(false));
                }
                catch (Exception ex)
                {
                    SenparcTrace.SendCustomLog("mp-response error", ex.Message + "\r\n|||\r\n" + (ex.InnerException != null ? ex.InnerException.ToString() : ""));
                }
            }
            break;

            case RequestMsgType.Location:
                ResponseMessage = await OnLocationRequestAsync(RequestMessage as RequestMessageLocation).ConfigureAwait(false);

                break;

            case RequestMsgType.Image:
                //WeixinTrace.SendCustomLog("NeuChar Image", $"appid:{weixinAppId}");
                ResponseMessage = await CurrentMessageHandlerNode.ExecuteAsync(RequestMessage, this, weixinAppId).ConfigureAwait(false)
                                  ?? await OnImageRequestAsync(RequestMessage as RequestMessageImage).ConfigureAwait(false);

                break;

            case RequestMsgType.Voice:
                ResponseMessage = await OnVoiceRequestAsync(RequestMessage as RequestMessageVoice).ConfigureAwait(false);

                break;

            case RequestMsgType.Video:
                ResponseMessage = await OnVideoRequestAsync(RequestMessage as RequestMessageVideo).ConfigureAwait(false);

                break;

            case RequestMsgType.Link:
                ResponseMessage = await OnLinkRequestAsync(RequestMessage as RequestMessageLink).ConfigureAwait(false);

                break;

            case RequestMsgType.ShortVideo:
                ResponseMessage = await OnShortVideoRequestAsync(RequestMessage as RequestMessageShortVideo).ConfigureAwait(false);

                break;

            case RequestMsgType.File:
                ResponseMessage = await OnFileRequestAsync(RequestMessage as RequestMessageFile).ConfigureAwait(false);

                break;

            case RequestMsgType.NeuChar:
                ResponseMessage = await OnNeuCharRequestAsync(RequestMessage as RequestMessageNeuChar).ConfigureAwait(false);

                break;

            case RequestMsgType.Unknown:
                Weixin.WeixinTrace.SendCustomLog("RequestMsgType.Unknown调试", "RequestMessageDocument:" + ResponseDocument?.ToString());
                Weixin.WeixinTrace.SendCustomLog("RequestMsgType.Unknown调试", "RequestMessage:" + RequestMessage?.ToJson(true));

                ResponseMessage = await OnUnknownTypeRequestAsync(RequestMessage as RequestMessageUnknownType).ConfigureAwait(false);

                break;

            case RequestMsgType.Event:
            {
                var requestMessageText = (RequestMessage as IRequestMessageEventBase).ConvertToRequestMessageText();
                ResponseMessage = (await CurrentMessageHandlerNode.ExecuteAsync(RequestMessage, this, weixinAppId).ConfigureAwait(false)
                                   ?? await OnTextOrEventRequestAsync(requestMessageText).ConfigureAwait(false))
                                  ?? (await OnEventRequestAsync(RequestMessage as IRequestMessageEventBase).ConfigureAwait(false));
            }
            break;

            default:
                Weixin.WeixinTrace.SendCustomLog("NeuChar", "未知的MsgType请求类型" + RequestMessage.MsgType);
                //throw new UnknownRequestMsgTypeException("未知的MsgType请求类型", null);
                break;
            }

            #endregion
        }
コード例 #9
0
        }                                                        //Se genera archivo

        #endregion

        // Si la actividad devuelve un valor, se debe derivar de CodeActivity<TResult>
        // y devolver el valor desde el método Execute.
        protected override void Execute(CodeActivityContext executionContext)
        {
            //Create the tracing service
            ITracingService tracingService = executionContext.GetExtension <ITracingService>();

            //Create the context
            IWorkflowContext            context        = executionContext.GetExtension <IWorkflowContext>();
            IOrganizationServiceFactory serviceFactory = executionContext.GetExtension <IOrganizationServiceFactory>();
            IOrganizationService        service        = serviceFactory.CreateOrganizationService(context.UserId);

            // GUID of target record (case)
            Guid gCaseId = context.PrimaryEntityId;

            //Create the statecode vars
            int iStatusCode = 0;
            int iStateCode  = 0;

            //Obtenemos los valores de los parámetros del caso.
            string strPhaseName         = PhaseName.Get <string>(executionContext);
            bool   isResponseDocument   = ResponseDocument.Get <bool>(executionContext);
            bool   isCourierLetterSent  = CourierLetterSent.Get <bool>(executionContext);
            bool   isCustomerEMailSent  = CustomerEMailSent.Get <bool>(executionContext);
            bool   isLetterWasReceived  = LetterWasReceived.Get <bool>(executionContext);
            bool   isEMailWasReceived   = EMailWasReceived.Get <bool>(executionContext);
            bool   isTrasuFileGenerated = TrasuFileGenerated.Get <bool>(executionContext);


            //4.2.3	Reclamos OSIPTEL – Estados:

            //1. BORRADOR, todos los casos inician con este statecode = 864340007

            //2. PENDIENTE, después de haber pasado por: Identificación, Documentación, Investigación = 864340008
            //Validamos que el caso haya pasado correctamente por los estados mencionados arriba.

            if (strPhaseName == "Identificacion" || strPhaseName == "Identity")
            {
                iStatusCode = (int)StatusCode.Pending;
                iStateCode  = (int)StateCode.Active;
            }
            else if (strPhaseName == "Documentacion" || strPhaseName == "Documents")
            {
                iStatusCode = (int)StatusCode.Pending;
                iStateCode  = (int)StateCode.Active;
            }
            else if (strPhaseName == "Investigacion" || strPhaseName == "Research")
            {
                iStatusCode = (int)StatusCode.Pending;
                iStateCode  = (int)StateCode.Active;
            }

            //3. CON RESOLUCIÓN,después de que el documento de respuesta es generado en la etapa "Notificar Cliente" = 864340001
            if (isResponseDocument)
            {
                if (strPhaseName == "Notificar Cliente" || strPhaseName == "Notify Customer")
                {
                    if (isResponseDocument == true)
                    {
                        iStatusCode = (int)StatusCode.WithResolution;
                        iStateCode  = (int)StateCode.Active;
                    }
                }
            }

            //4. EN NOTIFICACIÓN, Caso de Reclamo OSIPTEL con Estado actualizado a “En Notificación” después de recibir la confirmación del sistema
            //   externo de que la carta se envió al courier o el email se envió al cliente = 864340002
            else if (isCourierLetterSent || isCustomerEMailSent)
            {
                if (isCourierLetterSent == true)
                {
                    iStatusCode = (int)StatusCode.InNotification;
                    iStateCode  = (int)StateCode.Active;
                }

                else if (isCustomerEMailSent == true)
                {
                    iStatusCode = (int)StatusCode.InNotification;
                    iStateCode  = (int)StateCode.Active;
                }
            }

            //5. NOTIFICADO, Caso de Reclamo OSIPTEL con estado actualizado a “Notificado” después de la confirmación del sistema externo
            //   sobre el envío de la notificación vía email o en físico por el Courier.  = 864340003
            //To get this answer we need consume a web service to know if email or letter was received to their destiny.
            else if (isLetterWasReceived || isEMailWasReceived)
            {
                if (isLetterWasReceived == true)
                {
                    iStatusCode = (int)StatusCode.Notified;
                    iStateCode  = (int)StateCode.Active;
                }

                else if (isEMailWasReceived == true)
                {
                    iStatusCode = (int)StatusCode.Notified;
                    iStateCode  = (int)StateCode.Active;
                }
            }

            //6. POR ELEVAR, Caso de Reclamo OSIPTEL se actualiza con el estado “Por Elevar ” cuando el caso es avanzado a la etapa “Notificar TRASU”
            //   Esto significa que el cliente apeló y la oferta SARA fue rechazada / imposible  = 864340004
            else if (strPhaseName == "Notificar TRASU" || strPhaseName == "Notify TRASU")
            {
                iStatusCode = (int)StatusCode.ToElevate;
                iStateCode  = (int)StateCode.Active;
            }

            //7. ELEVADO, Caso de Reclamo OSIPTEL es actualizado con estado “Elevado” cuando se genera el archivo de informe a TRASU = 864340005
            else if (isTrasuFileGenerated)
            {
                if (isTrasuFileGenerated == true)
                {
                    iStatusCode = (int)StatusCode.Elevated;
                }
                iStateCode = (int)StateCode.Active;
            }

            //8. RESUELTO, Caso de Reclamo OSIPTEL es actualizado con estado “Resuelto” después de que es concluido automáticamente   = 864340009
            //Esto se guarda automáticamente.

            //Procedemos a actualizar el statuscode del caso.
            UpdateStatusCode(gCaseId, iStatusCode, iStateCode, service);
        }