示例#1
0
        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);
        }