.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’ 错误解决方案相关推荐

  1. ASP.NET CORE下用盛派微信SDK取微信openid

    用CORE做项目用到微信的相关东西,听说那个盛派微信SDK很火,自己弄了下,只是简单的用用,用户访问页面取微信openid

  2. 使用盛派微信SDK(Senparc.Weixin.MP)设计公众号被动回复API不返回信息问题

    研究了一晚上,终于找到原因了,这坑挖的真是害人不浅 不能收到回复的原因为两点: 1. 盛派官方的sdk例子根本是错误的,post请求也必须传参而不是使用盛派的model 2.返回结果要用Content ...

  3. 基于SENPARC盛派微信sdk的.net WebService微信公众号的相关开发(包含从零开始本机测试环境搭建//token验证//获取微信推送消息//向微信推送消息)

    前言: 由于微信公众号正式号,一直在被使用,所以在研发的时候,本机测试环境,就显得非常重要. 而且在自己闲暇之余,可以自己尝试更深程度的微信公众号的研发工作. 1.首先,必要的网站 http://sd ...

  4. 前端怎么做接口签名验证 -baijiahao_微信H5介绍:Razor+Mvc+盛派微信接口

    01 微信H5 介绍 介绍一个.NET Mvc下开发微信H5的案例,这个是2年前找了一个封装比较简洁友好的一个Demo,开发环境是Razor+mvc+盛派接口,当然前提是你首先要熟悉微信开放平台以及微 ...

  5. 使用盛派Senparc SDK微信开发

    毕业后一直在写Web,主要写微信端现在所用盛派的SDK开发效率挺快的推荐一下. Senaprc.Weixin SDK 是目前使用率最高的微信 .NET SDK,也是最受欢迎的 .NET 开源项目之一. ...

  6. .net 调用盛派SDK微信支付

    1,下载盛派代码 https://github.com/JeffreySu/WeiXinMPSDK 2,使用OAuth2.0 方式 获取 Openid a,获取 微信公众号里配置的 回调url (ur ...

  7. 公众号开发(2) —— 盛派.net SDK + vue搭建微信公众号网页开发框架

    需求:通过微信公众号菜单跳转到手机端网页,跳转后通过微信授权登录获取微信公众号用户的OpenId(用户关注公众号后,用户在公众号的唯一凭证),通过OpenId和后台数据库用户信息绑定起来并实现一些业务 ...

  8. 周三晚6点半!盛派首席架构师“苏老师”在线解密内部系统框架!

    工作中有些事, 看起来只用一会会儿就能完成, 但真正完成起来, 总会遇到一些意想不到的困难! 你一定碰到过这样的情况-- 开发时间 2 周的项目,搭框架就要用 1 周, 刚开发完,各种调试和修 bug ...

  9. 微软爱开发者 | 十月,“拾月”, 盛派开发者社区召唤您

    Microsoft Ignite 秋季大会于北京时间 9 月 23 日 - 25 日在众多新产品与技术发布中圆满落幕,微软商业应用 Power Platform 推出包括多应用集成扩展方案,以帮助企业 ...

最新文章

  1. 前端不为人知的一面--前端冷知识集锦
  2. JAVA入门_多线程_邮局派发信件
  3. webpack-dev-server 本地文件 发布 网站 域名 根目录
  4. 吴恩达深度学习 —— 2.13 逻辑回归的向量化
  5. MyBatis第1天
  6. python判断字符串回文_python实现--判断回文字符串、回文链表、回文数
  7. 忘记MySQL密码以及无法登陆等解决办法
  8. 获得当月时间chuo_擅用GTD时间管理法,远离焦虑情绪,让你的工作、学习井然有序...
  9. 冒泡排序算法(C语言版)
  10. 程序设计语言编译原理-陈火旺(第三版)简答题复习
  11. 01 统计学与试验设计思想
  12. Maix_Bit官方烧录软件和IDE的使用
  13. 计算机程序图标在哪,我的文档不见了 我的文档路径在哪 找回图标方法_电脑软硬件应用网_做中国最专业的计算机应用解决技术网站...
  14. 当当年中庆,百万自营图书大放价,又有羊毛可以薅了
  15. Moses安装全记录
  16. Google advertiser api开发概述——最佳做法建议
  17. 共n级台阶,每次可以上1级或2级台阶,有多少种上法?
  18. 移植shellinabox到ARM嵌入式开发板
  19. 跳出多层for循环的几种方式
  20. SQL中where子句中不能出现聚合函数的原因

热门文章

  1. 关于学习git时的一些疑惑与笔记
  2. 游戏系统开发笔记(六)——服务端架构设计
  3. java内存 海子_Java垃圾回收机制 - 海 子
  4. 令人过目不忘的代码注释
  5. 远翔FP5217,锂电池升9V/12V/18V/24V,内置MOS升压芯片
  6. 英雄联盟召唤师名封号查询
  7. 阿里巴巴CTO线-2023届校园春季招聘正式启动,加入阿里,一起打开有意思的未来
  8. 西安的互联网缺什么不缺什么?
  9. 易语言调用大漠实现《剑侠情缘》后台喊话器制作
  10. [Layui]layui输入框如何设置禁止输入