当前位置:首页 > Asp.Net网站在线支付:提交xml数据

Asp.Net网站在线支付:提交xml数据

点击次数:1215  更新日期:2010-12-31
\n

工作需要,做美国的在线支付系统,有两种模式,一种是PayPal支付,另一种是信用卡支付。PayPal支付将支付的表单数据提交到指定的IPN,由IPN处理并提供相应的页面,信用卡支付包括单个支付和包月的支付,包月支付既每个月自动的从账户上划钱,如果用户不取消,将一直支付下去。


\n

这两种支付,都有测试环境,在测试环境上调通了,正式环境就可走通,具体的测试环境可自行上网查找。


\n

两种的支付的关键就是如何向指定的网关提交数据,并接收网关返回的数据,提交的数据一种是表单,一种是xml,用到了一个很实用的方法,如下:


\n

PostXML
private string PostXml(string url, string strPost)
{
string result = “”;


\n

StreamWriter myWriter = null;


\n

HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(url);
objRequest.Method = “POST”;
objRequest.ContentLength = strPost.Length;
objRequest.ContentType = “text/xml”;//提交xml
//objRequest.ContentType = “application/x-www-form-urlencoded”;//提交表单
try
{
myWriter = new StreamWriter(objRequest.GetRequestStream());
myWriter.Write(strPost);
}
catch (Exception e)
{
return e.Message;
}
finally
{
myWriter.Close();
}


\n

HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse();
using (StreamReader sr = new StreamReader(objResponse.GetResponseStream()))
{
result = sr.ReadToEnd();
sr.Close();
}
return result;
}


\n


\n

传递网关url和指定参数的字符串,就能将信息提交到网关,并返回结果信息。返回的结果,有的是字符串列表,按指定的字符截开,有的是返回一个特定的xml,,这里介绍一个在xml中,输入开始标记和结束标记就可以获取文本的方法,如下:


\n


\n

//write by :suhanyu
private string PraseResponseXml(string conents, string start, string end)
{
if (conents.IndexOf(start) == 0 || conents.IndexOf(end) == 0)
{
return “”;
}
else
{
int start_position = conents.IndexOf(start) + start.Length;
int end_position = conents.IndexOf(end);


\n

if (start_position != -1 && end_position != -1)
{


\n

return conents.Substring(start_position, end_position – start_position);
}
else
{
return “”;
}
}
}


\n


\n

调用:


\n


\n

string refId = this.PraseResponseXml(xmlcode, “<refId>”, “</refId>”);
//xmlcode为xml格式的字符串


\n

做过该方面的再复习下,没做过的学习下 。。。呵呵。。。


\n

来源:http://www.cnblogs.com/shyblog

\n