Nel caso qualcuno dovesse mai averne bisogno ho trovato questo:
Link
(Lo riporto perchè il sito ha avuto problemi, non si sa mai)
In my earlier article How to use HttpWebRequest to send POST request to another web server? I explained how you can use utilize System.Net.HttpWebRequest class to send data to another web server. And example I gave was of PayPal payment. This solves the problem that you are able to send the data. But there is another set of problem that it does not solve and that is that you want the user to redirected to that web site along with the data.
In ASP.Net 1.1 and earlier, framrwork did not allow you to have more than one FORM tags in the page. So you had to play the trick of displaying only one FORM tag at a time based on some run time conditions. Now ASP.Net 2.0 has introduced using multiple targets for button or similar control clicks. But this has its drawbacks too. For example if you have more than one FORM tags on your page and you use the new mechanism of choosing target page from button click, then your target web server will be getting muliple sets of data for POST request. For GET request you can embed all the data in Query String. But for POST you are kind of ourt of luck.
This article will dexcribe a technique that makes use of client side javascript along with server side event handling to send data to PayPal site and sending user to that site with it to complete the transaction. Lets say that you gather order data from user for Paypal transaction and user is clicking on a button on your page to pay. This technique involves very simple steps.
- Add a Lieral control on your page. This where we will render the form that we want to send to Paypal site. Add one more Literal control at the bottom of the page where we will render client side javascript to perform POST action.
- In OnClick event handler of the button, create the FORM tag with all the data that you want to POST to PayPal and then set this FORM tag text into the lteral control.
- Create client side javascript that will get the FORM element and call submit method on it.
Following code snippet shows all the steps in action. You can download the project with this article to try it yourself.
codice:
protected void OnBuy(object sender, EventArgs e)
{
ctlPaypalForm.Text = _GetPaypalForm("My Item", "25.99");
String strJS = _GetPayPalPostJS("_xclick");
ctlPostScript.Text = strJS;
}
private String _GetPayPalPostJS(String strFormId)
{
StringBuilder strScript = new StringBuilder();
strScript.Append("<script language='javascript'>");
strScript.Append("var ctlForm = document.forms.namedItem('{0}');");
strScript.Append("ctlForm.submit();");
strScript.Append("</script>");
return String.Format(strScript.ToString(), strFormId);
}
private String _GetPaypalForm(String strItemName, String strPrice)
{
StringBuilder strForm = new StringBuilder();
strForm.Append("<form id=\"_xclick\" name=\"_xclick\" target=\"_blank\"
action=\"https://www.paypal.com/cgi-bin/webscr\" method=\"post\">");
strForm.Append("<input type=\"hidden\" name=\"cmd\" value=\"_cart\">");
strForm.Append("<input type=\"hidden\" name=\"business\" value=\"me@mybiz.com\">");
strForm.Append("<input type=\"hidden\" name=\"item_name\" value=\"{0}\">");
strForm.Append("<input type=\"hidden\" name=\"amount\" value=\"{1}\">");
strForm.Append("<input type=\"image\" src=\"http://www.paypal.com/images/sc-but-01.gif\"
border=\"0\" name=\"submit\" alt=\"Make payments with PayPal!\">");
strForm.Append("<input type=\"hidden\" name=\"add\" value=\"1\">");
strForm.Append("</form>");
return String.Format(strForm.ToString(), strItemName, strPrice);
}