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