/// <summary>
        /// Unmarshaller the response from the service to the response class.
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public override AmazonWebServiceResponse Unmarshall(JsonUnmarshallerContext context)
        {
            DeleteTokenResponse response = new DeleteTokenResponse();


            return(response);
        }
        public async void Run_DeleteTokenTest()
        {
            ShowTestOnTerminal("DeleteToken");

            EnrollRequest setupRequest = new EnrollRequest
            {
                Pan      = "4111111111111111",
                Test     = true,
                Customer = new Customer
                {
                    CustomerRef = "TESTCUSTOMER",
                    FirstName   = "Test",
                    LastName    = "Customer",
                },
            };

            output.WriteLine("Setup request: {0}", setupRequest);

            EnrollResponse setupResponse = await blockchyp.EnrollAsync(setupRequest);

            output.WriteLine("Setup Response: {0}", setupResponse);

            DeleteTokenRequest request = new DeleteTokenRequest
            {
                Token = setupResponse.Token,
            };

            output.WriteLine("Request: {0}", request);

            DeleteTokenResponse response = await blockchyp.DeleteTokenAsync(request);

            output.WriteLine("Response: {0}", response);

            Assert.True(response.Success, "response.Success");
        }
        /// <summary>
        /// Unmarshaller the response from the service to the response class.
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public override AmazonWebServiceResponse Unmarshall(JsonUnmarshallerContext context)
        {
            DeleteTokenResponse response = new DeleteTokenResponse();

            context.Read();
            int targetDepth = context.CurrentDepth;

            while (context.ReadAtDepth(targetDepth))
            {
                if (context.TestExpression("isSuccess", targetDepth))
                {
                    var unmarshaller = BoolUnmarshaller.Instance;
                    response.IsSuccess = unmarshaller.Unmarshall(context);
                    continue;
                }
            }

            return(response);
        }
        public DeleteTokenResponse Delete(Profile profile, string token)
        {
            using (log4net.NDC.Push("Delete::"))
            {
                var merchantId = GetMerchantId(profile);
                var transactionKey = GetTransactionKey(profile);
                var serviceEndPoint = GetServiceEndPoint(profile);
                var request = CreateRequest();
                request.merchantID = merchantId;
                request.merchantReferenceCode = DateTime.Now.Ticks.ToString();

                request.paySubscriptionDeleteService = new PaySubscriptionDeleteService();
                request.paySubscriptionDeleteService.run = "true";

                request.recurringSubscriptionInfo = new RecurringSubscriptionInfo();
                request.recurringSubscriptionInfo.subscriptionID = token;

                var client = GetCybersourceService(serviceEndPoint, merchantId, transactionKey);

                _logger.Info("\r\nrequest:" + request.ToJSON());
                var reply = client.runTransaction(request);
                _logger.Info("\r\nreply:" + reply.ToJSON());

                var response = new DeleteTokenResponse();
                response.Status = true;
                response.ReasonCode = reply.reasonCode;
                if (reply.reasonCode != "100")
                {
                    response.Status = false;
                    response.Message = reply.reasonCode + ". " + Combine(reply.missingField) + Combine(reply.invalidField);
                }
                return response;
            }
        }