Каковы правильные значения для безопасной оплаты PayPal с корзиной? - PullRequest
0 голосов
/ 05 апреля 2011

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

[Это все с сайта песочницына данный момент]

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

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

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

Зашифрованные значения моей корзины содержат значение 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 Ответ

0 голосов
/ 18 марта 2012

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

...