【问题标题】:In Braintree Net How do I generate a PaymentNonce在 Braintree Net 如何生成 PaymentNonce
【发布时间】:2021-01-22 19:43:07
【问题描述】:

我工作的公司有一个旧版 WinForms 应用程序,销售和客户服务部门使用它来帮助客户创建订单,而不是客户在网站上创建订单。我们想将我们的 CC 支付网关转换为 Braintree,但我不知道如何创建一个 Payment Nonce,以便我可以使用 CC 信息创建一种支付方式。有没有人成功地将 Braintree SDK 集成到 WinForms 项目中?

我尝试创建交易请求,但没有 PaymentNonce。我只使用了使用该客户的默认付款方式的客户 ID。如果

  • 有客户
  • 有默认付款方式

但是,如果我想为不存在的客户创建交易,或者客户没有用户提供的信用卡的付款方式,那我就难住了。我不知道如何提供 CC 信息以及在什么对象中传递卡数据(编号、到期日期、CVV),Braintree.CreditCard 对象由于其保护级别而无法访问,所以这不是如何传递它. ????‍♂️

以下是我尝试传递信用卡信息的交易:

  transaction = new TransactionRequest()
            {
                Amount = paymentData.Amount,
                CustomerId = customerId,
                DiscountAmount = paymentData.CouponDiscount + paymentData.DiscAmount,
                ShippingAmount = paymentData.ShipCharge,
                LineItems = lineItems.ToArray(),
                TaxAmount = paymentData.Taxes,
                TaxExempt = paymentData.Taxes == 0 ? true : false,
                BillingAddress = new AddressRequest()
                {
                    Company = address.Company,
                    FirstName = paymentData.FirstName,
                    LastName = paymentData.LastName,
                    Locality = address.City,
                    Region = address.State,
                    PostalCode = address.Zip,
                    StreetAddress = address.Address1,
                    ExtendedAddress = address.Address2,
                    CountryCodeAlpha2 = address.CountryCode
                },
                Options = new TransactionOptionsRequest()
                {
                    SubmitForSettlement = paymentData.TransType == "A" ? false : true
                },
                Braintree.CreditCard = new Braintree.CreditCard()
                {
                    CardholderName = paymentData.AccountName,
                    Cvv = paymentData.CVV,
                    ExpirationMonth = paymentData.ExpMonth,
                    ExpirationYear = paymentData.ExpYear,
                    UniqueNumberIdentifier = paymentData.AccountNumber
                },
            };

            var customFields = new Dictionary<string, string>();
            customFields.Add("cartid", paymentData.IsCart ? paymentData.Id.ToString() : "0");
            customFields.Add("orderid", paymentData.IsCart ? "0" : paymentData.Id.ToString());
            customFields.Add("userid", paymentData.CustId);
            transaction.CustomFields = customFields;
  

            Result<Braintree.Transaction> result = GetGateway().Transaction.Sale(transaction);

【问题讨论】:

    标签: .net winforms braintree


    【解决方案1】:

    要在不使用 DropIn 或托管字段的情况下使用 Braintree SDK 创建信用卡交易,您需要先创建信用卡对象,然后再创建交易。

    //create the credit card
                    var creditCardRequest = new CreditCardRequest
                    {
                        CustomerId = customerId,
                        Number = paymentData.AccountNumber,
                        CardholderName = paymentData.AccountName,
                        ExpirationMonth = paymentData.ExpMonth.ToString("d2"),
                        ExpirationYear = paymentData.ExpYear.ToString(),
                        CVV = paymentData.CVV,
                        Options = new CreditCardOptionsRequest()
                        {
                            FailOnDuplicatePaymentMethod = false,
                            VerifyCard = true
                        },
                    };
                    Result<Braintree.CreditCard> result = GetGateway().CreditCard.Create(creditCardRequest);
                    if (result.IsSuccess())
                        creditCard = result.Target;
    
    
    
    
     transaction = new TransactionRequest()
                    {
                        Amount = paymentData.Amount,
                        CustomerId = customerId,
                        PaymentMethodToken = creditCard.Token,
                        DiscountAmount = paymentData.CouponDiscount + paymentData.DiscAmount,
                        ShippingAmount = paymentData.ShipCharge,
                        LineItems = lineItems.ToArray(),
                        TaxAmount = paymentData.Taxes,
                        TaxExempt = paymentData.Taxes == 0 ? true : false,
                        BillingAddress = new AddressRequest()
                        {
                            Company = address.Company,
                            FirstName = paymentData.FirstName,
                            LastName = paymentData.LastName,
                            Locality = address.City,
                            Region = address.State,
                            PostalCode = address.Zip,
                            StreetAddress = address.Address1,
                            ExtendedAddress = address.Address2,
                            CountryCodeAlpha2 = address.CountryCode
                        },
                        Options = new TransactionOptionsRequest()
                        {
                            SubmitForSettlement = paymentData.TransType == "A" ? false : true
                        },
                        TransactionSource = "moto"
                    };
    
                    var customFields = new Dictionary<string, string>();
                    customFields.Add("cartid", paymentData.IsCart ? paymentData.Id.ToString() : "0");
                    customFields.Add("orderid", paymentData.IsCart ? "0" : paymentData.Id.ToString());
                    customFields.Add("userid", paymentData.CustId);
                    transaction.CustomFields = customFields;
          
    
                    Result<Braintree.Transaction> result = GetGateway().Transaction.Sale(transaction);
                    if (result.IsSuccess())
                    { //do something here}
    

    【讨论】:

      猜你喜欢
      • 2011-10-02
      • 2018-08-09
      • 2022-12-23
      • 2010-09-25
      • 2018-05-20
      • 2018-05-21
      • 1970-01-01
      • 2018-04-27
      • 2016-04-26
      相关资源
      最近更新 更多