首先我们会在配置支付请求参数的时候,配置了回调地址(notify_url),支付完成微信服务器就会将结果推送到这个地址上,我们只是需要获取那些数据就可以了,然后根据处理相关业务。
后台代码:
/// <summary> /// 微信服务器支付结果通知接口 /// </summary> /// <returns></returns> public ActionResult PayNotifyUrl() { Senparc.Weixin.MP.TenPayLibV3.ResponseHandler payNotifyRepHandler = new Senparc.Weixin.MP.TenPayLibV3.ResponseHandler(null); payNotifyRepHandler.SetKey(Key); //返回的参数 string return_code = payNotifyRepHandler.GetParameter("return_code");//返回状态码 string return_msg = payNotifyRepHandler.GetParameter("return_msg");//返回信息 string xml = string.Format(@"<xml><return_code><![CDATA[{0}]]></return_code><return_msg><![CDATA[{1}]]></return_msg></xml>", return_code, return_msg); //支付失败直接返回 if (return_code.ToUpper()!="SUCCESS") { return Content(xml, "text/xml"); } //因为微信服务器会多次推送通知到这里,所以需要在这里判断订单是否已经完成支付,如果完成,则不进行下面操作 string out_trade_no = payNotifyRepHandler.GetParameter("out_trade_no");//商户订单号
//验证请求是否从微信发过来(安全) if (payNotifyRepHandler.IsTenpaySign()) { //正确的订单处理 } else { //错误的订单处理 } return Content(xml, "text/xml"); }