类型'Braintree.Exceptions.AuthenticationException'的异常和私钥被视为“PrivateKey”

时间:2017-05-17 13:31:20

标签: c# asp.net-mvc-5 braintree

查看控制器

public class CheckoutsController : Controller
{



    public IBraintreeConfiguration config = new BraintreeConfiguration();

    public static readonly TransactionStatus[] transactionSuccessStatuses = {
                                                                                TransactionStatus.AUTHORIZED,
                                                                                TransactionStatus.AUTHORIZING,
                                                                                TransactionStatus.SETTLED,
                                                                                TransactionStatus.SETTLING,
                                                                                TransactionStatus.SETTLEMENT_CONFIRMED,
                                                                                TransactionStatus.SETTLEMENT_PENDING,
                                                                                TransactionStatus.SUBMITTED_FOR_SETTLEMENT
                                                                            };

    public ActionResult New()
    {
        var gateway = config.GetGateway();

这是触发错误的行('Braintree.Exceptions.AuthenticationException')

 var clientToken = gateway.ClientToken.generate();
        ViewBag.ClientToken = clientToken;
        return View();
    }

    public ActionResult Create()
    {
        var gateway = config.GetGateway();
        Decimal amount;

        try
        {
            amount = Convert.ToDecimal(Request["amount"]);
        }
        catch (FormatException e)
        {
            TempData["Flash"] = "Error: 81503: Amount is an invalid format.";
            return RedirectToAction("New");
        }

        var nonce = Request["payment_method_nonce"];
        var request = new TransactionRequest
        {
            Amount = amount,
            PaymentMethodNonce = nonce,
            Options = new TransactionOptionsRequest
            {
                SubmitForSettlement = true
            }
        };

        Result<Transaction> result = gateway.Transaction.Sale(request);
        if (result.IsSuccess())
        {
            Transaction transaction = result.Target;
            return RedirectToAction("Show", new { id = transaction.Id });
        }
        else if (result.Transaction != null)
        {
            return RedirectToAction("Show", new { id = result.Transaction.Id });
        }
        else
        {
            string errorMessages = "";
            foreach (ValidationError error in result.Errors.DeepAll())
            {
                errorMessages += "Error: " + (int)error.Code + " - " + error.Message + "\n";
            }
            TempData["Flash"] = errorMessages;
            return RedirectToAction("New");
        }

    }

    public ActionResult Show(String id)
    {
        var gateway = config.GetGateway();
        Transaction transaction = gateway.Transaction.Find(id);

        if (transactionSuccessStatuses.Contains(transaction.Status))
        {
            TempData["header"] = "Sweet Success!";
            TempData["icon"] = "success";
            TempData["message"] = "Your test transaction has been successfully processed. See the Braintree API response and try again.";
        }
        else
        {
            TempData["header"] = "Transaction Failed";
            TempData["icon"] = "fail";
            TempData["message"] = "Your test transaction has a status of " + transaction.Status + ". See the Braintree API response and try again.";
        };

        ViewBag.Transaction = transaction;
        return View();
    }
}

BrainTree配置

 public class BraintreeConfiguration : IBraintreeConfiguration
{
    public string Environment { get; set; }
    public string MerchantId { get; set; }
    public string PublicKey { get; set; }
    public string PrivateKey { get; set; }
    private IBraintreeGateway BraintreeGateway { get; set; }

    public IBraintreeGateway CreateGateway()
    {
        Environment = System.Environment.GetEnvironmentVariable("BraintreeEnvironment");
        MerchantId = System.Environment.GetEnvironmentVariable("BraintreeMerchantId");
        PublicKey = System.Environment.GetEnvironmentVariable("BraintreePublicKey");
        PrivateKey = System.Environment.GetEnvironmentVariable("BraintreePrivateKey");

        if (MerchantId == null || PublicKey == null || PrivateKey == null)
        {
            Environment = GetConfigurationSetting("BraintreeEnvironment");
            MerchantId = GetConfigurationSetting("BraintreeMerchantId");
            PublicKey = GetConfigurationSetting("BraintreePublicKey");
            PrivateKey = GetConfigurationSetting("BraintreePrivateKey");

        }

        return new BraintreeGateway(Environment, MerchantId, PublicKey, PrivateKey);
    }

    public string GetConfigurationSetting(string setting)
    {
        //watch this
        MerchantId = "**************";
        PublicKey = "***************";

正在为商家ID和公钥分配正确的值,但私钥被指定为“PrivateKey”

        PrivateKey = "*************************";
        return ConfigurationManager.AppSettings[setting];
    }

    public IBraintreeGateway GetGateway()
    {
        if (BraintreeGateway == null)
        {
            BraintreeGateway = CreateGateway();
        }

        return BraintreeGateway;
    }
}

0 个答案:

没有答案