C # ASP.NET MVC Bad Request (400) при создании платежа - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь внедрить Paypal SDK в свой проект ASP.NET MVC, но у меня возникает проблема, когда я пытаюсь создать платеж, всегда возникает следующее исключение: PayPal.PaymentsException: «Ошибка на удаленном сервере: (400) неверный запрос» .

Это метод создания платежа Paypal. Я пытался кодировать разные версии, но всегда получал это исключение в методе payment.Create (apiContext).

Вот код, метод, который вызывает исключение, находится внизу:

private Payment CreatePayment(APIContext apiContext, string redirectUrl)
    {
        var listItems = new ItemList() { items = new List<Item>() };
        List<CartItem> cart = (List<CartItem>)Session["cart"];

        foreach (var cartItem in cart)
        {
            listItems.items.Add(new Item()
            {
                name = cartItem.Stock.articulo.Nombre,
                currency = "EUR",
                price = cartItem.PrecioTotalArticulo.ToString(),
                quantity = cartItem.Cantidad.ToString(),
                sku = "sku"
            });
        }

        var payer = new Payer() { payment_method = "paypal" };

        var redirUrls = new RedirectUrls()
        {
            cancel_url = redirectUrl,
            return_url = redirectUrl
        };

        var subtotalCompra = cart.Sum(i => i.PrecioTotalArticulo);
        var gastosEnvio = configuracionService.CalcularGastosEnvio(subtotalCompra);

        var details = new Details()
        {
            tax = (0.21 * subtotalCompra).ToString(),
            shipping = gastosEnvio.ToString(),
            subtotal = subtotalCompra.ToString()
        };

        var amount = new Amount()
        {
            currency = "EUR",
            total = (Convert.ToDouble(details.tax) + subtotalCompra + gastosEnvio).ToString(),
            details = details
        };

        var transactionList = new List<Transaction>();
        transactionList.Add(new Transaction()
        {
            description = "Paypal Testing",
            invoice_number = ventaService.GenerarNumFactura(),
            amount = amount,
            item_list = listItems
        });

        payment = new Payment()
        {
            intent = "sale",
            payer = payer,
            transactions = transactionList,
            redirect_urls = redirUrls
        };

        return payment.Create(apiContext);
    }

А вот класс Configuration, где я определяю APIContext:

public class PaypalConfiguration
{
    public readonly static string ClientId;
    public readonly static string ClientSecret;

    static PaypalConfiguration()
    {
        var config = GetConfig();
        ClientId = config["clientId"];
        ClientSecret = config["clientSecret"];
    }

    public static Dictionary<string, string> GetConfig()
    {
        return PayPal.Api.ConfigManager.Instance.GetProperties();
    }

    private static string GetAccessToken()
    {
        string accessToken = new OAuthTokenCredential(ClientId, ClientSecret, GetConfig()).GetAccessToken();
        return accessToken;
    }

    public static APIContext GetAPIContext()
    {
        var apiContext = new APIContext(GetAccessToken());
        apiContext.Config = GetConfig();
        return apiContext;
    }
}

Я пытаюсь найти разные решения или связанные проблемы, но ничего не нашел. Спасибо за помощь.

...