首页 新闻 会员 周边

asp.net webapi 中,微信支付回调接口,返回xml格式,微信服务器不识别,多次重复回调

0
[已解决问题] 解决于 2018-06-08 09:39

商户处理后同步返回给微信的结果示例:<xml><return_code><![CDATA[SUCCESS]]></return_code></xml>
webapi项目,Global 文件中已经设置了xmlformatter 的 UseXmlSerializer 属性为true.

微信支付回调请求headers内容很少,Content-Type:text/xml.


/// <summary>
/// 微信支付回调响应实体
/// </summary>
[XmlRoot("xml")]
public class WxPayResult
{
/// <summary>
/// 实体属性
/// </summary>
[XmlIgnore]
public string return_code { get; set; }

/// <summary>
/// xml元素
/// </summary>
[XmlElement("return_code")]
public XmlNode Code
{
get
{
return new XmlDocument().CreateCDataSection(return_code);
}
set
{
return_code = value.InnerText;
}
}
}

 

回调处理函数不做任何处理,直接返回成功.

public IHttpActionResult Test()

{

var resp = new WxPayResult()
{
return_code = "SUCCESS"
};
return Ok(resp);

 }

 

自己调试返回结果为:<xml xmlns:xsd="http://www.w3.org/2001/XMLSchemaxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><return_code><![CDATA[SUCCESS]]></return_code></xml>

但是微信支付不识别,总是重复推送支付回调结果.

 

回调处理函数用另一种写法

public HttpResponseMessage Test()

{

var xml= "<xml><return_code><![CDATA[SUCCESS]]></return_code></xml>";

var resp = Request.CreateResponse(HttpStatusCode.OK, xml, "text/xml");

return resp;

 }

返回结果同上.

微信支付还是不识别,重复推送支付结果

shangsharon的主页 shangsharon | 菜鸟二级 | 园豆:251
提问于:2017-08-15 14:57
< >
分享
最佳答案
0

我这样弄的,控制器处

return new HttpResponseMessage { Content = new StringContent("要返回给微信的内容", Encoding.GetEncoding("UTF-8"), "text/plain") };

奖励园豆:5
大龄愣头青 | 初学一级 |园豆:200 | 2018-03-28 16:27

webapi删除了默认的xmlformatter,GlobalConfiguration.Configuration.Formatters.XmlFormatter.自定义实现的格式化器里面,输出流时直接用了Encoding.UTF8 默认编码,这样会生成BOM头,导致微信服务器不识别,应该 new System.Text.UTF8Encoding(false),指定不生成BOM标识.

shangsharon | 园豆:251 (菜鸟二级) | 2018-05-10 17:42
其他回答(1)
0

你自己调一下.看下返回值先

吴瑞祥 | 园豆:29449 (高人七级) | 2017-08-15 15:41

我返回给微信服务器的就是这个:

<xml xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><return_code><![CDATA[SUCCESS]]></return_code></xml>

比官方的示例多了xml的命名空间

<xml><return_code><![CDATA[SUCCESS]]></return_code></return_msg></xml>

支持(0) 反对(0) shangsharon | 园豆:251 (菜鸟二级) | 2017-08-15 16:21

@shangsharon: 你怎么查看到的结果?

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2017-08-15 16:46

@吴瑞祥: 模拟请求的啊

支持(0) 反对(0) shangsharon | 园豆:251 (菜鸟二级) | 2017-08-15 16:48

@shangsharon: 你返回值用string.然后直接return xml;看看

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2017-08-15 16:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册