コード例 #1
0
 private async Task HandleWebHookRequest(WebHookRequest webHookRequest)
 {
     foreach (var entry in webHookRequest.Entry)
     {
         await HandleWebHookEvents(entry.Messaging);
     }
 }
コード例 #2
0
        /// <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);
                    }
                }
            }
        }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
 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);
 }
コード例 #5
0
        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);
        }
コード例 #6
0
 public async Task Delete(WebHookRequest request)
 {
     var command = _mapper.Map <DeleteWebHookCommand>(request);
     await _mediator.Send(command);
 }
コード例 #7
0
ファイル: ProjectHookClient.cs プロジェクト: Xarlot/DXVcs2Git
 public static ProjectHookTypeClient ParseHookType(WebHookRequest message)
 {
     return ParseHookType(message.Request);
 }
コード例 #8
0
 /// <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));
 }
コード例 #9
0
ファイル: ProjectHookClient.cs プロジェクト: radtek/DXVcs2Git
 public static ProjectHookTypeClient ParseHookType(WebHookRequest message)
 {
     return(ParseHookType(message.Request));
 }
コード例 #10
0
        public async Task <IActionResult> Post([FromBody] WebHookRequest request)
        {
            var result = await _iNotifyService.SendAsync(request.Event);

            return(Ok(result));
        }