/// <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"); } if (request.TenderLine.Amount <= 0) { throw new PaymentException(PaymentErrors.Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest, "Only positive amount can be paid by credit memo."); } if (string.IsNullOrWhiteSpace(request.TenderLine.CreditMemoId)) { throw new PaymentException(PaymentErrors.Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest, "Credit memo identifier is not specified."); } var payCreditMemoRealtimeRequest = new PayCreditMemoRealtimeRequest( request.TenderLine.CreditMemoId, request.RequestContext.GetPrincipal().ChannelId.ToString(CultureInfo.InvariantCulture), request.RequestContext.GetPrincipal().TerminalId.ToString(CultureInfo.InvariantCulture), request.RequestContext.GetPrincipal().UserId, request.Transaction.Id, request.Transaction.ReceiptId, request.TenderLine.Currency, request.TenderLine.Amount); request.RequestContext.Execute <NullResponse>(payCreditMemoRealtimeRequest); request.TenderLine.Status = TenderLineStatus.Committed; request.TenderLine.IsVoidable = false; return(new CapturePaymentServiceResponse(request.TenderLine)); }
/// <summary> /// Pay by credit memo. /// </summary> /// <param name="request">The request.</param> /// <returns>The <see cref="NullResponse"/> response.</returns> private static NullResponse PayCreditMemo(PayCreditMemoRealtimeRequest request) { var transactionClient = new TransactionService.TransactionServiceClient(request.RequestContext); transactionClient.PayCreditMemo(request.CreditMemoId, request.StoreId, request.TerminalId, request.StaffId, request.TransactionId, request.ReceiptId, request.CurrencyCode, request.Amount); return(new NullResponse()); }