Ejemplo n.º 1
0
        public Task <Result> SendPaymentConfirmation(PaymentLinkData link)
        {
            var payload = new PaymentLinkPaymentConfirmation
            {
                Date               = FormatDate(link.Date),
                Amount             = MoneyFormatter.ToCurrencyString(link.Amount, link.Currency),
                ReferenceCode      = link.ReferenceCode,
                ServiceDescription = link.ServiceType.ToString(),
            };

            return(_mailSender.Send(_options.PaymentConfirmationMailTemplateId, link.Email, payload));
        }
Ejemplo n.º 2
0
        public Task <Result> SendLink(PaymentLinkData link, string paymentUrl)
        {
            var payload = new PaymentLinkMail
            {
                Amount             = MoneyFormatter.ToCurrencyString(link.Amount, link.Currency),
                Comment            = link.Comment,
                ServiceDescription = link.ServiceType.ToString(),
                ReferenceCode      = link.ReferenceCode,
                PaymentLink        = paymentUrl
            };

            return(_mailSender.Send(_options.LinkMailTemplateId, link.Email, payload));
        }
Ejemplo n.º 3
0
        public async Task SendLink(PaymentLinkData linkData)
        {
            var requestString = JsonConvert.SerializeObject(linkData);

            Log.Information($"Sending link to e-mail. Link data: {requestString}");
            var result = await _edoHttpClient.PostAsync(UrlHelper.CombineUri(_apiUrl, SendLinkUrl),
                                                        new StringContent(requestString, Encoding.UTF8, "application/json"));

            if (!result.IsSuccessStatusCode)
            {
                Log.Error($"Failed to send link, response: {result.Content.ReadAsStringAsync().Result}");
                throw new HttpRequestException(result.ReasonPhrase);
            }
        }
        public Task <Result> SendPaymentConfirmation(PaymentLinkData link)
        {
            var payload = new PaymentLinkPaymentConfirmation
            {
                Date               = DateTimeFormatters.ToDateString(link.Date),
                Amount             = MoneyFormatter.ToCurrencyString(link.Amount, link.Currency),
                ReferenceCode      = link.ReferenceCode,
                ServiceDescription = link.ServiceType.ToString(),
            };

            return(_notificationService.Send(messageData: payload,
                                             notificationType: NotificationTypes.PaymentLinkPaidNotification,
                                             email: link.Email));
        }
        public Task <Result> SendLink(PaymentLinkData link, string paymentUrl)
        {
            var payload = new PaymentLinkMail
            {
                Amount             = MoneyFormatter.ToCurrencyString(link.Amount, link.Currency),
                Comment            = link.Comment,
                ServiceDescription = link.ServiceType.ToString(),
                ReferenceCode      = link.ReferenceCode,
                PaymentLink        = paymentUrl
            };

            return(_notificationService.Send(messageData: payload,
                                             notificationType: NotificationTypes.ExternalPaymentLinks,
                                             email: link.Email));
        }
Ejemplo n.º 6
0
        private Task <Result <PaymentResponse> > ProcessResponse(PaymentLinkData link, string code, JObject response)
        {
            return(ParseResponse()
                   .TapIf(ShouldSendReceipt, parsedResponse => SendReceipt())
                   .Map(StorePaymentResult));


            Result <PaymentResponse> ParseResponse()
            {
                var(_, isFailure, cardPaymentResult, error) = _payfortResponseParser.ParsePaymentResponse(response);
                if (isFailure)
                {
                    return(Result.Failure <PaymentResponse>(error));
                }

                return(Result.Success(new PaymentResponse(cardPaymentResult.Secure3d,
                                                          cardPaymentResult.Status,
                                                          cardPaymentResult.Message)));
            }

            bool ShouldSendReceipt(PaymentResponse parsedResponse)
            {
                return(parsedResponse.Status == CreditCardPaymentStatuses.Success &&
                       IsNotAlreadyPaid(link));
Ejemplo n.º 7
0
 static bool IsNotAlreadyPaid(PaymentLinkData link) => link.CreditCardPaymentStatus != CreditCardPaymentStatuses.Success;
Ejemplo n.º 8
0
 private Uri GeneratePaymentUri(PaymentLinkData link) => new Uri($"{_paymentLinkOptions.PaymentUrlPrefix}/{link.Code}");