public async Task <ResultCode> SaveStatementCreditAsync() { var result = ResultCode.None; var cardId = (string)Context[Key.CardToken]; var creditAmount = (float)((int)Context[Key.DealDiscountAmount] / 100.0); var transactionId = (string)Context[Key.Transaction]; var transactionSettlementDate = (DateTime)Context[Key.TransactionSettlementDate]; var partnerUserId = (string)Context[Key.PartnerUserId]; var request = VisaRtmDataManager.GetSaveStatementCreditAsync(cardId, creditAmount, transactionId, transactionSettlementDate, partnerUserId, VisaConstants.CommunityCodeClLevel); LogRequest("SaveStatementCreditAsync", request); result = await PartnerUtilities.InvokePartner(Context, async() => { var response = await VisaInvoker.SaveStatementCreditAsync(request).ConfigureAwait(false); LogRequestResponse("SaveStatementCreditAsync", request, response, response.StatementCreditSubmitStatus); result = ResultCode.UnknownError; if (response.StatementCreditSubmitStatus) { result = ResultCode.Created; } else if (response.HasError()) { //TODO: once we are ready to log these error messages in Db - map the error returned by Visa //into our error codes and log in Db result = visaErrorUtility.GetResultCode(response, null); } return(result); }, null, Partner.None, true).ConfigureAwait(false); return(result); }