如何获取回调消息到我的网站后端

时间:2015-09-03 09:55:45

标签: c# asp.net-mvc web

我正在开发一个asp.net mvc网站, 我正在使用向我发送回电的第三方付款服务 付款批准后到我的网站。 根据他们,他们将服务器发送到服务器。

他们将Json发送到我网站的特定网址www.site.com/callback。

我尝试使用HttpListenrer,但我什么也没收到。

  public class PostListener
{
    Task task;
    public PostListener()
    {
        task = new Task(RunServer);
        task.Start();
    }

    private static async void RunServer()
    {
        var listener = new HttpListener();
        listener.Prefixes.Add("www.site.com/callback");
        listener.Start();

        new Thread(
            () =>
            {
                while (listener.IsListening)
                {
                    var ctx = listener.GetContext();
                    ThreadPool.QueueUserWorkItem((_) => ProcessRequest(ctx));
                }
            }
            ).Start();
    }

    private static void ProcessRequest(HttpListenerContext ctx)
    {

    }
}

但是,在批准付款后,listener.GetContext()不返回任何内容, 我这样做是错误的,需要将代码放在页面的控制器或什么? 我需要使用其他方法吗?

请帮助!

感谢。

2 个答案:

答案 0 :(得分:1)

只需在控制器上创建一个名为:callback

的方法
[HttpGet]
[RouteUrl("callback")]
public ActionResult Callback(){
Return Ok();
}

显然,这是在现场环境中运行,以便他们与您联系。

答案 1 :(得分:0)

回调网址用于在付款流程完成后重定向回您的网站。这是由您的支付网关自己完成的。

他们发送有关交易的一些信息,您可以从他们的帮助教程中获取该信息的格式,并声明一个接受相同参数的操作。现在,无论何时调用您的操作,您都将收到这些参数。我认为没有必要打电话给听众。

public ActionResult Invoices(string JSonString)
{
    //Add System.Web.Script.Serialization namespace on top of the page
    MyModel myModelObject = 
               new JavaScriptSerializer().Deserialize<MyModel>(JSonString);
    //Use myModelObject, save to db, display message
    return View();
}

您应该创建MyModel类,其中包含您希望在JSON数据中接收的属性。