Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Реализую платежную систему WebMoney. Проблема в PO 
:(
    Опции темы
OlegSm
Дата 17.3.2009, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 17.3.2009

Репутация: нет
Всего: нет



На ASP.NET сайте реализую платежную систему (для начала для WebMoney, в дальнейшем нужно реализовать и прочие системы платежей).
1. Интересует, есть ли уже готовые решения, чтобы заново не выдумывать велосипед.
2. Как на Ваш взгляд лучше реализовать модульную структуру платежной системы, что бы в дальнейшем было ее легко использовать и в других проектах и добавлять новые необходимые платежные системы.

Пересмотрел кучу примеров, но везде нет НОРМАЛЬНОГО примера работы.

Есть тема Как сделать POST-редирект на чужой сайт, но до конца вопрос не раскрыт.

Нашел простейший образец на C#: BetaVersion.zip
Думаю довести его до ума, пока сделал так:

В ASPX-файле задаются необходимые параметры:

Код

<body>
    <form id="paymentForm" runat="server">
        <div>
            <br />
            <br />
            <asp:Button ID="GoButton" runat="server" Text="Далее..." PostBackUrl="https://merchant.webmoney.ru/lmi/payment.asp" OnClick="GoButton_Click" />
        </div>
        <asp:HiddenField ID="LMI_PAYEE_PURSE" runat="server" Value="Z395054510253" />
        <asp:HiddenField ID="LMI_PAYMENT_AMOUNT" runat="server" Value="99" />        
        <asp:HiddenField ID="LMI_PAYMENT_NO" runat="server" />
        <asp:HiddenField ID="LMI_PAYMENT_DESC" runat="server" Value="Описание товара или услуги." />
        <asp:HiddenField ID="LMI_SIM_MODE" runat="server" Value="" Visible="False" />
        <asp:HiddenField ID="LMI_RESULT_URL" runat="server" Value="" Visible="False" />
        <asp:HiddenField ID="LMI_SUCCESS_URL" runat="server" Value="" Visible="False" />
        <asp:HiddenField ID="LMI_SUCCESS_METHOD" runat="server" Value="" Visible="False" />
        <asp:HiddenField ID="LMI_FAIL_URL" runat="server" Value="" Visible="False" />
        <asp:HiddenField ID="LMI_FAIL_METHOD" runat="server" Value="" Visible="False" />
        <asp:HiddenField ID="LMI_PAYMENT_CREDITDAYS" runat="server" Value="" Visible="False" />
    </form>
</body>


CS-файл:

Код

using System;

public partial class _Default : System.Web.UI.Page 
{
    protected void GoButton_Click(object sender, EventArgs e)
    {
        // LMI_PAYMENT_AMOUNT.Value = "ЗНАЧЕНИЕ";
    }
}


Все конечно работает, НО! Мне нужно присваивать значения для HiddenField в CS-файле.
Что-то вроде 
Код

LMI_PAYMENT_AMOUNT.Value = "ЗНАЧЕНИЕ";

Вообще хорошо бы сделать ВСЮ передачу POST-запроса на сервер WebMoney в CS-файле.
Пока нашел только такой пример кода (не работает как надо) Непонятки с отправкой POST-запроса из кода

Код

public partial class WebMoney : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e) { }

    protected void Button1_Click(object sender, EventArgs e)
    {
        WebRequest request = WebRequest.Create("https://merchant.webmoney.ru/lmi/payment.asp");
        request.Method = "POST";
        string postData = "LMI_PAYMENT_AMOUNT=8&LMI_PAYMENT_DESC=Payment&LMI_PAYMENT_NO=1234&LMI_PAYEE_PURSE=R304157537283&LMI_SIM_MODE=0";
        byte[] byteArray = Encoding.UTF8.GetBytes(postData);
        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();
        Response.Write(((HttpWebResponse)response).StatusDescription);
        dataStream = response.GetResponseStream();
        StreamReader reader = new StreamReader(dataStream);
        string responseFromServer = reader.ReadToEnd();
        Response.Write(responseFromServer);
        reader.Close();
        dataStream.Close();
        response.Close();
    }
}


Хотелось бы уже разобраться с платежными системами ребята, и сделать нормальный модуль для работы с ними, не один я наткнулся на эту проблему. Спасибо заранее за помощь!

PM MAIL   Вверх
OlegSm
Дата 23.3.2009, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 17.3.2009

Репутация: нет
Всего: нет



Ребята, помогите пожалуйста разобраться! 
Необходимо серверным методом создать форму, заполнить ее полями/значениями и отправить от лица клиента на удаленный сайт по методу POST.


Это сообщение отредактировал(а) OlegSm - 23.3.2009, 11:02
PM MAIL   Вверх
OlegSm
Дата 23.3.2009, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 17.3.2009

Репутация: нет
Всего: нет



Со скрытыми полями пока не получаеться, попробовал сделать так:

Код

public partial class PaymentSystems_WebMoney_Payment : System.Web.UI.Page
{
    protected string LMI_PAYEE_PURSE = "Z616776332783";
    protected string LMI_PAYMENT_AMOUNT = "55";
    protected string LMI_PAYMENT_DESC = "Tickets";

    protected void Page_Load(object sender, EventArgs e)
    {
        AmountLabel.Text += LMI_PAYMENT_AMOUNT;
        PurseLabel.Text += LMI_PAYEE_PURSE;
        GoodsLabel.Text += LMI_PAYMENT_DESC;
    }

    protected void GoButton_Click(object sender, EventArgs e)
    {
        string sUrl = "&LMI_PAYEE_PURSE={0}?LMI_PAYMENT_AMOUNT={1}?LMI_PAYMENT_DESC={2}";
        string newString = string.Format(sUrl, LMI_PAYEE_PURSE, LMI_PAYMENT_AMOUNT, LMI_PAYMENT_DESC);
        HTTPClient client = new HTTPClient();
        HttpWebResponse httpWebResponse = client.Request_Post("https://merchant.webmoney.ru/lmi/payment.asp", newString);
    }
}

public class HTTPClient
{
    public HTTPClient()
    {

    }

    public HttpWebResponse Request_Post(string path, string post_body)
    {
        try
        {
            HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(path);
            httpWebRequest.AllowAutoRedirect = false; // ставим false, чтобы при получении кода 302 не делать автоматический редирект
            httpWebRequest.Method = "POST";
            httpWebRequest.ContentType = "application/x-www-form-urlencoded";
            byte[] ByteQuery = System.Text.Encoding.UTF8.GetBytes(post_body); // параметры, которые будем отправлять по адресу отправки
            httpWebRequest.ContentLength = ByteQuery.Length;
            Stream QueryStream = httpWebRequest.GetRequestStream(); // получаем поток строки запроса
            QueryStream.Write(ByteQuery, 0, ByteQuery.Length); // записываем в нее параметры
            QueryStream.Close();
            HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse(); // отправляем запрос
            return httpWebResponse;
        }
        catch (WebException ex)
        {
            return ex.Response as HttpWebResponse;
        }
    }
}


Ошибки не выдает, но редирект не работает почему-то.

PM MAIL   Вверх
arilou
Дата 27.3.2009, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 6
Всего: 61



http://www.jigar.net/howdoi/viewhtmlcontent106.aspx

google: form post using HttpWebRequest


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0426 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.