public void TestSimplePayment()
        {
            var payment = new SimplePayment();
            payment.ParentId = _testParentId;
            //payment.Nonce = "fake-valid-nonce";
            payment.Amount = 1000.5M;
            //string token = _paymentManager.GetClientToken(_testParentId.ToString());

            MakePaymentResultSM ret = _paymentManager.MakeSimplePayment(payment);

            Assert.IsTrue(ret.IsSuccess);
        }
        public MakePaymentResultSM MakeSimplePayment(SimplePayment sm)
        {
            var result = new MakePaymentResultSM();

            Customer cust = FindCustomer(sm.ParentId.ToString());
            if (cust == null)
            {
                result.IsSuccess = false;
                result.Error = "Customer not found " + sm.ParentId;
                return result;
            }
            if (cust.DefaultPaymentMethod == null || cust.DefaultPaymentMethod.Token == null)
            {
                result.IsSuccess = false;
                result.Error = "Customer default payment method not found ";
                return result;
            }

            var request = new TransactionRequest
            {
                Amount = sm.Amount,
                PaymentMethodToken = cust.DefaultPaymentMethod.Token,
                CustomerId = sm.ParentId.ToString(),
                Channel = LogicConstants.braintreeChannel,
            };

            Result<Transaction> saleResult = _gateway.Transaction.Sale(request);

            if (saleResult.IsSuccess())
            {
                result.IsSuccess = true;
            }
            else
            {
                if (saleResult.Errors != null && saleResult.Errors.All().Count > 0)
                {
                    result.Error = string.Join("~~", saleResult.Errors.All().Select(m => m.Message));
                }
            }

            return result;
        }