我正在开发一个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()不返回任何内容, 我这样做是错误的,需要将代码放在页面的控制器或什么? 我需要使用其他方法吗?
请帮助!
感谢。
答案 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数据中接收的属性。