private async Task HandleWebHookRequest(WebHookRequest webHookRequest) { foreach (var entry in webHookRequest.Entry) { await HandleWebHookEvents(entry.Messaging); } }
/// <summary> /// Processes the web hook request /// </summary> /// <param name="httpRequest">The HTTP request</param> /// <returns>The <see cref="Task"/></returns> public virtual async Task ProcessAsync(HttpRequest httpRequest) { if (httpRequest == null) { throw new ArgumentNullException(nameof(httpRequest)); } using var streamReader = new StreamReader(httpRequest.Body); var rawBody = await streamReader.ReadToEndAsync(); if (CanProcess(httpRequest, rawBody)) { WebHookRequest request = null; try { request = JsonConvert.DeserializeObject <WebHookRequest>(rawBody); } catch (Exception exception) { _logger.Error($"{Defaults.SystemName}: Invalid the web hook request deserialization.", exception); } if (request?.Data?.Object != null) { if (request.Data.Object is RefundResponse refundResponse) { await ProcessRefundResponseAsync(request, refundResponse); } } } }
protected virtual async Task ProcessRefundResponseAsync(WebHookRequest request, RefundResponse refundResponse) { if (refundResponse.PaymentId == Guid.Empty) { return; } // only transferred refunds if (request.Type != "payment.refund_transferred") { return; } try { var paymentResponse = await _paymentApi.GetPaymentAsync(refundResponse.PaymentId); if (paymentResponse != null) { if (!Guid.TryParse(paymentResponse.OrderId, out var orderGuid)) { return; } var order = _orderService.GetOrderByGuid(orderGuid); if (order != null) { var refundIds = _genericAttributeService.GetAttribute <List <string> >(order, Defaults.RefundIdAttributeName) ?? new List <string>(); var refundId = refundResponse.Id.ToString(); if (!refundIds.Contains(refundId)) { if (paymentResponse.Amount == refundResponse.Amount) { if (_orderProcessingService.CanRefundOffline(order)) { _orderProcessingService.RefundOffline(order); } } else { if (_orderProcessingService.CanPartiallyRefundOffline(order, refundResponse.Amount / 100)) { _orderProcessingService.PartiallyRefundOffline(order, refundResponse.Amount / 100); } } refundIds.Add(refundId); _genericAttributeService.SaveAttribute(order, Defaults.RefundIdAttributeName, refundIds); } } } } catch (ApiException exception) { _logger.Error($"{Defaults.SystemName}: {exception.Message}", exception); } }
public async Task WebhookCreate() { var request = new WebHookRequestService(); var webHookRequest = new WebHookRequest { WebhookUrl = "https://pix.example.com/api/webhook/" }; var success = await request.Create("key", webHookRequest); }
public async Task SetWebHook() { var wh = new WebHookRequest { url = "google.com", event_types = { "delivered", "seen", "failed", "subscribed", "unsubscribed", "conversation_started" }, send_name = true, send_photo = true }; var response = await Client.PostAsJsonAsync("https://chatapi.viber.com/pa/set_webhook", wh); }
public async Task Delete(WebHookRequest request) { var command = _mapper.Map <DeleteWebHookCommand>(request); await _mediator.Send(command); }
public static ProjectHookTypeClient ParseHookType(WebHookRequest message) { return ParseHookType(message.Request); }
/// <summary> /// Endpoint para configuração do serviço de notificações acerca de Pix recebidos. Somente Pix associados a um txid serão notificados. /// </summary> /// <param name="cob"></param> /// <returns></returns> public async Task <bool> Create(string key, WebHookRequest request) { return(await PutAsync <bool>("/" + key, request)); }
public static ProjectHookTypeClient ParseHookType(WebHookRequest message) { return(ParseHookType(message.Request)); }
public async Task <IActionResult> Post([FromBody] WebHookRequest request) { var result = await _iNotifyService.SendAsync(request.Event); return(Ok(result)); }