Получение отклонения (2046: транзакция отклонена) от транзакции Paypal Sandbox - PullRequest
1 голос
/ 31 марта 2020

Я использую Braintree SDK in. NET. Внедрил SDK и следовал документации.

  • Создан аккаунт продавца песочницы
  • Создан личный аккаунт песочницы

Я использую токен доступа для транзакции , Пожалуйста, ознакомьтесь со следующим фрагментом кода:

//--------------------------- Get Token for client ---------------------------

        public PaypalHelper.Paypal_ResponseObj<string> GetPaypalClientToken()
        {
            string PaypalAccessToken = "XXXXXXXXXXXXXXXXXXX";

            if (PaypalAccessToken != null)
            {
                BraintreeGateway gateway = new BraintreeGateway(PaypalAccessToken);

                string clientToken = gateway.ClientToken.Generate();

                return new PaypalHelper.Paypal_ResponseObj<string>()
                {
                    Code = HttpStatusCode.OK,
                    Message = "Payment from paypal successfully initiated.",
                    Response = clientToken
                };
            }
            else
            {
                return new PaypalHelper.Paypal_ResponseObj<string>()
                {
                    Code = HttpStatusCode.Unauthorized,
                    Message = "Unauthorized! Paypal access token is not set or invalid.",
                    Response = null
                };
            }
        }

//--------------------------- Do Paypal transaction ---------------------------

        public PaypalHelper.Paypal_ResponseObj<Result<Transaction>> PayPalTransaction(string Nonce, decimal Amount)
        {
            if (!string.IsNullOrEmpty(Nonce) && !string.IsNullOrWhiteSpace(Nonce) && Amount > 0)
            {
                string PaypalAccessToken = "XXXXXXXXXXXXXXXXXXX";

                if (PaypalAccessToken != null)
                {
                    BraintreeGateway gateway = new BraintreeGateway(PaypalAccessToken);

                    var request = new TransactionRequest
                    {
                        Amount = Amount,
                        PaymentMethodNonce = Nonce,

                        Options = new TransactionOptionsRequest
                        {
                            SubmitForSettlement = true
                        }
                    };

                    var result = gateway.Transaction.Sale(request);
                    if (result.IsSuccess())
                    {
                        if (result.Errors == null && result.Target != null)
                        {
                            return new PaypalHelper.Paypal_ResponseObj<Result<Transaction>>()
                            {
                                Code = HttpStatusCode.OK,
                                Message = "Payment from paypal successfully initiated.",
                                Response = result
                            };
                        }
                        else
                        {
                            return new PaypalHelper.Paypal_ResponseObj<Result<Transaction>>()
                            {
                                Code = HttpStatusCode.Conflict,
                                Message = "Unable to process this request.",
                                Response = result
                            };
                        }
                    }
                    else
                    {
                        return new PaypalHelper.Paypal_ResponseObj<Result<Transaction>>()
                        {
                            Code = HttpStatusCode.Conflict,
                            Message = "Payment unsuccessfull.",
                            Response = result
                        };
                    }
                }
                else
                {
                    return new PaypalHelper.Paypal_ResponseObj<Result<Transaction>>()
                    {
                        Code = HttpStatusCode.Unauthorized,
                        Message = "Un authorized! Paypal access token is not set or invalid.",
                        Response = null
                    };
                }
            }
            else {
                return new PaypalHelper.Paypal_ResponseObj<Result<Transaction>>()
                {
                    Code = HttpStatusCode.BadRequest,
                    Message = "input can't be null!",
                    Response = null
                };
            }
        }

Чтобы подвести итог, у нас есть бизнес-счет PayPal, а также мы создали учетную запись бизнес-продавца Sandbox и личный аккаунт Sandbox для тестирования этого сценария.

  • Пожалуйста, укажите следующую полезную нагрузку, отправляемую в PayPal для транзакции:
{
   "CreditCard":null,
   "Amount":235.0000,
   "DeviceData":null,
   "DeviceSessionId":null,
   "FraudMerchantId":null,
   "Channel":null,
   "OrderId":"SWS-O-RQ-894XX",
   "Recurring":null,
   "TransactionSource":null,
   "MerchantAccountId":"USD",
   "PurchaseOrderNumber":null,
   "Customer":{
      "Id":null,
      "DeviceData":null,
      "CustomerId":null,
      "FirstName":"John",
      "LastName":"Doe",
      "Company":null,
      "Email":"johndoe@swsn.com",
      "Phone":"330459218319",
      "Fax":null,
      "Website":null,
      "PaymentMethodNonce":null,
      "DefaultPaymentMethodToken":null,
      "CustomFields":null,
      "CreditCard":null,
      "UsBankAccount":null,
      "RiskData":null,
      "Options":null
   },
   "Descriptor":null,
   "Industry":null,
   "BillingAddress":null,
   "ShippingAddress":{
      "FirstName":"John",
      "LastName":"Doe",
      "Company":null,
      "StreetAddress":"XX Boulevard Haussmann",
      "ExtendedAddress":null,
      "Locality":"Paris",
      "Region":null,
      "PostalCode":"75008",
      "CountryCodeAlpha2":"FR",
      "CountryCodeAlpha3":null,
      "CountryCodeNumeric":null,
      "CountryName":null
   },
   "PayPalAccount":null,
   "TaxAmount":null,
   "TaxExempt":null,
   "Type":null,
   "CustomFields":{

   },
   "Options":{
      "HoldInEscrow":null,
      "StoreInVault":null,
      "StoreInVaultOnSuccess":null,
      "AddBillingAddressToPaymentMethod":null,
      "StoreShippingAddressInVault":null,
      "SubmitForSettlement":true,
      "VenmoSdkSession":null,
      "PayeeId":null,
      "PayeeEmail":null,
      "SkipAdvancedFraudChecking":null,
      "SkipAvs":null,
      "SkipCvv":null,
      "PayPal":null,
      "ThreeDSecure":null,
      "AmexRewards":null,
      "Venmo":null,
      "CreditCard":null
   },
   "ThreeDSecurePassThru":null,
   "PaymentMethodToken":null,
   "CustomerId":null,
   "ShippingAddressId":null,
   "BillingAddressId":null,
   "VenmoSdkPaymentMethodCode":null,
   "PaymentMethodNonce":"799178b2-1e00-0ac7-6db0-034a9a668b1a",
   "ServiceFeeAmount":null,
   "SharedPaymentMethodToken":null,
   "SharedPaymentMethodNonce":null,
   "SharedCustomerId":null,
   "SharedShippingAddressId":null,
   "SharedBillingAddressId":null,
   "ThreeDSecureToken":null,
   "RiskData":null,
   "DiscountAmount":null,
   "ShippingAmount":null,
   "ShipsFromPostalCode":null,
   "LineItems":null,
   "ExternalVault":null
}
  • Пожалуйста, укажите следующий объект ответа, который мы получаем от PayPal после инициирования транзакции:
{
   "CreditCardVerification":null,
   "Transaction":{
      "Id":"r9b19cwh",
      "AddOns":[

      ],
      "Amount":235,
      "AvsErrorResponseCode":null,
      "AvsPostalCodeResponseCode":"I",
      "AvsStreetAddressResponseCode":"I",
      "BillingAddress":{
         "Id":null,
         "CustomerId":null,
         "FirstName":null,
         "LastName":null,
         "Company":null,
         "StreetAddress":null,
         "ExtendedAddress":null,
         "Locality":null,
         "Region":null,
         "PostalCode":null,
         "CountryCodeAlpha2":null,
         "CountryCodeAlpha3":null,
         "CountryCodeNumeric":null,
         "CountryName":null,
         "CreatedAt":null,
         "UpdatedAt":null
      },
      "Channel":null,
      "CreatedAt":"2020-03-31T19:25:43Z",
      "CreditCard":{
         "Bin":null,
         "CardholderName":null,
         "CardType":{

         },
         "CreatedAt":null,
         "CustomerId":null,
         "IsDefault":null,
         "IsVenmoSdk":false,
         "IsExpired":null,
         "CustomerLocation":{

         },
         "LastFour":null,
         "UniqueNumberIdentifier":null,
         "Subscriptions":[

         ],
         "Token":null,
         "UpdatedAt":null,
         "BillingAddress":{
            "Id":null,
            "CustomerId":null,
            "FirstName":null,
            "LastName":null,
            "Company":null,
            "StreetAddress":null,
            "ExtendedAddress":null,
            "Locality":null,
            "Region":null,
            "PostalCode":null,
            "CountryCodeAlpha2":null,
            "CountryCodeAlpha3":null,
            "CountryCodeNumeric":null,
            "CountryName":null,
            "CreatedAt":null,
            "UpdatedAt":null
         },
         "ExpirationMonth":null,
         "ExpirationYear":null,
         "Prepaid":{

         },
         "Payroll":{

         },
         "Debit":{

         },
         "Commercial":{

         },
         "Healthcare":{

         },
         "DurbinRegulated":{

         },
         "ImageUrl":"https://assets.braintreegateway.com/payment_method_logo/unknown.png?environment=sandbox",
         "Verification":null,
         "AccountType":null,
         "CountryOfIssuance":"Unknown",
         "IssuingBank":"Unknown",
         "ProductId":"Unknown",
         "ExpirationDate":"/",
         "MaskedNumber":"**"
      },
      "CurrencyIsoCode":"USD",
      "CustomerDetails":{
         "Id":null,
         "FirstName":"John",
         "LastName":"Doe",
         "Company":null,
         "Email":"johndoe@swsln.com",
         "Phone":"000459210000",
         "Fax":null,
         "Website":null
      },
      "CvvResponseCode":"I",
      "Descriptor":{
         "Name":null,
         "Phone":null,
         "Url":null
      },
      "Discounts":[

      ],
      "Disputes":[

      ],
      "GatewayRejectionReason":{

      },
      "MerchantAccountId":"USD",
      "OrderId":"SWS-O-RQ-894XX",
      "PlanId":null,
      "ProcessorAuthorizationCode":null,
      "ProcessorResponseType":{

      },
      "ProcessorResponseCode":"2046",
      "ProcessorResponseText":"Declined",
      "ProcessorSettlementResponseCode":null,
      "ProcessorSettlementResponseText":null,
      "AdditionalProcessorResponse":"2046 : TRANSACTION_REFUSED",
      "VoiceReferralNumber":null,
      "PurchaseOrderNumber":null,
      "Recurring":false,
      "RefundedTransactionId":null,
      "RefundIds":[

      ],
      "PartialSettlementTransactionIds":[

      ],
      "AuthorizedTransactionId":null,
      "SettlementBatchId":null,
      "ShippingAddress":{
         "Id":null,
         "CustomerId":null,
         "FirstName":"John",
         "LastName":"Doe",
         "Company":null,
         "StreetAddress":"XX Boulevard XXXX",
         "ExtendedAddress":null,
         "Locality":"Paris",
         "Region":null,
         "PostalCode":"75008",
         "CountryCodeAlpha2":"FR",
         "CountryCodeAlpha3":"FRA",
         "CountryCodeNumeric":"250",
         "CountryName":"France",
         "CreatedAt":null,
         "UpdatedAt":null
      },
      "EscrowStatus":{

      },
      "Status":{

      },
      "StatusHistory":[
         {
            "Amount":235,
            "Status":{

            },
            "Timestamp":"2020-03-31T19:25:48Z",
            "Source":{

            },
            "User":null
         }
      ],
      "AuthorizationAdjustments":[

      ],
      "SubscriptionId":null,
      "SubscriptionDetails":{
         "BillingPeriodEndDate":null,
         "BillingPeriodStartDate":null
      },
      "TaxAmount":null,
      "TaxExempt":false,
      "Type":{

      },
      "UpdatedAt":"2020-03-31T19:25:48Z",
      "CustomFields":{

      },
      "ServiceFeeAmount":null,
      "DisbursementDetails":{
         "SettlementAmount":null,
         "SettlementCurrencyIsoCode":null,
         "SettlementCurrencyExchangeRate":null,
         "FundsHeld":null,
         "Success":null,
         "DisbursementDate":null
      },
      "ApplePayDetails":null,
      "AndroidPayDetails":null,
      "AmexExpressCheckoutDetails":null,
      "PayPalDetails":{
         "PayerEmail":"sb-zkd0t1338940@personal.example.com",
         "PaymentId":null,
         "AuthorizationId":null,
         "Token":null,
         "ImageUrl":"https://assets.braintreegateway.com/payment_method_logo/paypal.png?environment=sandbox",
         "DebugId":"20ac958b09914",
         "PayeeId":null,
         "PayeeEmail":null,
         "CustomField":null,
         "PayerId":null,
         "PayerFirstName":null,
         "PayerLastName":null,
         "PayerStatus":null,
         "SellerProtectionStatus":null,
         "CaptureId":null,
         "RefundId":null,
         "TransactionFeeAmount":null,
         "TransactionFeeCurrencyIsoCode":null,
         "RefundFromTransactionFeeAmount":null,
         "RefundFromTransactionFeeCurrencyIsoCode":null,
         "Description":null
      },
      "LocalPaymentDetails":null,
      "CoinbaseDetails":null,
      "VenmoAccountDetails":null,
      "UsBankAccountDetails":null,
      "IdealPaymentDetails":null,
      "VisaCheckoutCardDetails":null,
      "MasterpassCardDetails":null,
      "SamsungPayCardDetails":null,
      "PaymentInstrumentType":{

      },
      "RiskData":null,
      "ThreeDSecureInfo":null,
      "FacilitatedDetails":null,
      "FacilitatorDetails":null,
      "DiscountAmount":null,
      "ShippingAmount":null,
      "ShipsFromPostalCode":null,
      "NetworkTransactionId":null,
      "AuthorizationExpiresAt":null
   },
   "Subscription":null,
   "Errors":{
      "Count":0,
      "DeepCount":0
   },
   "Parameters":{
      "transaction[amount]":"235.00",
      "transaction[order_id]":"SWS-O-RQ-894XX",
      "transaction[payment_method_nonce]":"799178b2-1e00-0ac7-6db0-034a9a668bXX",
      "transaction[merchant_account_id]":"USD",
      "transaction[type]":"sale",
      "transaction[customer][first_name]":"John",
      "transaction[customer][last_name]":"Doe",
      "transaction[customer][email]":"johndoe@swsln.com",
      "transaction[customer][phone]":"330459218319",
      "transaction[shipping][first_name]":"John",
      "transaction[shipping][last_name]":"Doe",
      "transaction[shipping][street_address]":"63 Boulevard Haussmann",
      "transaction[shipping][locality]":"Paris",
      "transaction[shipping][postal_code]":"75008",
      "transaction[shipping][country_code_alpha2]":"FR",
      "transaction[options][submit_for_settlement]":"true"
   },
   "Message":"Declined",
   "Target":null
}

Кто-нибудь? кто может помочь мне разобраться в этом вопросе Я что-то упускаю?

...