Example #1
0
        public async Task <Result <CreditCardRefundResult> > Refund(CreditCardRefundMoneyRequest request,
                                                                    CreditCardPaymentInfo paymentInfo,
                                                                    PaymentProcessors paymentProcessor,
                                                                    string maskedNumber,
                                                                    string referenceCode,
                                                                    int paymentId,
                                                                    ApiCaller apiCaller,
                                                                    int agentId)
        {
            return(await RefundInPayfort()
                   .Tap(WriteAuditLog));

            async Task <Result <CreditCardRefundResult> > RefundInPayfort()
            {
                return(request.Amount.IsGreaterThan(0m)
                    ? paymentProcessor == PaymentProcessors.Payfort
                        ? await _payfortService.Refund(request)
                        : await _nGeniusRefundService.Refund(paymentId, request.Amount.ToMoneyAmount(request.Currency), paymentInfo.ExternalId, request.MerchantReference)
                    : new CreditCardRefundResult(default, default, request.MerchantReference));
Example #2
0
        public async Task <Result <CreditCardCaptureResult> > Capture(CreditCardCaptureMoneyRequest request,
                                                                      CreditCardPaymentInfo paymentInfo,
                                                                      PaymentProcessors paymentProcessor,
                                                                      string maskedNumber,
                                                                      Currencies currency,
                                                                      ApiCaller apiCaller,
                                                                      int agentId)
        {
            return(await Capture()
                   .Tap(WriteAuditLog));

            Task <Result <CreditCardCaptureResult> > Capture()
            {
                return(paymentProcessor switch
                {
                    PaymentProcessors.Payfort => _payfortService.Capture(request),
                    PaymentProcessors.NGenius => _nGeniusPaymentService.Capture(paymentInfo.ExternalId, paymentInfo.InternalReferenceCode, request.Amount.ToMoneyAmount(request.Currency)),
                    _ => throw new NotSupportedException($"Payment processor `{nameof(paymentProcessor)}` not supported")
                });