Запрос API Paypal с MVC3

. Я чертовски потратил время на сортировку документации PayPal , так как все это относится к ASP, но не к MVC (включая их удобные в других отношениях Мастер интеграции). Я видел часто ссылающееся руководство Рика Страла , но оно также предназначено для ASP, и у меня нет опыта работы с Webforms для перевода в MVC.

Я застрял в одной части, и беспокоюсь о безопасности другой.

Во-первых: как вы на самом деле отправляете запрос в API PayPal? В документации указано использовать форму с вашим паролем.

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

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

РЕДАКТИРОВАТЬ Для тех, кто пришел искать, вот как я в конечном итоге отправил первоначальный запрос (сжал код в один блок для удобства чтения)

public static string GetResponse(RequestContext context, decimal price)
    {
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://api-3t.sandbox.paypal.com/nvp");
        //HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://api-3t.sandbox.paypal.com/nvp");

        request.Method = "POST";

        UrlHelper url = new UrlHelper(context);
        string urlBase = string.Format("{0}://{1}", context.HttpContext.Request.Url.Scheme, context.HttpContext.Request.Url.Authority);

        string formContent =  "USER=" + System.Configuration.ConfigurationManager.AppSettings["paypalUser"] +
                "&PWD=" + System.Configuration.ConfigurationManager.AppSettings["paypalPassword"] +
                "&SIGNATURE=" + System.Configuration.ConfigurationManager.AppSettings["paypalSignature"] +
                "&VERSION=84.0" +
                "&PAYMENTREQUEST_0_PAYMENTACTION=Sale" +
                "&PAYMENTREQUEST_0_AMT=" + String.Format("{0:0.00}", price) +
                "&RETURNURL=" + urlBase + url.Action("Confirm", "Checkout") +
                "&CANCELURL=" + urlBase + url.Action("Canceled", "Checkout") +
                "&METHOD=SetExpressCheckout"; 

        byte[] byteArray = Encoding.UTF8.GetBytes(formContent);
        request.ContentType = "application/x-www-form-urlencoded";
        request.ContentLength = byteArray.Length;
        Stream dataStream = request.GetRequestStream();
        dataStream.Write(byteArray, 0, byteArray.Length);
        dataStream.Close();
        WebResponse response = request.GetResponse();
        dataStream = response.GetResponseStream();
        StreamReader reader = new StreamReader(dataStream);
        string responseFromServer = HttpUtility.UrlDecode(reader.ReadToEnd());

        reader.Close();
        dataStream.Close();
        response.Close();

        return responseFromServer;
    }

5
задан Kyeotic-StopHarmingMonica 13 December 2011 в 00:19
поделиться