public async Task <bool> CreateOrUpdateHook() { // POST https://{accountName}.{environment}.com.br/api/orders/hook/config string baseUrl = this._httpContextAccessor.HttpContext.Request.Headers[StorePickUpConstants.FORWARDED_HOST]; HookNotification createOrUpdateHookResponse = new HookNotification(); OrderHook orderHook = new OrderHook { Filter = new Filter { Status = new List <string> { StorePickUpConstants.Status.ReadyForHandling, } }, Hook = new Hook { Headers = new Headers { Key = StorePickUpConstants.EndPointKey }, Url = new Uri($"https://{baseUrl}/{StorePickUpConstants.AppName}/{StorePickUpConstants.EndPointKey}") } }; var jsonSerializedOrderHook = JsonConvert.SerializeObject(orderHook); Console.WriteLine($"Url = https://{baseUrl}/{StorePickUpConstants.AppName}/{StorePickUpConstants.EndPointKey}"); var request = new HttpRequestMessage { Method = HttpMethod.Post, RequestUri = new Uri($"http://{this._httpContextAccessor.HttpContext.Request.Headers[StorePickUpConstants.VTEX_ACCOUNT_HEADER_NAME]}.{StorePickUpConstants.ENVIRONMENT}.com.br/api/orders/hook/config"), Content = new StringContent(jsonSerializedOrderHook, Encoding.UTF8, StorePickUpConstants.APPLICATION_JSON) }; request.Headers.Add(StorePickUpConstants.USE_HTTPS_HEADER_NAME, "true"); string authToken = this._httpContextAccessor.HttpContext.Request.Headers[StorePickUpConstants.HEADER_VTEX_CREDENTIAL]; if (authToken != null) { request.Headers.Add(StorePickUpConstants.AUTHORIZATION_HEADER_NAME, authToken); request.Headers.Add(StorePickUpConstants.PROXY_AUTHORIZATION_HEADER_NAME, authToken); } MerchantSettings merchantSettings = await _storePickupRepository.GetMerchantSettings(); request.Headers.Add(StorePickUpConstants.AppKey, merchantSettings.AppKey); request.Headers.Add(StorePickUpConstants.AppToken, merchantSettings.AppToken); var client = _clientFactory.CreateClient(); var response = await client.SendAsync(request); string responseContent = await response.Content.ReadAsStringAsync(); Console.WriteLine($"[-] CreateOrUpdateHook Response {response.StatusCode} Content = '{responseContent}' [-]"); _context.Vtex.Logger.Info("CreateOrUpdateHook", "Response", $"[{response.StatusCode}] {responseContent}"); return(response.IsSuccessStatusCode); }
public async Task <HookNotification> CreateOrUpdateHook() { // POST https://{accountName}.{environment}.com.br/api/orders/hook/config HookNotification createOrUpdateHookResponse = new HookNotification(); OrderHook orderHook = new OrderHook { Filter = new Filter { Status = new List <string> { Constants.Status.ReadyForHandling, Constants.Status.Invoiced } }, Hook = new Hook { Headers = new Headers { Key = Constants.EndPointKey }, Url = new Uri($"https://{this._httpContextAccessor.HttpContext.Request.Headers[Constants.VTEX_ACCOUNT_HEADER_NAME]}.myvtex.com/{Constants.AppName}") } }; var jsonSerializedOrderHook = JsonConvert.SerializeObject(orderHook); //Console.WriteLine($"Hook = {jsonSerializedOrderHook}"); //Console.WriteLine($"Url = http://{this._httpContextAccessor.HttpContext.Request.Headers[Constants.VTEX_ACCOUNT_HEADER_NAME]}.{Constants.ENVIRONMENT}.com.br/api/orders/hook/config"); var request = new HttpRequestMessage { Method = HttpMethod.Post, RequestUri = new Uri($"http://{this._httpContextAccessor.HttpContext.Request.Headers[Constants.VTEX_ACCOUNT_HEADER_NAME]}.{Constants.ENVIRONMENT}.com.br/api/orders/hook/config"), Content = new StringContent(jsonSerializedOrderHook, Encoding.UTF8, Constants.APPLICATION_JSON) }; string authToken = this._httpContextAccessor.HttpContext.Request.Headers[Constants.HEADER_VTEX_CREDENTIAL]; if (authToken != null) { request.Headers.Add(Constants.AUTHORIZATION_HEADER_NAME, authToken); request.Headers.Add(Constants.PROXY_AUTHORIZATION_HEADER_NAME, authToken); } var client = _clientFactory.CreateClient(); var response = await client.SendAsync(request); string responseContent = await response.Content.ReadAsStringAsync(); Console.WriteLine($"[-] Response {response.StatusCode} Content = '{responseContent}' [-]"); createOrUpdateHookResponse = JsonConvert.DeserializeObject <HookNotification>(responseContent); return(createOrUpdateHookResponse); }
public async Task <bool> VerifyHook() { bool verified = false; // POST https://{accountName}.{environment}.com.br/api/orders/hook/config string baseUrl = this._httpContextAccessor.HttpContext.Request.Headers[StorePickUpConstants.FORWARDED_HOST]; OrderHook verifyHookResponse = new OrderHook(); OrderHook orderHook = new OrderHook { Filter = new Filter { Status = new List <string> { StorePickUpConstants.Status.ReadyForHandling, } }, Hook = new Hook { Headers = new Headers { Key = StorePickUpConstants.EndPointKey }, Url = new Uri($"https://{baseUrl}/{StorePickUpConstants.AppName}/{StorePickUpConstants.EndPointKey}") } }; var request = new HttpRequestMessage { Method = HttpMethod.Get, RequestUri = new Uri($"http://{this._httpContextAccessor.HttpContext.Request.Headers[StorePickUpConstants.VTEX_ACCOUNT_HEADER_NAME]}.{StorePickUpConstants.ENVIRONMENT}.com.br/api/orders/hook/config") }; request.Headers.Add(StorePickUpConstants.USE_HTTPS_HEADER_NAME, "true"); string authToken = this._httpContextAccessor.HttpContext.Request.Headers[StorePickUpConstants.HEADER_VTEX_CREDENTIAL]; if (authToken != null) { request.Headers.Add(StorePickUpConstants.AUTHORIZATION_HEADER_NAME, authToken); request.Headers.Add(StorePickUpConstants.PROXY_AUTHORIZATION_HEADER_NAME, authToken); } MerchantSettings merchantSettings = await _storePickupRepository.GetMerchantSettings(); request.Headers.Add(StorePickUpConstants.AppKey, merchantSettings.AppKey); request.Headers.Add(StorePickUpConstants.AppToken, merchantSettings.AppToken); var client = _clientFactory.CreateClient(); var response = await client.SendAsync(request); string responseContent = await response.Content.ReadAsStringAsync(); _context.Vtex.Logger.Info("VerifyHook", "Response", $"[{response.StatusCode}] {responseContent}"); if (response.IsSuccessStatusCode) { verifyHookResponse = JsonConvert.DeserializeObject <OrderHook>(responseContent); if (verifyHookResponse.Hook.Url.Equals($"https://{baseUrl}/{StorePickUpConstants.AppName}/{StorePickUpConstants.EndPointKey}") && verifyHookResponse.Hook.Headers.Key.Equals(StorePickUpConstants.EndPointKey)) { verified = true; } } return(verified); }