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)); }
public async Task <IActionResult> Get() { var widgets = await _widgetRepository.List(); var resources = widgets.Select(WidgetMap.ToResource); return(Ok(ResponseDocument.Containing(resources))); }
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()); } }
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()); } }
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()); } }
/// <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)); } } }
/// <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 }
} //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); }