예제 #1
0
            /// <summary>
            /// Captures the payment.
            /// </summary>
            /// <param name="request">The request.</param>
            /// <returns>A response containing the captured tender line.</returns>
            private static CapturePaymentServiceResponse CapturePayment(CapturePaymentServiceRequest request)
            {
                if (request == null)
                {
                    throw new ArgumentNullException("request");
                }

                var payUsingGiftCardRequest = new PayGiftCardRealtimeRequest(
                    request.TenderLine.GiftCardId,
                    request.TenderLine.AmountInTenderedCurrency, // amount in gift card currency
                    request.TenderLine.Currency,                 // gift card currency code
                    request.RequestContext.GetPrincipal().ChannelId,
                    request.RequestContext.GetTerminal() == null ? string.Empty : request.RequestContext.GetTerminal().TerminalId,
                    request.RequestContext.GetPrincipal().UserId ?? string.Empty,
                    request.Transaction.Id,
                    request.Transaction.ReceiptId ?? string.Empty);

                request.RequestContext.Execute <NullResponse>(payUsingGiftCardRequest);

                // To match ePOS behavior (and not break statement calculation and posting) updating tender
                // line to respresent payment done in channel currency.
                request.TenderLine.Currency = request.RequestContext.GetChannelConfiguration().Currency;
                request.TenderLine.AmountInTenderedCurrency = request.TenderLine.Amount;
                request.TenderLine.ExchangeRate             = 1.0m;
                request.TenderLine.Status     = TenderLineStatus.Committed;
                request.TenderLine.IsVoidable = true;

                return(new CapturePaymentServiceResponse(request.TenderLine));
            }
            /// <summary>
            /// Pay and unlock gift card.
            /// </summary>
            /// <param name="request">The request.</param>
            /// <returns>The <see cref="SingleEntityDataServiceResponse{GiftCard}"/> response.</returns>
            private static NullResponse PayGiftCard(PayGiftCardRealtimeRequest request)
            {
                var     transactionClient = new TransactionService.TransactionServiceClient(request.RequestContext);
                decimal balance;
                string  currencyCode;

                transactionClient.PayGiftCard(
                    request.GiftCardId,
                    request.Amount,
                    request.CurrencyCode,
                    request.ChannelId,
                    request.TerminalId,
                    request.StaffId,
                    request.TransactionId,
                    request.ReceiptId,
                    out currencyCode,
                    out balance);

                return(new NullResponse());
            }