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