Каковы правильные значения для PayPal secure checkout с корзиной?

#paypal #shopping-cart

#paypal #корзина покупок

Вопрос:

Мне удалось заставить мою корзину покупок нормально работать с PayPal, когда она не зашифрована, но у меня возникли проблемы с внесением обновлений при переходе к зашифрованной форме.

[На данный момент все это использует изолированный сайт]

Я загрузил свои защищенные сертификаты и тому подобное, и шифрование значений, похоже, в порядке.

Моя незашифрованная форма использует _cart в качестве cmd. Используя это, я получаю сообщение об ошибке «Мы обнаружили проблему с этой корзиной покупок. Если проблема не устранена, пожалуйста, свяжитесь с продавцом.».

Итак, поскольку при переходе к зашифрованным платежам «обычная» команда оформления заказа меняется с _xclick на _s-xclick, я в следующий раз попробовал _s-cart в качестве команды. В результате появляется сообщение об ошибке «Вы запросили устаревшую версию PayPal. Эта ошибка часто возникает в результате использования закладок.» Что полезно.

Зашифрованные значения my cart содержат значение cmd _cart, как показано в документации для извлечения из корзины.

Кто-нибудь знает, какими должны быть правильные значения для этого? В документации разработчика PayPal есть образцы для выписок из корзины и для выписок с шифрованием отдельных товаров, но ни одного (насколько мне удалось найти) для выписок с шифрованием корзины.

На данный момент моя зашифрованная форма выглядит следующим образом:

 <form id="Paypal" name="Paypal" action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
    <input type="hidden" name="cmd" value="_s-cart">
    <input type="hidden" name="encrypted" value="@ViewBag.EncryptedBasket" />
    <button type="submit" id="paypal-checkout-button" value="PayPal">Checkout</button>
</form>
  

Мои зашифрованные значения:

 var valuePairs = (new[]
    {
        new KeyValuePair<string, string>("cmd", "_cart"),
        new KeyValuePair<string, string>("upload", "1"),
        new KeyValuePair<string, string>("business", Globals.Settings.PayPal.AccountEmail),
        new KeyValuePair<string, string>("currency_code", Globals.Settings.PayPal.CurrencyCode),
        new KeyValuePair<string, string>("return", returnUrl),
        new KeyValuePair<string, string>("cancel_return", cancelUrl),
        new KeyValuePair<string, string>("cert_id", Globals.Settings.PayPal.CertificateId),
    }).ToList();

for (int i = 0; i < ShoppingCart.Items.Count; i  )
{
    var index = i   1;
    var item = ShoppingCart.Items[i];

    valuePairs.Add(new KeyValuePair<string, string>("amount_"   index, item.Product.FinalUnitPrice.ToString("N2")));
    valuePairs.Add(new KeyValuePair<string, string>("item_name_"   index, item.Product.Title));
    valuePairs.Add(new KeyValuePair<string, string>("item_number_"   index, item.Product.ProductId.ToString()));
    valuePairs.Add(new KeyValuePair<string, string>("quantity_"   index, item.Quantity.ToString()));
}
  

Комментарии:

1. Я бы предложил задать свой вопрос здесь: webapps.stackexchange.com

2. Спасибо за ответ. На самом деле я не пытаюсь использовать веб-приложение, я пишу код, используя API PayPal, поэтому я не уверен, что сайт webapps будет подходящим местом для публикации вопроса.

Ответ №1:

На случай, если кому-то еще интересно, каждый раз, когда вы используете зашифрованные платежи, вам следует использовать команду _s-xclick, затем вы можете зашифровать свои товары с помощью команды _cart и обязательно добавить параметр upload=1 к запросу.