Генерация POST-запроса для кнопки PayPal в C # ASP.net - PullRequest
2 голосов
/ 06 января 2010

Я пытаюсь разрешить веб-форме использовать PayPal прямо сейчас. Соответствующая страница здесь.

В зависимости от того, какую радио-кнопку выбирает пользователь, зависит от того, на какую кнопку PayPal они «перенаправлены». Подписки просты - они просто редирект.

Последний вариант, требует от пользователя выбрать место проведения. Для этого мне необходимо использовать форму ниже:

<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="10956105">
<table>
<tr><td><input type="hidden" name="on0" value="Venue">Venue</td></tr><tr><td>
<input type="text" name="os0" maxlength="60"></td></tr>
</table>
<input type="image" src="https://www.paypal.com/en_US/GB/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online.">
<img alt="" border="0" src="https://www.paypal.com/en_GB/i/scr/pixel.gif" width="1" height="1">
</form>

Но, конечно, я хочу сделать это без использования этой формы.

То, что у меня есть, это:

 if (singleOneOff.Checked)
            {
                paypalForm.Text = getPaypalForm(venueSelect.SelectedItem.Text);
                var strJS = getPayPalPostJS("_xclick");
                paypalJs.Text = strJS;
                var xxx = "dd";
            }

Определяет, был ли отмечен этот переключатель.

getPaypalForm

private String getPaypalForm(string venue)
{
    StringBuilder strForm = new StringBuilder();
    strForm.Append(@"<form action=""https://www.paypal.com/cgi-bin/webscr"" name=""_xclick"" method=""post"">");
    strForm.Append(@"<input type=""hidden"" name=""cmd"" value=""_s-xclick"">");
    strForm.Append(@"<input type=""hidden"" name=""hosted_button_id"" value=""10956105"">");
    strForm.Append(@"<input type=""hidden"" name=""on0"" value=""Venue"">");
    strForm.Append(@"<input type=""text"" name=""os0"" value=""{0}"" maxlength=""60"">");
    strForm.Append("</form>");

    return String.Format(strForm.ToString(), venue);
}

getPayPalPostJS

private String getPayPalPostJS(string strFormId)
{
    StringBuilder strScript = new StringBuilder();
    strScript.Append("<script language='javascript'>");
    strScript.Append("var paypalForm = document.forms.namedItem('{0}');");
    strScript.Append("paypalForm.submit();");
    strScript.Append("</script>");
    return String.Format(strScript.ToString(), strFormId);
}

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

Есть идеи, где я ошибся?

Я следовал этому руководству: http://www.netomatix.com/development/postrequestform.aspx

Ответы [ 2 ]

2 голосов
/ 06 января 2010

Корень проблемы в том, что веб-формы ASP.Net обертывают все на странице в один большой тег <form>. Ваш PayPal код отображает вложенную форму, и это не работает.

Прочтите этот вопрос для получения дополнительной информации .

2 голосов
/ 06 января 2010

Вот гораздо более чистое решение на стороне сервера для решения одной формы ASP.NET/PayPal:

http://codersbarn.com/post/2008/03/08/Solution-to-ASPNET-Form-PayPal-Problem.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...