public IAck Send(object request) { using (var client = new PaymentPortsTypeAsyncClient(_binding, _remoteAddress)) { client.Endpoint.EndpointBehaviors.Add(new MyEndpointBehavior()); if (!_config.IsPPAK) { client.ClientCredentials.UserName.UserName = Constants.UserAuth.Name; client.ClientCredentials.UserName.Password = Constants.UserAuth.Passwd; } if (!_config.UseTunnel) { client.ClientCredentials.ClientCertificate.SetCertificate( StoreLocation.CurrentUser, StoreName.My, X509FindType.FindByThumbprint, base._config.CertificateThumbprint); } switch (request.GetType().Name) { case nameof(exportPaymentDocumentDetailsRequest1): return(client.exportPaymentDocumentDetails(request as exportPaymentDocumentDetailsRequest1).AckRequest.Ack); case nameof(importNotificationsOfOrderExecutionRequest1): return(client.importNotificationsOfOrderExecution(request as importNotificationsOfOrderExecutionRequest1).AckRequest.Ack); case nameof(importNotificationsOfOrderExecutionCancellationRequest1): return(client.importNotificationsOfOrderExecutionCancellation(request as importNotificationsOfOrderExecutionCancellationRequest1).AckRequest.Ack); case nameof(importSupplierNotificationsOfOrderExecutionRequest1): return(client.importSupplierNotificationsOfOrderExecution(request as importSupplierNotificationsOfOrderExecutionRequest1).AckRequest.Ack); default: throw new ArgumentException($"{request.GetType().Name} - Не верный тип аргумента"); } } }
/// <summary> /// Извещение об аннулировании извещения о принятии к исполнению распоряжения /// </summary> /// <param name="_OrderID"> /// Уникальный идентификатор распоряжения для нужд квитирования /// </param> /// <returns></returns> public string SetNotificationsOfOrderExecutionCancellation(string _orgPPAGUID, string _orderID) { var srvPaymentSrvAsync = new PaymentPortsTypeAsyncClient(); srvPaymentSrvAsync.ClientCredentials.UserName.UserName = ConfigurationManager.AppSettings["_login"]; srvPaymentSrvAsync.ClientCredentials.UserName.Password = ConfigurationManager.AppSettings["_pass"]; var reqNotifOrderExecCancellation = new importNotificationsOfOrderExecutionCancellationRequest1 { RequestHeader = new RequestHeader { Date = DateTime.Now, MessageGUID = Guid.NewGuid().ToString(), ItemElementName = ItemChoiceType.orgPPAGUID, Item = _orgPPAGUID }, importNotificationsOfOrderExecutionCancellationRequest = new importNotificationsOfOrderExecutionCancellationRequest { version = "10.0.1.1", Id = CryptoConsts.CONTAINER_ID, NotificationOfOrderExecutionCancellation = new NotificationOfOrderExecutionCancellationType[] { new NotificationOfOrderExecutionCancellationType { TransportGUID = Guid.NewGuid().ToString(), CancellationDate = DateTime.Now, Comment = "Сведения загружены ошибочно", OrderID = _orderID } } } }; var resNotifOrderExecCancellation = srvPaymentSrvAsync.importNotificationsOfOrderExecutionCancellation(reqNotifOrderExecCancellation); var ackNotifOrderExecCancellation = resNotifOrderExecCancellation.AckRequest.Ack.MessageGUID.ToString(); return(ackNotifOrderExecCancellation); }