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