盛派微信 The ‘hr‘ start tag on line 6 position 2 does not match the end tag of ‘body’ 错误解决方案
.NET Core微信支付退款 Senparc.Weixin.TenPay V3接口 The 'hr' start tag on line 6 position 2 does not match the end tag of 'body'. Line 7, position 3.
- 过程
- 造成原因
- 盛派微信Sdk配置
- Asp.Net Core Startup.cs ConfigureServices()配置
- 调用接口编写
- 结束语
过程
造成原因
微信退款是双向证书验证的,证书验证不通过返回的XML中,
有无法进行解析的hr单节点
需要进行证书的服务器配置和startup.cs的正确配置
盛派微信Sdk配置
可以通过github进行查看源码:
https://github.com/JeffreySu/WeiXinMPSDK.
微信支付相关包
通过NUGET管理 下载以下包 (版本自己选择)
Senparc.CO2NET(工具类)
Senparc.CO2NET.AspNet
Senparc.Weixin.Cache.Redis(Redis缓存)
Senparc.Weixin.TenPay(支付相关内容)
以下是功能包,可根据自己实际情况选择下载
Senparc.Weixin.WxOpen (小程序相关)
Senparc.Weixin.MP (公众号相关)
Asp.Net Core Startup.cs ConfigureServices()配置
// This method gets called by the runtime. Use this method to add services to the container./// <summary>/// 服务配置/// </summary>/// <param name="services"></param>public void ConfigureServices(IServiceCollection services){services.AddMemoryCache();//使用本地缓存必须添加services.AddQuickuseUtility();services.AddSenparcWeixinServices(Configuration);//Senparc.Weixin 注册(必须)services.AddControllers(x => x.Filters.Add(new AsynAutoLogFilter() { IsLogHeader = true, IsLogParameters = true, IsLogResult = true })).SetCompatibilityVersion(CompatibilityVersion.Latest);//此处需要在在进行调用接口时在后面加上下划线 _ (一定要加上,后面如果有修改可以查看源码示例代码)services.AddCertHttpClient(微信商户号+ "_", 微信商户号, "证书绝对路径(要有访问权限)");//此处可以添加更多 Cert 证书services.AddControllersWithViews();services.AddRazorPages();}}
调用接口编写
下列代码示例中 商户号的配置与证书的配置名称要存在且保持一致 配置需要添加下划线
services.AddCertHttpClient(微信商户号+ “_”, 微信商户号, “证书绝对路径(要有访问权限)”);
var data = new TenPayV3RefundRequestData(AppId, 微信商户号,WxMchKey, null, nonceStr, null, outTradeNo, outRefundNo,totalFee,refundFee, opUserId, “REFUND_SOURCE_RECHARGE_FUNDS”, model.RefundDesc,notifyUrl);
var result = await TenPayV3.RefundAsync(_serviceProvider, data);
public async Task<InvokeResult<DataRefundOrder>> OrderRefund(InputOrderRefundModel model){var r = new InvokeResult<DataRefundOrder>() { Data = new DataRefundOrder() };try{WeixinTrace.SendCustomLog("进入退款流程", "1");//获取随机数string nonceStr = TenPayV3Util.GetNoncestr();//退款订单string outTradeNo = orderNo;//退款总金额int totalFee = Convert.ToInt32((refundApply.Amount) * 100);//本次退款金额int refundFee = totalFee;WeixinTrace.SendCustomLog("进入退款流程", "2 outTradeNo:" + outTradeNo);//商户号string opUserId = SiteConfig.WxMchId;//回调地址var notifyUrl = "退款回调地址(确保能访问到)";//组装参数var data = new TenPayV3RefundRequestData(AppId, opUserId, WxMchKey, null, nonceStr, null, outTradeNo, outRefundNo, totalFee, refundFee, opUserId, "REFUND_SOURCE_RECHARGE_FUNDS", model.RefundDesc, notifyUrl);WeixinTrace.SendCustomLog("进入退款流程", "3 Data:" + data.ToJson());//会自己进行查找与商户号相同名字后面带下划线的配置证书 与ConfigureServices配置商户号证书相同var result = await TenPayV3.RefundAsync(_serviceProvider, data);WeixinTrace.SendCustomLog("进入退款流程", "4 Result:" + result.ToJson());r.Data.ReturnCode = result.return_code;r.Data.ReturnMsg = result.err_code;r.Data.ResultCode = result.result_code;r.Success = true;return r;}catch (Exception ex){WeixinTrace.WeixinExceptionLog(new WeixinException(ex.Message, ex));r.ErrorMessage = ex.Message;r.Success = false;return r;}}
结束语
如果出现其他的情况,可以通过下载源码配置好自己的参数 直接进行调试,
看看源代码的处理方式和预想不到的情况
这个错误只要是微信那边返回 FAIL 的XML就应该会出现 具体错误根据调试的返回信息进行相关处理
盛派微信 The ‘hr‘ start tag on line 6 position 2 does not match the end tag of ‘body’ 错误解决方案相关推荐
- ASP.NET CORE下用盛派微信SDK取微信openid
用CORE做项目用到微信的相关东西,听说那个盛派微信SDK很火,自己弄了下,只是简单的用用,用户访问页面取微信openid
- 使用盛派微信SDK(Senparc.Weixin.MP)设计公众号被动回复API不返回信息问题
研究了一晚上,终于找到原因了,这坑挖的真是害人不浅 不能收到回复的原因为两点: 1. 盛派官方的sdk例子根本是错误的,post请求也必须传参而不是使用盛派的model 2.返回结果要用Content ...
- 基于SENPARC盛派微信sdk的.net WebService微信公众号的相关开发(包含从零开始本机测试环境搭建//token验证//获取微信推送消息//向微信推送消息)
前言: 由于微信公众号正式号,一直在被使用,所以在研发的时候,本机测试环境,就显得非常重要. 而且在自己闲暇之余,可以自己尝试更深程度的微信公众号的研发工作. 1.首先,必要的网站 http://sd ...
- 前端怎么做接口签名验证 -baijiahao_微信H5介绍:Razor+Mvc+盛派微信接口
01 微信H5 介绍 介绍一个.NET Mvc下开发微信H5的案例,这个是2年前找了一个封装比较简洁友好的一个Demo,开发环境是Razor+mvc+盛派接口,当然前提是你首先要熟悉微信开放平台以及微 ...
- 使用盛派Senparc SDK微信开发
毕业后一直在写Web,主要写微信端现在所用盛派的SDK开发效率挺快的推荐一下. Senaprc.Weixin SDK 是目前使用率最高的微信 .NET SDK,也是最受欢迎的 .NET 开源项目之一. ...
- .net 调用盛派SDK微信支付
1,下载盛派代码 https://github.com/JeffreySu/WeiXinMPSDK 2,使用OAuth2.0 方式 获取 Openid a,获取 微信公众号里配置的 回调url (ur ...
- 公众号开发(2) —— 盛派.net SDK + vue搭建微信公众号网页开发框架
需求:通过微信公众号菜单跳转到手机端网页,跳转后通过微信授权登录获取微信公众号用户的OpenId(用户关注公众号后,用户在公众号的唯一凭证),通过OpenId和后台数据库用户信息绑定起来并实现一些业务 ...
- 周三晚6点半!盛派首席架构师“苏老师”在线解密内部系统框架!
工作中有些事, 看起来只用一会会儿就能完成, 但真正完成起来, 总会遇到一些意想不到的困难! 你一定碰到过这样的情况-- 开发时间 2 周的项目,搭框架就要用 1 周, 刚开发完,各种调试和修 bug ...
- 微软爱开发者 | 十月,“拾月”, 盛派开发者社区召唤您
Microsoft Ignite 秋季大会于北京时间 9 月 23 日 - 25 日在众多新产品与技术发布中圆满落幕,微软商业应用 Power Platform 推出包括多应用集成扩展方案,以帮助企业 ...
最新文章
- 前端不为人知的一面--前端冷知识集锦
- JAVA入门_多线程_邮局派发信件
- webpack-dev-server 本地文件 发布 网站 域名 根目录
- 吴恩达深度学习 —— 2.13 逻辑回归的向量化
- MyBatis第1天
- python判断字符串回文_python实现--判断回文字符串、回文链表、回文数
- 忘记MySQL密码以及无法登陆等解决办法
- 获得当月时间chuo_擅用GTD时间管理法,远离焦虑情绪,让你的工作、学习井然有序...
- 冒泡排序算法(C语言版)
- 程序设计语言编译原理-陈火旺(第三版)简答题复习
- 01 统计学与试验设计思想
- Maix_Bit官方烧录软件和IDE的使用
- 计算机程序图标在哪,我的文档不见了 我的文档路径在哪 找回图标方法_电脑软硬件应用网_做中国最专业的计算机应用解决技术网站...
- 当当年中庆,百万自营图书大放价,又有羊毛可以薅了
- Moses安装全记录
- Google advertiser api开发概述——最佳做法建议
- 共n级台阶,每次可以上1级或2级台阶,有多少种上法?
- 移植shellinabox到ARM嵌入式开发板
- 跳出多层for循环的几种方式
- SQL中where子句中不能出现聚合函数的原因