ASP.NET使用HttpHandler将数据发布到支付服务

时间:2013-06-13 12:16:29

标签: c# asp.net webforms httphandler payment-processing

我尝试将某些数据发布到付款服务并通过HttpHandler呈现回复。响应是用户填写表格以进行付款。它是一个网络表单应用程序,因此我无法使用多个表单(我知道您可以使用多种表单,但我正在处理的现有代码使其变得困难。我只是有一个链接到在查询字符串中带有订单ID的处理程序。

我甚至不确定我在这里尝试做什么是个好主意,甚至可以解决。如果你有更好的主意,请告诉我。这是我到目前为止的代码:

using System.Net;
using System.Text;
using System.Web;

namespace Web
{
    public class Begin_invoice : IHttpHandler
    {
        public void ProcessRequest(HttpContext context)
        {
            var orderNumber = context.Request.QueryString["invoice-numer"];

            //todo: get some extra data from local service here

            var URI = "https://somepaymetservice/start.action";

            var data = new StringBuilder();

            data.Append("merchant=" + HttpUtility.UrlEncode("666111") + "&");
            data.Append("amount=" + HttpUtility.UrlEncode("1") + "&");
            data.Append("lang=" + HttpUtility.UrlEncode("sv") + "&");
            data.Append("currency=" + HttpUtility.UrlEncode("752") + "&");
            data.Append("orderid=" + HttpUtility.UrlEncode(orderNumber) + "&");
            data.Append("accepturl=" + HttpUtility.UrlEncode("http://localhost:50113/Complete-invoice.ashx") + "&");
            data.Append("test=" + HttpUtility.UrlEncode("1") + "&");

            using (var client = new WebClient())
            {
                client.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
                var response = client.UploadString(URI, data.ToString());

                context.Response.Write(response);
            }
        }

        public bool IsReusable
        {
            get { return false; }
        }
    }
}

显而易见的第一个问题是付款页面的所有资源。资源的网址是相对的,因此无法下载。是否有一些库或其他功能可以处理这个代理的东西,我可以使用一些位置标题或类似的东西吗?所有建议都表示赞赏?

1 个答案:

答案 0 :(得分:0)

最后我被迫重构我的标记以允许页面上有多个表单。一旦完成,DIBS api非常容易使用。