From 808a5ef8ee05e322c71a05a092b07a2d3832afec Mon Sep 17 00:00:00 2001 From: "DESKTOP-FBQ78IM\\Dan" Date: Tue, 29 Jun 2021 12:11:36 -0500 Subject: [PATCH 1/8] Refactor --- src/sw-sdk/Entities/IResponseHandler.cs | 10 +- src/sw-sdk/Helpers/EnumAcceptReject.cs | 7 +- src/sw-sdk/Helpers/RequestHelper.cs | 7 - src/sw-sdk/Helpers/ResponseHelper.cs | 165 +----------------- src/sw-sdk/Helpers/StreamUtil.cs | 6 +- src/sw-sdk/Helpers/Validation.cs | 4 +- .../AcceptRejectResponseHandler.cs | 2 +- .../Account/AccountResponseHandler.cs | 2 +- .../Services/Authentication/Authentication.cs | 2 +- .../AuthenticationResponseHandler.cs | 2 +- .../Cancelation/CanelationResponseHandler.cs | 2 +- src/sw-sdk/Services/Csd/CsdResponseHandler.cs | 2 +- src/sw-sdk/Services/Pdf/PdfResponseHandler.cs | 2 +- .../Pendings/PendingsResponseHandler.cs | 2 +- .../Relations/RelationsResponseHandler.cs | 2 +- .../Services/Resend/ResendResponseHandler.cs | 5 +- src/sw-sdk/Services/Resend/ResendService.cs | 6 +- src/sw-sdk/Services/ResponseHandler.cs | 3 - .../Services/Stamp/StampResponseHandler.cs | 8 +- .../Storage/StorageResponseHandler.cs | 2 +- .../Validate/ValidateResponseHandler.cs | 6 +- test/sdk-test/Helpers/BuildSettings.cs | 7 +- .../cfdi33_ComercioExterior.xml | 4 +- 23 files changed, 38 insertions(+), 220 deletions(-) diff --git a/src/sw-sdk/Entities/IResponseHandler.cs b/src/sw-sdk/Entities/IResponseHandler.cs index 3ceecd5..6b0d670 100644 --- a/src/sw-sdk/Entities/IResponseHandler.cs +++ b/src/sw-sdk/Entities/IResponseHandler.cs @@ -1,14 +1,12 @@ -using System; -using System.Collections.Generic; -using System.Linq; +using SW.Entities; +using System; using System.Net; -using System.Text; namespace SW { internal interface IResponseHandler { - SW.Entities.Response GetResponse(WebRequest request); - SW.Entities.Response HandleException(Exception ex); + Response GetResponse(WebRequest request); + Response HandleException(Exception ex); } } diff --git a/src/sw-sdk/Helpers/EnumAcceptReject.cs b/src/sw-sdk/Helpers/EnumAcceptReject.cs index ca9b243..c058688 100644 --- a/src/sw-sdk/Helpers/EnumAcceptReject.cs +++ b/src/sw-sdk/Helpers/EnumAcceptReject.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace SW.Helpers +namespace SW.Helpers { public enum EnumAcceptReject { diff --git a/src/sw-sdk/Helpers/RequestHelper.cs b/src/sw-sdk/Helpers/RequestHelper.cs index ece3bb9..989cff5 100644 --- a/src/sw-sdk/Helpers/RequestHelper.cs +++ b/src/sw-sdk/Helpers/RequestHelper.cs @@ -1,10 +1,7 @@ using System; -using System.Collections.Generic; using System.IO; -using System.Linq; using System.Net; using System.Net.Http; -using System.Text; namespace SW.Helpers { @@ -51,10 +48,6 @@ internal static void AddFileToRequest(byte[] file, ref HttpWebRequest request) var endBoundaryBytes = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "--"); - - string formdataTemplate = "\r\n--" + boundary + - "\r\nContent-Disposition: form-data; name=\"{0}\";\r\n\r\n{1}"; - string headerTemplate = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\n" + "Content-Type: application/octet-stream\r\n\r\n"; diff --git a/src/sw-sdk/Helpers/ResponseHelper.cs b/src/sw-sdk/Helpers/ResponseHelper.cs index a2d2e29..de261f8 100644 --- a/src/sw-sdk/Helpers/ResponseHelper.cs +++ b/src/sw-sdk/Helpers/ResponseHelper.cs @@ -1,114 +1,20 @@ -using SW.Services.AcceptReject; -using SW.Services.Account; -using SW.Services.Authentication; -using SW.Services.Cancelation; -using SW.Services.Csd; -using SW.Services.Pdf; -using SW.Services.Pendings; -using SW.Services.Relations; -using SW.Services.Stamp; -using SW.Services.Storage; -using SW.Services.Validate; -using sw_sdk.Services.Resend; +using SW.Entities; using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; namespace SW.Helpers { internal static class ResponseHelper { - internal static AuthResponse ToAuthResponse(this Exception ex) + internal static T Response(this Exception ex) where T : Response, new() { - return new AuthResponse() - { - message = ex.Message, - status = "error", - messageDetail = ex.GetErrorDetail() - }; - } - internal static AccountResponse ToAccountResponse(this Exception ex) - { - return new AccountResponse() - { - message = ex.Message, - status = "error", - messageDetail = ex.GetErrorDetail() - }; - } - internal static CancelationResponse ToCancelationResponse(this Exception ex) - { - return new CancelationResponse() - { - message = ex.Message, - status = "error", - messageDetail = ex.GetErrorDetail() - }; - } - internal static StampResponseV1 ToStampResponseV1(this Exception ex) - { - return new StampResponseV1() - { - message = ex.Message, - status = "error", - messageDetail = ex.GetErrorDetail() - }; - } - internal static StampResponseV2 ToStampResponseV2(this Exception ex) - { - return new StampResponseV2() - { - message = ex.Message, - status = "error", - messageDetail = ex.GetErrorDetail() - }; - } - internal static StampResponseV3 ToStampResponseV3(this Exception ex) - { - return new StampResponseV3() - { - message = ex.Message, - status = "error", - messageDetail = ex.GetErrorDetail() - }; - } - internal static StampResponseV4 ToStampResponseV4(this Exception ex) - { - return new StampResponseV4() - { - message = ex.Message, - status = "error", - messageDetail = ex.GetErrorDetail() - }; - } - internal static ValidateXmlResponse ToValidateXmlResponse(this Exception ex) - { - return new ValidateXmlResponse() - { - message = ex.Message, - status = "error", - messageDetail = ex.GetErrorDetail() - }; - } - internal static ValidateLcoResponse ToValidateLcoResponse(this Exception ex) - { - return new ValidateLcoResponse() - { - message = ex.Message, - status = "error", - messageDetail = ex.GetErrorDetail() - }; - } - internal static ValidateLrfcResponse ToValidateLrfcResponse(this Exception ex) - { - return new ValidateLrfcResponse() + return new T() { message = ex.Message, status = "error", messageDetail = ex.GetErrorDetail() }; } + internal static string GetErrorDetail(this Exception ex) { if (ex.InnerException != null) @@ -116,68 +22,5 @@ internal static string GetErrorDetail(this Exception ex) else return ""; } - internal static AcceptRejectResponse ToAcceptRejectResponse(this Exception ex) - { - return new AcceptRejectResponse() - { - message = ex.Message, - status = "error", - messageDetail = ex.GetErrorDetail() - }; - } - internal static RelationsResponse ToRelationsResponse(this Exception ex) - { - return new RelationsResponse() - { - message = ex.Message, - status = "error", - messageDetail = ex.GetErrorDetail() - }; - } - internal static PendingsResponse ToPendingsResponse(this Exception ex) - { - return new PendingsResponse() - { - message = ex.Message, - status = "error", - messageDetail = ex.GetErrorDetail() - }; - } - internal static PdfResponse ToPdfResponse(this Exception ex) - { - return new PdfResponse() - { - message = ex.Message, - status = "error", - messageDetail = ex.GetErrorDetail() - }; - } - internal static ResendResponse ToResendResponse(this Exception ex) - { - return new ResendResponse() - { - message = ex.Message, - status = "error", - messageDetail = ex.GetErrorDetail() - }; - } - internal static UploadCsdResponse ToCargaCsdResponse(this Exception ex) - { - return new UploadCsdResponse() - { - message = ex.Message, - status = "error", - messageDetail = ex.GetErrorDetail() - }; - } - internal static StorageResponse ToStorageResponse(this Exception ex) - { - return new StorageResponse() - { - message = ex.Message, - status = "error", - messageDetail = ex.GetErrorDetail() - }; - } } } diff --git a/src/sw-sdk/Helpers/StreamUtil.cs b/src/sw-sdk/Helpers/StreamUtil.cs index 28fc4c5..d959d5b 100644 --- a/src/sw-sdk/Helpers/StreamUtil.cs +++ b/src/sw-sdk/Helpers/StreamUtil.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; +using System.IO; namespace SW.Helpers { diff --git a/src/sw-sdk/Helpers/Validation.cs b/src/sw-sdk/Helpers/Validation.cs index e9cc18c..518d6c2 100644 --- a/src/sw-sdk/Helpers/Validation.cs +++ b/src/sw-sdk/Helpers/Validation.cs @@ -1,6 +1,4 @@ -using System.Net; - -namespace SW.Helpers +namespace SW.Helpers { public class Validation { diff --git a/src/sw-sdk/Services/AcceptReject/AcceptRejectResponseHandler.cs b/src/sw-sdk/Services/AcceptReject/AcceptRejectResponseHandler.cs index 4d3604e..7c04924 100644 --- a/src/sw-sdk/Services/AcceptReject/AcceptRejectResponseHandler.cs +++ b/src/sw-sdk/Services/AcceptReject/AcceptRejectResponseHandler.cs @@ -7,7 +7,7 @@ internal class AcceptRejectResponseHandler : ResponseHandler(); } } } diff --git a/src/sw-sdk/Services/Account/AccountResponseHandler.cs b/src/sw-sdk/Services/Account/AccountResponseHandler.cs index 8d7f6c4..025ee4b 100644 --- a/src/sw-sdk/Services/Account/AccountResponseHandler.cs +++ b/src/sw-sdk/Services/Account/AccountResponseHandler.cs @@ -7,7 +7,7 @@ internal class BalanceAccountResponseHandler : ResponseHandler { public override AccountResponse HandleException(Exception ex) { - return ex.ToAccountResponse(); + return ex.Response(); } } } diff --git a/src/sw-sdk/Services/Authentication/Authentication.cs b/src/sw-sdk/Services/Authentication/Authentication.cs index 0a72027..81b04e8 100644 --- a/src/sw-sdk/Services/Authentication/Authentication.cs +++ b/src/sw-sdk/Services/Authentication/Authentication.cs @@ -25,7 +25,7 @@ public override async System.Threading.Tasks.Task GetTokenAsync() } catch (Exception e) - { + { return _handler.HandleException(e); } } diff --git a/src/sw-sdk/Services/Authentication/AuthenticationResponseHandler.cs b/src/sw-sdk/Services/Authentication/AuthenticationResponseHandler.cs index 2042019..a322f2b 100644 --- a/src/sw-sdk/Services/Authentication/AuthenticationResponseHandler.cs +++ b/src/sw-sdk/Services/Authentication/AuthenticationResponseHandler.cs @@ -7,7 +7,7 @@ internal class AuthenticationResponseHandler : ResponseHandler { public override AuthResponse HandleException(Exception ex) { - return ex.ToAuthResponse(); + return ex.Response(); } } } diff --git a/src/sw-sdk/Services/Cancelation/CanelationResponseHandler.cs b/src/sw-sdk/Services/Cancelation/CanelationResponseHandler.cs index c2d3bc1..c885360 100644 --- a/src/sw-sdk/Services/Cancelation/CanelationResponseHandler.cs +++ b/src/sw-sdk/Services/Cancelation/CanelationResponseHandler.cs @@ -7,7 +7,7 @@ internal class CancelationResponseHandler : ResponseHandler { public override CancelationResponse HandleException(Exception ex) { - return ex.ToCancelationResponse(); + return ex.Response(); } } } diff --git a/src/sw-sdk/Services/Csd/CsdResponseHandler.cs b/src/sw-sdk/Services/Csd/CsdResponseHandler.cs index ff055cd..47fa622 100644 --- a/src/sw-sdk/Services/Csd/CsdResponseHandler.cs +++ b/src/sw-sdk/Services/Csd/CsdResponseHandler.cs @@ -11,7 +11,7 @@ internal class CsdResponseHandler : ResponseHandler { public override UploadCsdResponse HandleException(Exception ex) { - return ex.ToCargaCsdResponse(); + return ex.Response(); } } } diff --git a/src/sw-sdk/Services/Pdf/PdfResponseHandler.cs b/src/sw-sdk/Services/Pdf/PdfResponseHandler.cs index b921749..6050035 100644 --- a/src/sw-sdk/Services/Pdf/PdfResponseHandler.cs +++ b/src/sw-sdk/Services/Pdf/PdfResponseHandler.cs @@ -7,7 +7,7 @@ internal class PdfResponseHandler : ResponseHandler { public override PdfResponse HandleException(Exception ex) { - return ex.ToPdfResponse(); + return ex.Response(); } } } diff --git a/src/sw-sdk/Services/Pendings/PendingsResponseHandler.cs b/src/sw-sdk/Services/Pendings/PendingsResponseHandler.cs index 44e78d5..df6d7f7 100644 --- a/src/sw-sdk/Services/Pendings/PendingsResponseHandler.cs +++ b/src/sw-sdk/Services/Pendings/PendingsResponseHandler.cs @@ -7,7 +7,7 @@ internal class PendingsResponseHandler : ResponseHandler { public override PendingsResponse HandleException(Exception ex) { - return ex.ToPendingsResponse(); + return ex.Response(); } } } diff --git a/src/sw-sdk/Services/Relations/RelationsResponseHandler.cs b/src/sw-sdk/Services/Relations/RelationsResponseHandler.cs index 1be54d2..049faf8 100644 --- a/src/sw-sdk/Services/Relations/RelationsResponseHandler.cs +++ b/src/sw-sdk/Services/Relations/RelationsResponseHandler.cs @@ -7,7 +7,7 @@ internal class RelationsResponseHandler : ResponseHandler { public override RelationsResponse HandleException(Exception ex) { - return ex.ToRelationsResponse(); + return ex.Response(); } } } diff --git a/src/sw-sdk/Services/Resend/ResendResponseHandler.cs b/src/sw-sdk/Services/Resend/ResendResponseHandler.cs index 475399f..39e6447 100644 --- a/src/sw-sdk/Services/Resend/ResendResponseHandler.cs +++ b/src/sw-sdk/Services/Resend/ResendResponseHandler.cs @@ -1,15 +1,16 @@ using SW.Helpers; +using SW.Services; using System; using System.Collections.Generic; using System.Text; namespace sw_sdk.Services.Resend { - internal class ResendResponseHandler : SW.Services.ResponseHandler + internal class ResendResponseHandler : ResponseHandler { public override ResendResponse HandleException(Exception ex) { - return ex.ToResendResponse(); + return ex.Response(); } } } diff --git a/src/sw-sdk/Services/Resend/ResendService.cs b/src/sw-sdk/Services/Resend/ResendService.cs index 20eeb93..3b4a777 100644 --- a/src/sw-sdk/Services/Resend/ResendService.cs +++ b/src/sw-sdk/Services/Resend/ResendService.cs @@ -1,8 +1,4 @@ -using Newtonsoft.Json; -using System; -using System.Collections.Generic; -using System.Net.Http; -using System.Text; +using System.Collections.Generic; using System.Threading.Tasks; namespace sw_sdk.Services.Resend diff --git a/src/sw-sdk/Services/ResponseHandler.cs b/src/sw-sdk/Services/ResponseHandler.cs index ac552cc..ecd99fb 100644 --- a/src/sw-sdk/Services/ResponseHandler.cs +++ b/src/sw-sdk/Services/ResponseHandler.cs @@ -2,11 +2,8 @@ using SW.Helpers; using System; using System.Collections.Generic; -using System.IO; -using System.Linq; using System.Net; using System.Net.Http; -using System.Text; using System.Threading.Tasks; namespace SW.Services diff --git a/src/sw-sdk/Services/Stamp/StampResponseHandler.cs b/src/sw-sdk/Services/Stamp/StampResponseHandler.cs index a852233..0a52f5b 100644 --- a/src/sw-sdk/Services/Stamp/StampResponseHandler.cs +++ b/src/sw-sdk/Services/Stamp/StampResponseHandler.cs @@ -11,7 +11,7 @@ internal class StampResponseHandlerV1 : ResponseHandler { public override StampResponseV1 HandleException(Exception ex) { - return ex.ToStampResponseV1(); + return ex.Response(); } } internal class StampResponseHandlerV2 : ResponseHandler @@ -34,7 +34,7 @@ public override async Task GetPostResponseAsync(string url, str public override StampResponseV2 HandleException(Exception ex) { - return ex.ToStampResponseV2(); + return ex.Response(); } } internal class StampResponseHandlerV3 : ResponseHandler @@ -56,7 +56,7 @@ public override async Task GetPostResponseAsync(string url, str } public override StampResponseV3 HandleException(Exception ex) { - return ex.ToStampResponseV3(); + return ex.Response(); } } internal class StampResponseHandlerV4 : ResponseHandler @@ -78,7 +78,7 @@ public StampResponseHandlerV4(string xmlOriginal) : base(xmlOriginal) public override StampResponseV4 HandleException(Exception ex) { - return ex.ToStampResponseV4(); + return ex.Response(); } } } diff --git a/src/sw-sdk/Services/Storage/StorageResponseHandler.cs b/src/sw-sdk/Services/Storage/StorageResponseHandler.cs index 68a1a96..7d00215 100644 --- a/src/sw-sdk/Services/Storage/StorageResponseHandler.cs +++ b/src/sw-sdk/Services/Storage/StorageResponseHandler.cs @@ -7,7 +7,7 @@ internal class StorageResponseHandler : ResponseHandler { public override StorageResponse HandleException(Exception ex) { - return ex.ToStorageResponse(); + return ex.Response(); } } } diff --git a/src/sw-sdk/Services/Validate/ValidateResponseHandler.cs b/src/sw-sdk/Services/Validate/ValidateResponseHandler.cs index 2e63129..2f34224 100644 --- a/src/sw-sdk/Services/Validate/ValidateResponseHandler.cs +++ b/src/sw-sdk/Services/Validate/ValidateResponseHandler.cs @@ -7,21 +7,21 @@ internal class ValidateXmlResponseHandler : ResponseHandler { public override ValidateXmlResponse HandleException(Exception ex) { - return ex.ToValidateXmlResponse(); + return ex.Response(); } } internal class ValidateLrfcResponseHandler : ResponseHandler { public override ValidateLrfcResponse HandleException(Exception ex) { - return ex.ToValidateLrfcResponse(); + return ex.Response(); } } internal class ValidateLcoResponseHandler : ResponseHandler { public override ValidateLcoResponse HandleException(Exception ex) { - return ex.ToValidateLcoResponse(); + return ex.Response(); } } } diff --git a/test/sdk-test/Helpers/BuildSettings.cs b/test/sdk-test/Helpers/BuildSettings.cs index f73b74d..f24da6c 100644 --- a/test/sdk-test/Helpers/BuildSettings.cs +++ b/test/sdk-test/Helpers/BuildSettings.cs @@ -6,12 +6,13 @@ namespace Test_SW.Helpers { class BuildSettings { + public string urlSAT = "https://consultaqr.facturaelectronica.sat.gob.mx/ConsultaCFDIService.svc"; public string Url = "http://services.test.sw.com.mx"; public string UrlSWServices = "https://api.test.sw.com.mx"; - public string User = "demo"; - public string Password = "123456789"; + public string User = "userforut@ut.com"; + public string Password = "swpassut"; public string CerPassword = "12345678a"; - public string Token = @"T2lYQ0t4L0RHVkR4dHZ5Nkk1VHNEakZ3Y0J4Nk9GODZuRyt4cE1wVm5tbXB3YVZxTHdOdHAwVXY2NTdJb1hkREtXTzE3dk9pMmdMdkFDR2xFWFVPUXpTUm9mTG1ySXdZbFNja3FRa0RlYURqbzdzdlI2UUx1WGJiKzViUWY2dnZGbFloUDJ6RjhFTGF4M1BySnJ4cHF0YjUvbmRyWWpjTkVLN3ppd3RxL0dJPQ.T2lYQ0t4L0RHVkR4dHZ5Nkk1VHNEakZ3Y0J4Nk9GODZuRyt4cE1wVm5tbFlVcU92YUJTZWlHU3pER1kySnlXRTF4alNUS0ZWcUlVS0NhelhqaXdnWTRncklVSWVvZlFZMWNyUjVxYUFxMWFxcStUL1IzdGpHRTJqdS9Zakw2UGRiMTFPRlV3a2kyOWI5WUZHWk85ODJtU0M2UlJEUkFTVXhYTDNKZVdhOXIySE1tUVlFdm1jN3kvRStBQlpLRi9NeWJrd0R3clhpYWJrVUMwV0Mwd3FhUXdpUFF5NW5PN3J5cklMb0FETHlxVFRtRW16UW5ZVjAwUjdCa2g0Yk1iTExCeXJkVDRhMGMxOUZ1YWlIUWRRVC8yalFTNUczZXdvWlF0cSt2UW0waFZKY2gyaW5jeElydXN3clNPUDNvU1J2dm9weHBTSlZYNU9aaGsvalpQMUxrUndzK0dHS2dpTittY1JmR3o2M3NqNkh4MW9KVXMvUHhZYzVLQS9UK2E1SVhEZFJKYWx4ZmlEWDFuSXlqc2ZRYXlUQk1ldlZkU2tEdU10NFVMdHZKUURLblBxakw0SDl5bUxabDFLNmNPbEp6b3Jtd2Q1V2htRHlTdDZ6eTFRdUNnYnVvK2tuVUdhMmwrVWRCZi9rQkU9.7k2gVCGSZKLzJK5Ky3Nr5tKxvGSJhL13Q8W-YhT0uIo"; + public string Token = @"T2lYQ0t4L0RHVkR4dHZ5Nkk1VHNEakZ3Y0J4Nk9GODZuRyt4cE1wVm5tbXB3YVZxTHdOdHAwVXY2NTdJb1hkREtXTzE3dk9pMmdMdkFDR2xFWFVPUTQyWFhnTUxGYjdKdG8xQTZWVjFrUDNiOTVrRkhiOGk3RHladHdMaEM0cS8rcklzaUhJOGozWjN0K2h6R3gwQzF0c0g5aGNBYUt6N2srR3VoMUw3amtvPQ.T2lYQ0t4L0RHVkR4dHZ5Nkk1VHNEakZ3Y0J4Nk9GODZuRyt4cE1wVm5tbFlVcU92YUJTZWlHU3pER1kySnlXRTF4alNUS0ZWcUlVS0NhelhqaXdnWTRncklVSWVvZlFZMWNyUjVxYUFxMWFxcStUL1IzdGpHRTJqdS9Zakw2UGRDN2VkNEVBUGM1UUt3NVhZVC9QUTViWmZ6dGNJUG5JZVJ1d1hPdmFlN2s3cEp3UW5UY2hORXVWeS9mNnZ6YVZQTlg1OTdBbWJUNzJ4NHFJNVJnOFBxTEo3TGQwank2dlVwektHUmJwY2RqNGdYRG5yaTVZUTBaZ05vR1Y0Z0xsNzg5MlM0cWJUK2hRamV2bXUwcFVGM3E4SzZMNFkvVE5LTCtJZFFEVHNob05QVmRzY2dSUGxBUXBoc29JcVp1TW9MV1FkUUtTRVdROVNPTVRMYkg5dmIrM25LM3pRbDBKN2RHaEI5TDZLK2hqTzlxWGNYdUxtNlpSUi9UemV4RjhFVFdnbDlTZmNVMyt1cWRsS1NHTjdZSE9DVXA2UkEreWRmM280Vk1PT29MNmFVL0xxRmEyUmJERUpRcWhuUHNhbUxmVTgrZGpkZFRrK1kvbGlmNzZNRzU4WHdRNER6K1V0QVdGMm9rdy8wTEhlRWhEcTlxTTVxdk5JY3V4Qyt6anQ.AveqpgnCgMeCJw34calmbToLjW_MQOBwG6fYiKCyLr8"; public string Cer = Convert.ToBase64String(File.ReadAllBytes("Resources/CertificadosDePrueba/EKU9003173C9.cer")); public string Key = Convert.ToBase64String(File.ReadAllBytes("Resources/CertificadosDePrueba/EKU9003173C9.key")); diff --git a/test/sdk-test/Resources/CFDI33_Validacion_Servicio/cfdi33_ComercioExterior.xml b/test/sdk-test/Resources/CFDI33_Validacion_Servicio/cfdi33_ComercioExterior.xml index 63d7f58..aba3c84 100644 --- a/test/sdk-test/Resources/CFDI33_Validacion_Servicio/cfdi33_ComercioExterior.xml +++ b/test/sdk-test/Resources/CFDI33_Validacion_Servicio/cfdi33_ComercioExterior.xml @@ -1,5 +1,5 @@ - + @@ -27,7 +27,7 @@ - + From 56b9b7a414e628c5087ed76c3a21200d45077e9e Mon Sep 17 00:00:00 2001 From: "DESKTOP-FBQ78IM\\Dan" Date: Tue, 29 Jun 2021 12:15:27 -0500 Subject: [PATCH 2/8] update version --- src/sw-sdk/sw-sdk.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/sw-sdk/sw-sdk.csproj b/src/sw-sdk/sw-sdk.csproj index f504455..b822865 100644 --- a/src/sw-sdk/sw-sdk.csproj +++ b/src/sw-sdk/sw-sdk.csproj @@ -2,7 +2,7 @@ netstandard2.0 sw_sdk - 0.0.0.16 + 0.0.0.17 sw-sdk-netstandard SDK SW sapien® SW sapien® @@ -16,7 +16,7 @@ https://github.com/lunasoft/SW-sdk-NetStandard Git Master - Se actualiza modelo da datos del response metodo storage + Refactor ResponseHandler From 9232b60e1601b68ff7e40f7e8ae751dc45f7e4ab Mon Sep 17 00:00:00 2001 From: "DESKTOP-FBQ78IM\\Dan" Date: Tue, 29 Jun 2021 17:02:25 -0500 Subject: [PATCH 3/8] skip fact Resend_Test, bug SMARTER-2687 --- test/sdk-test/Helpers/BuildSettings.cs | 3 ++- test/sdk-test/Services/Account/Account_Test.cs | 2 +- test/sdk-test/Services/Resend/Resend_Test.cs | 4 ++-- test/sdk-test/Services/Storage/Storage_Test.cs | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/test/sdk-test/Helpers/BuildSettings.cs b/test/sdk-test/Helpers/BuildSettings.cs index f24da6c..7208232 100644 --- a/test/sdk-test/Helpers/BuildSettings.cs +++ b/test/sdk-test/Helpers/BuildSettings.cs @@ -12,7 +12,8 @@ class BuildSettings public string User = "userforut@ut.com"; public string Password = "swpassut"; public string CerPassword = "12345678a"; - public string Token = @"T2lYQ0t4L0RHVkR4dHZ5Nkk1VHNEakZ3Y0J4Nk9GODZuRyt4cE1wVm5tbXB3YVZxTHdOdHAwVXY2NTdJb1hkREtXTzE3dk9pMmdMdkFDR2xFWFVPUTQyWFhnTUxGYjdKdG8xQTZWVjFrUDNiOTVrRkhiOGk3RHladHdMaEM0cS8rcklzaUhJOGozWjN0K2h6R3gwQzF0c0g5aGNBYUt6N2srR3VoMUw3amtvPQ.T2lYQ0t4L0RHVkR4dHZ5Nkk1VHNEakZ3Y0J4Nk9GODZuRyt4cE1wVm5tbFlVcU92YUJTZWlHU3pER1kySnlXRTF4alNUS0ZWcUlVS0NhelhqaXdnWTRncklVSWVvZlFZMWNyUjVxYUFxMWFxcStUL1IzdGpHRTJqdS9Zakw2UGRDN2VkNEVBUGM1UUt3NVhZVC9QUTViWmZ6dGNJUG5JZVJ1d1hPdmFlN2s3cEp3UW5UY2hORXVWeS9mNnZ6YVZQTlg1OTdBbWJUNzJ4NHFJNVJnOFBxTEo3TGQwank2dlVwektHUmJwY2RqNGdYRG5yaTVZUTBaZ05vR1Y0Z0xsNzg5MlM0cWJUK2hRamV2bXUwcFVGM3E4SzZMNFkvVE5LTCtJZFFEVHNob05QVmRzY2dSUGxBUXBoc29JcVp1TW9MV1FkUUtTRVdROVNPTVRMYkg5dmIrM25LM3pRbDBKN2RHaEI5TDZLK2hqTzlxWGNYdUxtNlpSUi9UemV4RjhFVFdnbDlTZmNVMyt1cWRsS1NHTjdZSE9DVXA2UkEreWRmM280Vk1PT29MNmFVL0xxRmEyUmJERUpRcWhuUHNhbUxmVTgrZGpkZFRrK1kvbGlmNzZNRzU4WHdRNER6K1V0QVdGMm9rdy8wTEhlRWhEcTlxTTVxdk5JY3V4Qyt6anQ.AveqpgnCgMeCJw34calmbToLjW_MQOBwG6fYiKCyLr8"; + //Temp token, time life 2 hours + public string Token = @"T2lYQ0t4L0RHVkR4dHZ5Nkk1VHNEakZ3Y0J4Nk9GODZuRyt4cE1wVm5tbXB3YVZxTHdOdHAwVXY2NTdJb1hkREtXTzE3dk9pMmdMdkFDR2xFWFVPUTQyWFhnTUxGYjdKdG8xQTZWVjFrUDNiOTVrRkhiOGk3RHladHdMaEM0cS8rcklzaUhJOGozWjN0K2h6R3gwQzF0c0g5aGNBYUt6N2srR3VoMUw3amtvPQ.T2lYQ0t4L0RHVkR4dHZ5Nkk1VHNEakZ3Y0J4Nk9GODZuRyt4cE1wVm5tbFlVcU92YUJTZWlHU3pER1kySnlXRTF4alNUS0ZWcUlVS0NhelhqaXdnWTRncklVSWVvZlFZMWNyUjVxYUFxMWFxcStUL1IzdGpHRTJqdS9Zakw2UGRDN2VkNEVBUGM1UUt3NVhZVC9QUTViWmZ6dGNJUG5JZVJ1d1hPdmFlN2s3cEp3UW5UY2hORXVWeS9mNnZ6YVZQTlg1OTdBbWJUNzJ4NHFJNVJnOFBxTEo3TGQwank2dlVwektHUmJwY2RqNGdYRG5yaTVZUTBaZ05vR1Y0Z0xsNzg5MlM0cWJUK2hRamV2bXUwcFVGM3E4SzZMNFkvVE5LTCtJZFFEVHNob05QVmRzY2dSUGxBUXBoc29JcVp1TW9MV1FkUUtTRVdROVNPTVRMYkg5dmIrM25LM3pRbDBKN2RHaEI5TDZLK2hqa1NyYnJvZlo1T2lxRUEvWEU5cDNwY2dMamJXaFdGWXpqRHZXdS9ldTVGbEo0Mk9scDY2Q3NxWG5rckJ4OXJUTnhYUml6Q29QeDhxRGJEUVpzakc4SGhJbG9uZ2NNSm5TT0ZTejVlNVRtNmphTDZFZXlqOUVSR2h5Z3RibGtDWEQySkZ3OE1XRzVDeTRna3BzM0dzbjg.GyPNs9tQ_j1yh5GtSG41t24xyVCQerZimJiV-9AF-5c"; public string Cer = Convert.ToBase64String(File.ReadAllBytes("Resources/CertificadosDePrueba/EKU9003173C9.cer")); public string Key = Convert.ToBase64String(File.ReadAllBytes("Resources/CertificadosDePrueba/EKU9003173C9.key")); diff --git a/test/sdk-test/Services/Account/Account_Test.cs b/test/sdk-test/Services/Account/Account_Test.cs index f28102a..2f78e44 100644 --- a/test/sdk-test/Services/Account/Account_Test.cs +++ b/test/sdk-test/Services/Account/Account_Test.cs @@ -13,7 +13,7 @@ public class Account_Test_45 public async Task Account_Test_45_ConsultaDeSaldoByUserAsync() { var build = new BuildSettings(); - BalanceAccount account = new BalanceAccount("http://services.test.sw.com.mx", "demo", "123456789"); + BalanceAccount account = new BalanceAccount("http://services.test.sw.com.mx", "userforut@ut.com", "swpassut"); AccountResponse response = await account.ConsultarSaldoAsync(); if(response.status != "error") { diff --git a/test/sdk-test/Services/Resend/Resend_Test.cs b/test/sdk-test/Services/Resend/Resend_Test.cs index 0a5cc3a..af72805 100644 --- a/test/sdk-test/Services/Resend/Resend_Test.cs +++ b/test/sdk-test/Services/Resend/Resend_Test.cs @@ -6,12 +6,12 @@ namespace sdk_test.Services.Resend { public class Resend_Test { - [Fact] + [Fact(Skip = "bug SMARTER-2687")] public async Task Resend_email() { var build = new BuildSettings(); sw_sdk.Services.Resend.Resend resend = new sw_sdk.Services.Resend.Resend(build.Url, build.UrlSWServices, build.User, build.Password); - var responseResend = await resend.ResendEmailAsync("3f946ad4-8a35-4067-8dc7-5227a80f6938", "someemail@some.com"); + var responseResend = await resend.ResendEmailAsync("534a129c-2a8d-4868-8f51-1fd64040ee97", "someemail@some.com"); Assert.True(responseResend != null && responseResend.data != null && responseResend.status == "success"); } } diff --git a/test/sdk-test/Services/Storage/Storage_Test.cs b/test/sdk-test/Services/Storage/Storage_Test.cs index 233a241..b25f0bb 100644 --- a/test/sdk-test/Services/Storage/Storage_Test.cs +++ b/test/sdk-test/Services/Storage/Storage_Test.cs @@ -17,7 +17,7 @@ public async Task Storage_Test_GetByUUIDAsync() { var build = new BuildSettings(); Storage storage = new Storage(build.UrlSWServices, build.Token); - var response = (StorageResponse)await storage.GetByUUIDAsync(new Guid("05ed3287-a364-4d94-b9ae-33b2c4384059")); + var response = (StorageResponse)await storage.GetByUUIDAsync(new Guid("534a129c-2a8d-4868-8f51-1fd64040ee97")); Assert.True(response.data != null, "El resultado data viene vacio."); Assert.True(response.data.records != null, "El resultado records viene vacio."); Assert.True(response.data.records.Count > 0, "El resultado records viene vacio."); From ed916333fc5e18e55c9aed18b04f9cba486c4e84 Mon Sep 17 00:00:00 2001 From: "DESKTOP-FBQ78IM\\Dan" Date: Thu, 1 Jul 2021 18:07:17 -0500 Subject: [PATCH 4/8] =?UTF-8?q?Se=20agrega=20m=C3=A9todo=20para=20recupera?= =?UTF-8?q?r=20xml=20en=20timbrado=20CustomId?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/sw-sdk/Helpers/DowloadFile.cs | 71 +++++++++++++++++++ src/sw-sdk/Helpers/XmlUtils.cs | 16 ++++- src/sw-sdk/Services/Stamp/BaseStampV4XML.cs | 63 ++++++++++++++++ .../Services/Stamp/StampResponseHandler.cs | 24 +++++++ src/sw-sdk/Services/Stamp/StampV4XML.cs | 12 ++++ .../Services/Stamp/StampV4XML_Test.cs | 53 ++++++++++++++ 6 files changed, 237 insertions(+), 2 deletions(-) create mode 100644 src/sw-sdk/Helpers/DowloadFile.cs create mode 100644 src/sw-sdk/Services/Stamp/BaseStampV4XML.cs create mode 100644 src/sw-sdk/Services/Stamp/StampV4XML.cs create mode 100644 test/sdk-test/Services/Stamp/StampV4XML_Test.cs diff --git a/src/sw-sdk/Helpers/DowloadFile.cs b/src/sw-sdk/Helpers/DowloadFile.cs new file mode 100644 index 0000000..7524696 --- /dev/null +++ b/src/sw-sdk/Helpers/DowloadFile.cs @@ -0,0 +1,71 @@ + +using System; +using System.Collections.Generic; +using System.IO; +using System.Net; +using System.Net.Http; +using System.Threading.Tasks; +using System.Xml; +using SW.Services.Stamp; + +namespace SW.Helpers +{ +static internal class DowloadFile +{ + public static async Task DowloadFileAsync(string url, HttpClientHandler proxy) + { + try + { + using (HttpClient client = new HttpClient(proxy)) + { + var result = await client.GetAsync(url); + return await TryGetFileAsync(result); + } + } + catch (HttpRequestException wex) + { + return new StampResponseV2() + { + message = wex.Message, + status = "error", + messageDetail = wex.StackTrace + }; + } + } + + internal static async Task TryGetFileAsync(HttpResponseMessage response) + { + try + { + if (response.StatusCode == HttpStatusCode.OK || response.StatusCode == HttpStatusCode.BadRequest) + { + return new StampResponseV2 + { + data = new Data_CFDI_TFD + { + cfdi = await response.Content.ReadAsStringAsync(), + tfd = null + }, + status = "error" + }; + } + else + return new StampResponseV2() + { + message = ((int)response.StatusCode).ToString(), + status = "error", + messageDetail = response.ReasonPhrase + }; + } + catch (Exception) + { + return new StampResponseV2() + { + message = ((int)response.StatusCode).ToString(), + status = "error", + messageDetail = response.ReasonPhrase + }; + } + } +} +} \ No newline at end of file diff --git a/src/sw-sdk/Helpers/XmlUtils.cs b/src/sw-sdk/Helpers/XmlUtils.cs index aa7ccff..69c51ef 100644 --- a/src/sw-sdk/Helpers/XmlUtils.cs +++ b/src/sw-sdk/Helpers/XmlUtils.cs @@ -1,14 +1,26 @@ using System; -using System.Collections.Generic; using System.Linq; using System.Text; -using System.Threading.Tasks; using System.Xml; namespace SW.Helpers { public static class XmlUtils { + internal static string GetUUIDFromTFD(string tfd) + { + try + { + XmlDocument doc = new XmlDocument(); + doc.LoadXml(tfd); + return doc.DocumentElement.Attributes.GetNamedItem("UUID").Value; + } + catch (Exception) + { + throw new ServicesException("No es posible obtener el UUID"); + } + } + public static string AddAddenda(string cfdiOriginal, string cfdiStamped,bool isb64) { string cfdi = cfdiStamped; diff --git a/src/sw-sdk/Services/Stamp/BaseStampV4XML.cs b/src/sw-sdk/Services/Stamp/BaseStampV4XML.cs new file mode 100644 index 0000000..fb0e0eb --- /dev/null +++ b/src/sw-sdk/Services/Stamp/BaseStampV4XML.cs @@ -0,0 +1,63 @@ +using SW.Helpers; +using SW.Services.Storage; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace SW.Services.Stamp +{ + public abstract class BaseStampV4XML : StampService + { + private string _operation; + private string _apiUrl; + + public BaseStampV4XML(string url,string urlApi, string user, string password, string operation, string proxy, int proxyPort) : base(url, user, password, proxy, proxyPort) + { + _operation = operation; + _apiUrl = urlApi; + } + + public BaseStampV4XML(string url, string urlApi, string token, string operation, string proxy, int proxyPort) : base(url, token, proxy, proxyPort) + { + _operation = operation; + _apiUrl = urlApi; + } + + public virtual async Task TimbrarV2XMLAsync(string xml, string email = null, string customId = null, bool isb64 = false, string[] extras = null) + { + StampResponseHandlerV2XML handler = new StampResponseHandlerV2XML(xml); + + string format = isb64 ? "b64" : ""; + var xmlBytes = Encoding.UTF8.GetBytes(xml); + var headers = await GetHeadersAsync(email, customId, extras); + var content = GetMultipartContent(xmlBytes); + var proxy = Helpers.RequestHelper.ProxySettings(this.Proxy, this.ProxyPort); + + var response = await handler.GetPostResponseAsync(this.Url, + string.Format("v4/cfdi33/{0}/{1}/{2}", + _operation, + StampTypes.v2.ToString(), + format), headers, content, proxy); + + if(response.status == "error" && response.message == "CFDI3307 - Timbre duplicado. El customId proporcionado está duplicado.") + { + StorageResponseHandler storangeHandler = new StorageResponseHandler(); + Thread.Sleep(5000); + + string uuid = Helpers.XmlUtils.GetUUIDFromTFD(response.data.tfd); + var xmlFromStorange = await storangeHandler.GetResponseAsync(_apiUrl, + headers, $"datawarehouse/v1/live/{uuid}", + Helpers.RequestHelper.ProxySettings(this.Proxy, this.ProxyPort)); + + var dataResult = await Helpers.DowloadFile.DowloadFileAsync(xmlFromStorange.data.records[0].urlXml, + Helpers.RequestHelper.ProxySettings(this.Proxy, this.ProxyPort)); + dataResult.data.tfd = response.data.tfd; + dataResult.message = response.message; + + return dataResult; + } + return response; + } + } +} + diff --git a/src/sw-sdk/Services/Stamp/StampResponseHandler.cs b/src/sw-sdk/Services/Stamp/StampResponseHandler.cs index 0a52f5b..6a60931 100644 --- a/src/sw-sdk/Services/Stamp/StampResponseHandler.cs +++ b/src/sw-sdk/Services/Stamp/StampResponseHandler.cs @@ -37,6 +37,30 @@ public override StampResponseV2 HandleException(Exception ex) return ex.Response(); } } + + internal class StampResponseHandlerV2XML : ResponseHandler + { + public StampResponseHandlerV2XML() + { + } + + public StampResponseHandlerV2XML(string xmlOriginal) : base(xmlOriginal) + { + } + + public override async Task GetPostResponseAsync(string url, string path, Dictionary headers, HttpContent content, HttpClientHandler proxy) + { + var response = await base.GetPostResponseAsync(url, path, headers, content, proxy); + if (base.Has307AndAddenda(response, response.data)) + response.data.cfdi = base.GetCfdiData(response, response.data.cfdi, path.ToLower().EndsWith("b64")); + return response; + } + + public override StampResponseV2 HandleException(Exception ex) + { + return ex.Response(); + } + } internal class StampResponseHandlerV3 : ResponseHandler { public StampResponseHandlerV3() diff --git a/src/sw-sdk/Services/Stamp/StampV4XML.cs b/src/sw-sdk/Services/Stamp/StampV4XML.cs new file mode 100644 index 0000000..5800e8b --- /dev/null +++ b/src/sw-sdk/Services/Stamp/StampV4XML.cs @@ -0,0 +1,12 @@ +namespace SW.Services.Stamp +{ + public class StampV4XML : BaseStampV4XML + { + public StampV4XML(string url, string urlApi, string user, string password, int proxyPort = 0, string proxy = null) : base(url, urlApi, user, password, "stamp", proxy, proxyPort) + { + } + public StampV4XML(string url, string urlApi, string token, int proxyPort = 0, string proxy = null) : base(url, urlApi, token, "stamp", proxy, proxyPort) + { + } + } +} diff --git a/test/sdk-test/Services/Stamp/StampV4XML_Test.cs b/test/sdk-test/Services/Stamp/StampV4XML_Test.cs new file mode 100644 index 0000000..c3f1c33 --- /dev/null +++ b/test/sdk-test/Services/Stamp/StampV4XML_Test.cs @@ -0,0 +1,53 @@ +using System; +using System.IO; +using System.Text; +using SW.Services.Stamp; +using Test_SW.Helpers; +using Xunit; +using System.Threading.Tasks; + +namespace Test_SW.Services.Stamp_Test +{ + public class StampV4XML_Test + { + [Fact] + public async Task Stamp_Test_StampV4XMLV4_SameCustomID_byTokenAsync() + { + string CustomId = Guid.NewGuid().ToString(); + var build = new BuildSettings(); + BaseStampV4XML stamp = new StampV4XML(build.Url,"https://api.test.sw.com.mx" ,build.Token); + var xml = GetXml(build); + var response = (StampResponseV2)await stamp.TimbrarV2XMLAsync(xml,null ,CustomId); + Assert.True(response.data != null, "El resultado data viene vacio."); + Assert.True(!string.IsNullOrEmpty(response.data.cfdi), "El resultado data.cfdi viene vacio."); + + xml = GetXml(build); + response = (StampResponseV2)await stamp.TimbrarV2XMLAsync(xml,null ,CustomId); + Assert.True(response.status == "error" && response.message == "CFDI3307 - Timbre duplicado. El customId proporcionado está duplicado."); + } + + [Fact] + public async Task Stamp_Test_StampV4XMLV4_DifCustomID_byTokenAsync() + { + string CustomIdfirstRequest = Guid.NewGuid().ToString(); + string CustomIdSecondRequest = Guid.NewGuid().ToString(); + var build = new BuildSettings(); + BaseStampV4XML stamp = new StampV4XML(build.Url,"https://api.test.sw.com.mx" ,build.Token); + var xml = GetXml(build); + var response = (StampResponseV2)await stamp.TimbrarV2XMLAsync(xml,null ,CustomIdfirstRequest); + Assert.True(response.data != null, "El resultado data viene vacio."); + + Assert.True(!string.IsNullOrEmpty(response.data.cfdi), "El resultado data.cfdi viene vacio."); + response = (StampResponseV2)await stamp.TimbrarV2XMLAsync(xml,null ,CustomIdSecondRequest); + + Assert.True(response.status == "error" && response.message == "307. El comprobante contiene un timbre previo."); + } + + private string GetXml(BuildSettings build) + { + var xml = Encoding.UTF8.GetString(File.ReadAllBytes("Resources/file.xml")); + xml = SignTools.SigXml(xml, Convert.FromBase64String(build.Pfx), build.CerPassword); + return xml; + } + } +} From 176a7e2cd4343ae1c7db49ed99e84d897c4b5aa9 Mon Sep 17 00:00:00 2001 From: "DESKTOP-FBQ78IM\\Dan" Date: Fri, 2 Jul 2021 12:53:53 -0500 Subject: [PATCH 5/8] Correccion de comentarios --- src/sw-sdk/Services/Stamp/BaseStampV4XML.cs | 8 +++++--- test/sdk-test/Helpers/BuildSettings.cs | 2 +- test/sdk-test/Services/Resend/Resend_Test.cs | 2 +- test/sdk-test/Services/Stamp/StampV4XML_Test.cs | 2 +- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/sw-sdk/Services/Stamp/BaseStampV4XML.cs b/src/sw-sdk/Services/Stamp/BaseStampV4XML.cs index fb0e0eb..697d45a 100644 --- a/src/sw-sdk/Services/Stamp/BaseStampV4XML.cs +++ b/src/sw-sdk/Services/Stamp/BaseStampV4XML.cs @@ -42,15 +42,17 @@ public virtual async Task TimbrarV2XMLAsync(string xml, string if(response.status == "error" && response.message == "CFDI3307 - Timbre duplicado. El customId proporcionado está duplicado.") { StorageResponseHandler storangeHandler = new StorageResponseHandler(); - Thread.Sleep(5000); - + await Task.Delay(5000); string uuid = Helpers.XmlUtils.GetUUIDFromTFD(response.data.tfd); var xmlFromStorange = await storangeHandler.GetResponseAsync(_apiUrl, headers, $"datawarehouse/v1/live/{uuid}", Helpers.RequestHelper.ProxySettings(this.Proxy, this.ProxyPort)); + if(string.IsNullOrEmpty(xmlFromStorange.data.records[0].urlAckCfdi)) + throw new ServicesException("No es posible obtener el url para decargar el XML"); + var dataResult = await Helpers.DowloadFile.DowloadFileAsync(xmlFromStorange.data.records[0].urlXml, - Helpers.RequestHelper.ProxySettings(this.Proxy, this.ProxyPort)); + Helpers.RequestHelper.ProxySettings(this.Proxy, this.ProxyPort)); dataResult.data.tfd = response.data.tfd; dataResult.message = response.message; diff --git a/test/sdk-test/Helpers/BuildSettings.cs b/test/sdk-test/Helpers/BuildSettings.cs index 7208232..3fb556f 100644 --- a/test/sdk-test/Helpers/BuildSettings.cs +++ b/test/sdk-test/Helpers/BuildSettings.cs @@ -13,7 +13,7 @@ class BuildSettings public string Password = "swpassut"; public string CerPassword = "12345678a"; //Temp token, time life 2 hours - public string Token = @"T2lYQ0t4L0RHVkR4dHZ5Nkk1VHNEakZ3Y0J4Nk9GODZuRyt4cE1wVm5tbXB3YVZxTHdOdHAwVXY2NTdJb1hkREtXTzE3dk9pMmdMdkFDR2xFWFVPUTQyWFhnTUxGYjdKdG8xQTZWVjFrUDNiOTVrRkhiOGk3RHladHdMaEM0cS8rcklzaUhJOGozWjN0K2h6R3gwQzF0c0g5aGNBYUt6N2srR3VoMUw3amtvPQ.T2lYQ0t4L0RHVkR4dHZ5Nkk1VHNEakZ3Y0J4Nk9GODZuRyt4cE1wVm5tbFlVcU92YUJTZWlHU3pER1kySnlXRTF4alNUS0ZWcUlVS0NhelhqaXdnWTRncklVSWVvZlFZMWNyUjVxYUFxMWFxcStUL1IzdGpHRTJqdS9Zakw2UGRDN2VkNEVBUGM1UUt3NVhZVC9QUTViWmZ6dGNJUG5JZVJ1d1hPdmFlN2s3cEp3UW5UY2hORXVWeS9mNnZ6YVZQTlg1OTdBbWJUNzJ4NHFJNVJnOFBxTEo3TGQwank2dlVwektHUmJwY2RqNGdYRG5yaTVZUTBaZ05vR1Y0Z0xsNzg5MlM0cWJUK2hRamV2bXUwcFVGM3E4SzZMNFkvVE5LTCtJZFFEVHNob05QVmRzY2dSUGxBUXBoc29JcVp1TW9MV1FkUUtTRVdROVNPTVRMYkg5dmIrM25LM3pRbDBKN2RHaEI5TDZLK2hqa1NyYnJvZlo1T2lxRUEvWEU5cDNwY2dMamJXaFdGWXpqRHZXdS9ldTVGbEo0Mk9scDY2Q3NxWG5rckJ4OXJUTnhYUml6Q29QeDhxRGJEUVpzakc4SGhJbG9uZ2NNSm5TT0ZTejVlNVRtNmphTDZFZXlqOUVSR2h5Z3RibGtDWEQySkZ3OE1XRzVDeTRna3BzM0dzbjg.GyPNs9tQ_j1yh5GtSG41t24xyVCQerZimJiV-9AF-5c"; + public string Token = @"T2lYQ0t4L0RHVkR4dHZ5Nkk1VHNEakZ3Y0J4Nk9GODZuRyt4cE1wVm5tbXB3YVZxTHdOdHAwVXY2NTdJb1hkREtXTzE3dk9pMmdMdkFDR2xFWFVPUTQyWFhnTUxGYjdKdG8xQTZWVjFrUDNiOTVrRkhiOGk3RHladHdMaEM0cS8rcklzaUhJOGozWjN0K2h6R3gwQzF0c0g5aGNBYUt6N2srR3VoMUw3amtvPQ.T2lYQ0t4L0RHVkR4dHZ5Nkk1VHNEakZ3Y0J4Nk9GODZuRyt4cE1wVm5tbFlVcU92YUJTZWlHU3pER1kySnlXRTF4alNUS0ZWcUlVS0NhelhqaXdnWTRncklVSWVvZlFZMWNyUjVxYUFxMWFxcStUL1IzdGpHRTJqdS9Zakw2UGRDN2VkNEVBUGM1UUt3NVhZVC9QUTViWmZ6dGNJUG5JZVJ1d1hPdmFlN2s3cEp3UW5UY2hORXVWeS9mNnZ6YVZQTlg1OTdBbWJUNzJ4NHFJNVJnOFBxTEo3TGQwank2dlVwektHUmJwY2RqNGdYRG5yaTVZUTBaZ05vR1Y0Z0xsNzg5MlM0cWJUK2hRamV2bXUwcFVGM3E4SzZMNFkvVE5LTCtJZFFEVHNob05QVmRzY2dSUGxBUXBoc29JcVp1TW9MV1FkUUtTRVdROVNPTVRMYkg5dmIrM25LM3pRbDBKN2RHaEI5TDZLK2hnQUQycUdSQ0hob1U2MFV1UFpNK2xiQldKbVV3SzNtM21kSmQ5bDBIdFZQOEorZVZ0b3BpR3BJYlJCYy80TlBzeEtRVHlRRFZ6eWwwMVZ0WVRqVzZUZ29GSDJWNzUvcWJ5Ujg0enVHMFJKa2pvL3ovRERveWdsNnZWVUtpNlgveEhubi9YSUFtSWRFVkRGQ0tiTTlqaFM.92N_P7Vo8EB1rwLEz42wxjZs0cMsBx1N_R78RzafkZ0"; public string Cer = Convert.ToBase64String(File.ReadAllBytes("Resources/CertificadosDePrueba/EKU9003173C9.cer")); public string Key = Convert.ToBase64String(File.ReadAllBytes("Resources/CertificadosDePrueba/EKU9003173C9.key")); diff --git a/test/sdk-test/Services/Resend/Resend_Test.cs b/test/sdk-test/Services/Resend/Resend_Test.cs index af72805..753b72c 100644 --- a/test/sdk-test/Services/Resend/Resend_Test.cs +++ b/test/sdk-test/Services/Resend/Resend_Test.cs @@ -11,7 +11,7 @@ public async Task Resend_email() { var build = new BuildSettings(); sw_sdk.Services.Resend.Resend resend = new sw_sdk.Services.Resend.Resend(build.Url, build.UrlSWServices, build.User, build.Password); - var responseResend = await resend.ResendEmailAsync("534a129c-2a8d-4868-8f51-1fd64040ee97", "someemail@some.com"); + var responseResend = await resend.ResendEmailAsync("1b1ab944-174a-4c1c-8319-da66d269dfb7", "someemail@some.com"); Assert.True(responseResend != null && responseResend.data != null && responseResend.status == "success"); } } diff --git a/test/sdk-test/Services/Stamp/StampV4XML_Test.cs b/test/sdk-test/Services/Stamp/StampV4XML_Test.cs index c3f1c33..ca95d80 100644 --- a/test/sdk-test/Services/Stamp/StampV4XML_Test.cs +++ b/test/sdk-test/Services/Stamp/StampV4XML_Test.cs @@ -15,7 +15,7 @@ public async Task Stamp_Test_StampV4XMLV4_SameCustomID_byTokenAsync() { string CustomId = Guid.NewGuid().ToString(); var build = new BuildSettings(); - BaseStampV4XML stamp = new StampV4XML(build.Url,"https://api.test.sw.com.mx" ,build.Token); + BaseStampV4XML stamp = new StampV4XML(build.Url, build.UrlSWServices, build.Token); var xml = GetXml(build); var response = (StampResponseV2)await stamp.TimbrarV2XMLAsync(xml,null ,CustomId); Assert.True(response.data != null, "El resultado data viene vacio."); From a0b3f44977e01a01f23b48b897b25beddee18897 Mon Sep 17 00:00:00 2001 From: "DESKTOP-FBQ78IM\\Dan" Date: Fri, 2 Jul 2021 13:04:40 -0500 Subject: [PATCH 6/8] Use build props --- test/sdk-test/Services/Stamp/StampV4XML_Test.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/sdk-test/Services/Stamp/StampV4XML_Test.cs b/test/sdk-test/Services/Stamp/StampV4XML_Test.cs index ca95d80..279c452 100644 --- a/test/sdk-test/Services/Stamp/StampV4XML_Test.cs +++ b/test/sdk-test/Services/Stamp/StampV4XML_Test.cs @@ -32,7 +32,7 @@ public async Task Stamp_Test_StampV4XMLV4_DifCustomID_byTokenAsync() string CustomIdfirstRequest = Guid.NewGuid().ToString(); string CustomIdSecondRequest = Guid.NewGuid().ToString(); var build = new BuildSettings(); - BaseStampV4XML stamp = new StampV4XML(build.Url,"https://api.test.sw.com.mx" ,build.Token); + BaseStampV4XML stamp = new StampV4XML(build.Url, build.UrlSWServices ,build.Token); var xml = GetXml(build); var response = (StampResponseV2)await stamp.TimbrarV2XMLAsync(xml,null ,CustomIdfirstRequest); Assert.True(response.data != null, "El resultado data viene vacio."); From 0afb74afa9ae34b6d6975b04a97496929c0d578a Mon Sep 17 00:00:00 2001 From: Aeyrton Villalobos Date: Tue, 15 Nov 2022 23:35:48 -0600 Subject: [PATCH 7/8] Merge from origin/develop --- src/sw-sdk/Helpers/ResponseHelper.cs | 146 +----------------- .../Validate/ValidateResponseHandler.cs | 2 +- test/sdk-test/Helpers/BuildSettings.cs | 1 + .../cfdi33_ComercioExterior.xml | 2 +- .../sdk-test/Services/Account/Account_Test.cs | 2 +- test/sdk-test/Services/Resend/Resend_Test.cs | 2 +- 6 files changed, 8 insertions(+), 147 deletions(-) diff --git a/src/sw-sdk/Helpers/ResponseHelper.cs b/src/sw-sdk/Helpers/ResponseHelper.cs index d71461d..be2089b 100644 --- a/src/sw-sdk/Helpers/ResponseHelper.cs +++ b/src/sw-sdk/Helpers/ResponseHelper.cs @@ -1,90 +1,13 @@ -using SW.Services.AcceptReject; -using SW.Services.Account; -using SW.Services.Authentication; -using SW.Services.Cancelation; -using SW.Services.Csd; -using SW.Services.Pdf; -using SW.Services.Pendings; -using SW.Services.Relations; -using SW.Services.Stamp; -using SW.Services.Storage; -using SW.Services.Validate; -using sw_sdk.Services.Resend; +using SW.Entities; using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; namespace SW.Helpers { internal static class ResponseHelper { - internal static AuthResponse ToAuthResponse(this Exception ex) + internal static T Response(this Exception ex) where T : Response, new() { - return new AuthResponse() - { - message = ex.Message, - status = "error", - messageDetail = ex.GetErrorDetail() - }; - } - internal static AccountResponse ToAccountResponse(this Exception ex) - { - return new AccountResponse() - { - message = ex.Message, - status = "error", - messageDetail = ex.GetErrorDetail() - }; - } - internal static CancelationResponse ToCancelationResponse(this Exception ex) - { - return new CancelationResponse() - { - message = ex.Message, - status = "error", - messageDetail = ex.GetErrorDetail() - }; - } - internal static StampResponseV1 ToStampResponseV1(this Exception ex) - { - return new StampResponseV1() - { - message = ex.Message, - status = "error", - messageDetail = ex.GetErrorDetail() - }; - } - internal static StampResponseV2 ToStampResponseV2(this Exception ex) - { - return new StampResponseV2() - { - message = ex.Message, - status = "error", - messageDetail = ex.GetErrorDetail() - }; - } - internal static StampResponseV3 ToStampResponseV3(this Exception ex) - { - return new StampResponseV3() - { - message = ex.Message, - status = "error", - messageDetail = ex.GetErrorDetail() - }; - } - internal static StampResponseV4 ToStampResponseV4(this Exception ex) - { - return new StampResponseV4() - { - message = ex.Message, - status = "error", - messageDetail = ex.GetErrorDetail() - }; - } - internal static ValidateXmlResponse ToValidateXmlResponse(this Exception ex) - { - return new ValidateXmlResponse() + return new T() { message = ex.Message, status = "error", @@ -98,68 +21,5 @@ internal static string GetErrorDetail(this Exception ex) else return ""; } - internal static AcceptRejectResponse ToAcceptRejectResponse(this Exception ex) - { - return new AcceptRejectResponse() - { - message = ex.Message, - status = "error", - messageDetail = ex.GetErrorDetail() - }; - } - internal static RelationsResponse ToRelationsResponse(this Exception ex) - { - return new RelationsResponse() - { - message = ex.Message, - status = "error", - messageDetail = ex.GetErrorDetail() - }; - } - internal static PendingsResponse ToPendingsResponse(this Exception ex) - { - return new PendingsResponse() - { - message = ex.Message, - status = "error", - messageDetail = ex.GetErrorDetail() - }; - } - internal static PdfResponse ToPdfResponse(this Exception ex) - { - return new PdfResponse() - { - message = ex.Message, - status = "error", - messageDetail = ex.GetErrorDetail() - }; - } - internal static ResendResponse ToResendResponse(this Exception ex) - { - return new ResendResponse() - { - message = ex.Message, - status = "error", - messageDetail = ex.GetErrorDetail() - }; - } - internal static UploadCsdResponse ToCargaCsdResponse(this Exception ex) - { - return new UploadCsdResponse() - { - message = ex.Message, - status = "error", - messageDetail = ex.GetErrorDetail() - }; - } - internal static StorageResponse ToStorageResponse(this Exception ex) - { - return new StorageResponse() - { - message = ex.Message, - status = "error", - messageDetail = ex.GetErrorDetail() - }; - } } } diff --git a/src/sw-sdk/Services/Validate/ValidateResponseHandler.cs b/src/sw-sdk/Services/Validate/ValidateResponseHandler.cs index aad935d..aad32ac 100644 --- a/src/sw-sdk/Services/Validate/ValidateResponseHandler.cs +++ b/src/sw-sdk/Services/Validate/ValidateResponseHandler.cs @@ -7,7 +7,7 @@ internal class ValidateXmlResponseHandler : ResponseHandler { public override ValidateXmlResponse HandleException(Exception ex) { - return ex.ToValidateXmlResponse(); + return ex.Response(); } } } diff --git a/test/sdk-test/Helpers/BuildSettings.cs b/test/sdk-test/Helpers/BuildSettings.cs index c59385f..d78712d 100644 --- a/test/sdk-test/Helpers/BuildSettings.cs +++ b/test/sdk-test/Helpers/BuildSettings.cs @@ -7,6 +7,7 @@ namespace Test_SW.Helpers { class BuildSettings { + public string urlSAT = "https://consultaqr.facturaelectronica.sat.gob.mx/ConsultaCFDIService.svc"; public string Url = "http://services.test.sw.com.mx"; public string UrlApi = "http://api.test.sw.com.mx"; public string User = "pruebas_ut@sw.com.mx"; diff --git a/test/sdk-test/Resources/CFDI33_Validacion_Servicio/cfdi33_ComercioExterior.xml b/test/sdk-test/Resources/CFDI33_Validacion_Servicio/cfdi33_ComercioExterior.xml index e0b930c..967a07e 100644 --- a/test/sdk-test/Resources/CFDI33_Validacion_Servicio/cfdi33_ComercioExterior.xml +++ b/test/sdk-test/Resources/CFDI33_Validacion_Servicio/cfdi33_ComercioExterior.xml @@ -1,5 +1,5 @@ - + diff --git a/test/sdk-test/Services/Account/Account_Test.cs b/test/sdk-test/Services/Account/Account_Test.cs index b2c5f03..f28102a 100644 --- a/test/sdk-test/Services/Account/Account_Test.cs +++ b/test/sdk-test/Services/Account/Account_Test.cs @@ -13,7 +13,7 @@ public class Account_Test_45 public async Task Account_Test_45_ConsultaDeSaldoByUserAsync() { var build = new BuildSettings(); - BalanceAccount account = new BalanceAccount("http://services.test.sw.com.mx", build.User, build.Password); + BalanceAccount account = new BalanceAccount("http://services.test.sw.com.mx", "demo", "123456789"); AccountResponse response = await account.ConsultarSaldoAsync(); if(response.status != "error") { diff --git a/test/sdk-test/Services/Resend/Resend_Test.cs b/test/sdk-test/Services/Resend/Resend_Test.cs index 9f3fcfd..1bc15eb 100644 --- a/test/sdk-test/Services/Resend/Resend_Test.cs +++ b/test/sdk-test/Services/Resend/Resend_Test.cs @@ -6,7 +6,7 @@ namespace sdk_test.Services.Resend { public class Resend_Test { - [Fact] + [Fact(Skip = "bug SMARTER-2687")] public async Task Resend_email() { var build = new BuildSettings(); From ad00c4b68edc20f584869f40065fb03de9b98cae Mon Sep 17 00:00:00 2001 From: Aeyrton Villalobos Date: Tue, 15 Nov 2022 23:39:55 -0600 Subject: [PATCH 8/8] Remove sleep from the async function. --- src/sw-sdk/Services/Stamp/BaseStampV4XML.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/sw-sdk/Services/Stamp/BaseStampV4XML.cs b/src/sw-sdk/Services/Stamp/BaseStampV4XML.cs index 697d45a..6f41de7 100644 --- a/src/sw-sdk/Services/Stamp/BaseStampV4XML.cs +++ b/src/sw-sdk/Services/Stamp/BaseStampV4XML.cs @@ -42,7 +42,6 @@ public virtual async Task TimbrarV2XMLAsync(string xml, string if(response.status == "error" && response.message == "CFDI3307 - Timbre duplicado. El customId proporcionado está duplicado.") { StorageResponseHandler storangeHandler = new StorageResponseHandler(); - await Task.Delay(5000); string uuid = Helpers.XmlUtils.GetUUIDFromTFD(response.data.tfd); var xmlFromStorange = await storangeHandler.GetResponseAsync(_apiUrl, headers, $"datawarehouse/v1/live/{uuid}",