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); }
/// <summary> /// Enroll new user to Visa /// </summary> /// <returns></returns> private async Task <ResultCode> CreateEnrollment(string userKey) { ResultCode result = ResultCode.None; var newCardNumber = ((NewCardInfo)Context[Key.NewCardInfo]).Number; var lastFourOfNewCard = newCardNumber.Substring(12); // Build a card register request object. var request = VisaRtmDataManager.GetCreateEnrollmentRequest( community: VisaConstants.CommunityName, userkey: userKey, cardnumbers: new List <string> { newCardNumber } ); LogRequest("CreateEnrollment", request, newCardNumber, lastFourOfNewCard); // Invoke the partner to add the card. result = await PartnerUtilities.InvokePartner(Context, async() => { var response = await VisaInvoker.CreateEnrollment(request).ConfigureAwait(false); LogRequestResponse("CreateEnrollment", request, response, response.Success, newCardNumber, lastFourOfNewCard); result = ResultCode.UnknownError; if (response.Success) { result = ResultCode.Created; } else if (response.HasError()) { result = visaErrorUtility.GetResultCode(response, null); } if (result == ResultCode.Created) { PartnerCardInfo partnerCardInfo = GetVisaCardInfo((Card)Context[Key.Card]); partnerCardInfo.PartnerCardId = response.EnrollmentRecord.CardDetails[0].CardId.ToString(); partnerCardInfo.PartnerCardSuffix = "00"; var partnerUserId = response.EnrollmentRecord.UserProfileId; User user = (User)Context[Key.User]; user.AddOrUpdatePartnerUserId(Partner.Visa, partnerUserId.ToString(), true); //add partner user information to the database var userOperations = CommerceOperationsFactory.UserOperations(Context); userOperations.AddOrUpdateUser(); } return(result); }, null, Partner.None, true).ConfigureAwait(false); return(result); }
/// <summary> /// Add a card to Visa /// </summary> /// <param name="userkey"></param> /// <returns></returns> private async Task <ResultCode> SaveCardAsync(string userkey) { ResultCode result = ResultCode.None; var newCardNumber = ((NewCardInfo)Context[Key.NewCardInfo]).Number; var lastFourOfNewCard = newCardNumber.Substring(12); // Build a card register request object. var request = VisaRtmDataManager.GetSaveCardRequest(userkey, VisaConstants.CommunityName, newCardNumber); LogRequest("AddCard", request, newCardNumber, lastFourOfNewCard); // Invoke the partner to add the card. result = await PartnerUtilities.InvokePartner(Context, async() => { var response = await VisaInvoker.AddCard(request).ConfigureAwait(false); LogRequestResponse("AddCard", request, response, response.Success, newCardNumber, lastFourOfNewCard); result = ResultCode.UnknownError; if (response.Success) { result = ResultCode.Created; } else if (response.HasError()) { result = visaErrorUtility.GetResultCode(response, null); } if (result == ResultCode.Created) { PartnerCardInfo partnerCardInfo = GetVisaCardInfo((Card)Context[Key.Card]); partnerCardInfo.PartnerCardId = response.CardInfoResponse.CardId.ToString(); partnerCardInfo.PartnerCardSuffix = "00"; } return(result); }, null, Partner.None, true).ConfigureAwait(false); return(result); }
/// <summary> /// Remove a card from Visa /// </summary> /// <returns></returns> public async Task <ResultCode> RemoveCardAsync() { ResultCode result = ResultCode.None; var card = (Card)Context[Key.Card]; var partnerCardId = card.PartnerCardInfoList.Where(p => p.PartnerId == Partner.Visa).Select(p => p.PartnerCardId).First(); // Build a card register request object. var request = VisaRtmDataManager.GetDeleteCardRequest(GetVisaExternalUserId(), VisaConstants.CommunityName, partnerCardId); LogRequest("RemoveCard", request); // Invoke the partner to add the card. result = await PartnerUtilities.InvokePartner(Context, async() => { var response = await VisaInvoker.RemoveCard(request); LogRequestResponse("RemoveCard", request, response, response.Success); // Determine the ResultCode from the response code. result = response.Success ? ResultCode.Success : ResultCode.UnknownError; return(result); }, null, Partner.None, true).ConfigureAwait(false); return(result); }
/// <summary> /// Retrieves the Visa External User Id. This is userId in Commerce system which Visa treats as External User Id /// </summary> /// <returns> /// The Visa Partner User Id. /// </returns> private string GetVisaExternalUserId() { return(VisaInvoker.GenerateExternalUserId((User)Context[Key.User])); }