Ejemplo n.º 1
0
        public async Task <Result <CreditCardCaptureResult> > Capture(CreditCardCaptureMoneyRequest request,
                                                                      CreditCardPaymentInfo paymentInfo,
                                                                      string maskedNumber,
                                                                      Currencies currency,
                                                                      UserInfo user,
                                                                      int agentId)
        {
            return(await CaptureInPayfort()
                   .Tap(WriteAuditLog));

            Task <Result <CreditCardCaptureResult> > CaptureInPayfort() => _payfortService.Capture(request);

            Task WriteAuditLog(CreditCardCaptureResult captureResult)
            {
                var eventData = new CreditCardLogEventData($"Capture money for the payment '{request.MerchantReference}'",
                                                           captureResult.ExternalCode,
                                                           captureResult.Message,
                                                           paymentInfo.InternalReferenceCode);

                return(_creditCardAuditService.Write(CreditCardEventType.Capture,
                                                     maskedNumber,
                                                     request.Amount,
                                                     user,
                                                     eventData,
                                                     request.MerchantReference,
                                                     agentId,
                                                     currency));
            }
        }
Ejemplo n.º 2
0
        public async Task <Result <CreditCardVoidResult> > Void(CreditCardVoidMoneyRequest request,
                                                                CreditCardPaymentInfo paymentInfo,
                                                                string maskedNumber,
                                                                MoneyAmount moneyAmount,
                                                                string referenceCode,
                                                                UserInfo user,
                                                                int agentId)
        {
            return(await VoidInPayfort()
                   .Tap(WriteAuditLog));

            Task <Result <CreditCardVoidResult> > VoidInPayfort() => _payfortService.Void(request);

            Task WriteAuditLog(CreditCardVoidResult voidResult)
            {
                var eventData = new CreditCardLogEventData($"Void money for the payment '{referenceCode}'",
                                                           voidResult.ExternalCode,
                                                           voidResult.Message,
                                                           paymentInfo.InternalReferenceCode);

                return(_creditCardAuditService.Write(CreditCardEventType.Void,
                                                     maskedNumber,
                                                     moneyAmount.Amount,
                                                     user,
                                                     eventData,
                                                     referenceCode,
                                                     agentId,
                                                     moneyAmount.Currency));
            }
        }
        private async Task WriteAuthorizeAuditLog(CreditCardPaymentResult payment, int agentId, Currencies currency)
        {
            // No need to log secure 3d request, audit log will be written when when secure 3d passes and actual authorization occurs
            if (payment.Status == CreditCardPaymentStatuses.Secure3d)
            {
                return;
            }

            var eventData = new CreditCardLogEventData($"Authorize money for the payment '{payment.ReferenceCode}'",
                                                       payment.ExternalCode,
                                                       payment.Message,
                                                       payment.MerchantReference);

            await _creditCardAuditService.Write(CreditCardEventType.Authorize,
                                                payment.CardNumber,
                                                payment.Amount,
                                                new UserInfo(agentId, UserTypes.Agent),
                                                eventData,
                                                payment.ReferenceCode,
                                                agentId,
                                                currency);
        }