/// <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()); }