コード例 #1
0
        /// <summary>
        /// Removes the card in the context for the user in the context from this partner.
        /// </summary>
        /// <returns>
        /// A task that will yield the result code for the operation.
        /// </returns>
        public async Task <ResultCode> RemoveCardAsync()
        {
            ResultCode result = ResultCode.None;

            // Build a account update request object to cancel card registration.
            CustomerAccountField[] customerAccountFieldFields = new CustomerAccountField[1]
            {
                new CustomerAccountField
                {
                    fieldName = MasterCardConstants.AccountStatusCodeFieldName,
                    data      = MasterCardConstants.AccountStatusCanceled
                }
            };

            doCustomerAccountUpdate accountUpdate = new doCustomerAccountUpdate
            {
                sourceId              = MasterCardConstants.SourceId,
                bankCustomerNumber    = ((User)Context[Key.User]).GetPartnerUserId(Partner.MasterCard),
                customerAccountFields = customerAccountFieldFields
            };
            doCustomerAccountUpdateRequest accountUpdateRequest = new doCustomerAccountUpdateRequest
            {
                doCustomerAccountUpdate = accountUpdate
            };

            LogRemoveCardRequestParameters(accountUpdateRequest);

            // Invoke the partner to remove the card.
            result = await PartnerUtilities.InvokePartner(Context, async() =>
            {
                Context.Log.Verbose("Invoking partner RemoveCardAsync API.");
                CustomerAccountUpdateResp response = await MasterCardInvoker.RemoveCard(accountUpdate).ConfigureAwait(false);
                Context.Log.Verbose("Partner RemoveCardAsync API returned: {0}: {1}.", response.returnCode, response.returnMsg);
                LogUpdateCardResponseParameters(response);

                // Determine the ResultCode from the response code.
                switch (response.returnCode)
                {
                case MasterCardResponseCode.Success:
                case MasterCardResponseCode.InvalidCard:
                    result = ResultCode.Success;
                    break;

                case MasterCardResponseCode.UnknownError:
                    result = ResultCode.UnknownError;
                    break;
                }

                // Log a warning if result was not a success.
                if (result != ResultCode.Success)
                {
                    Context.Log.Warning("MasterCard call failed. returnCode: {0}. returnMsg: {1}.",
                                        (int)DefaultLogEntryEventId.PartnerErrorWarning, response.returnCode, response.returnMsg);
                }

                return(result);
            }).ConfigureAwait(false);

            return(result);
        }
コード例 #2
0
        /// <summary>
        /// Logs the register card response parameters received from MasterCard.
        /// </summary>
        /// <param name="response">
        /// The response whose parameters to log.
        /// </param>
        private void LogUpdateCardResponseParameters(CustomerAccountUpdateResp response)
        {
            StringBuilder parameters = new StringBuilder("returnCode: ");

            parameters.Append(response.returnCode);
            parameters.Append("\r\n");
            parameters.Append("returnMsg: ");
            parameters.Append(response.returnMsg);
            parameters.Append("\r\n");
            Context.Log.Verbose("MasterCard Remove Card request parameters:\r\n{0}", parameters.ToString());
        }