最近在搞微信支付,因为以前搞过微信支付所以觉得应该不难,没想到微信支付v3版本还挺复杂,其中大部分都可以在网上找到解决方法。但是微信通知回调验签却没有任何文章介绍,特别是.net core 。微信官方文档也是写的莫名奇妙走了不少弯路。也有很多人不做验签直接接收数据解密,这样做完全不符合V3的安全要求。官方特别提醒必须做通知验签,并且是字体加粗必须要做验签!
  

 

 

    验签方法

    特别注意:回调验签使用的是商户平台证书并不是API证书

    商户平台证书需要通过接口获取,接口地址:微信支付-开发者文档 (qq.com),也可以通过证书下载工具获取:GitHub - wechatpay-apiv3/CertificateDownloader: Java 微信支付 APIv3 平台证书的命令行下载工具

    因为证书有有效期所以推荐大家使用接口获取证书并持久化保存,每天请求一次以保证证书是最新的证书。

    通过工具获得的证书是 pem格式的,下面提供两个验签方式分别支持直接读取证书内容和读取pem文件验签

    

/// <summary>
        /// 公钥验证签名
        /// </summary>
        /// <param name="data"></param>
        /// <param name="certPah"></param>
        /// <param name="certPwd"></param>
        /// <returns></returns>
        public static bool PubVerifyData(string data,string sign,  string pemFilePath,string password)
        {
          
          
            var pc = new X509Certificate2(pemFilePath, password, X509KeyStorageFlags.Exportable | X509KeyStorageFlags.MachineKeySet);;


            var pub = (RSACng)pc.PublicKey.Key;
          return  pub.VerifyData(System.Text.Encoding.Default.GetBytes(data), Convert.FromBase64String(sign), HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
        }
        /// <summary>
        /// 公钥验证签名 微信通知头验签 平台证书
        /// </summary>
        /// <param name="data"></param>
        /// <param name="sign"></param>
        /// <param name="pubKey">证书内容string,方法会自动转为byte</param>
        /// <param name="password">默认商户号</param>
        /// <returns></returns>
        public static bool PubVerifyDataByte(string data, string sign, string pubKey, string password)
        {

            byte[] pubByte = System.Text.Encoding.Default.GetBytes(pubKey);
            var pc = new X509Certificate2(pubByte, password, X509KeyStorageFlags.Exportable | X509KeyStorageFlags.MachineKeySet); ;


            var pub = (RSA)pc.PublicKey.Key;
            return pub.VerifyData(System.Text.Encoding.Default.GetBytes(data), Convert.FromBase64String(sign), HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
        }

最后根据官方文档拼接数据验签就可以了。

如果此文有帮到你的话请点个赞吧!!

posted @ 2022-01-21 15:40 树形图 阅读(886) 评论(0) 推荐(0) 编辑
摘要: .net core mvc 发布有很长时间了,但是一直没有用过,最近突然想开发一个导航网站,于是就抽时间开发了一个专门为开发者使用的导航站点,想看的话请移步我的上一篇博客 "https://www.cnblogs.com/weiwin/p/11941684.html" 这个网站虽然小但是网站该有的功 阅读全文
posted @ 2019-11-27 16:11 树形图 阅读(1328) 评论(0) 推荐(8) 编辑
摘要: 概述 有时候我们需要去查询某些地点的坐标,那么我们可以用百度提供的坐标拾取系统http://api.map.baidu.com/lbsapi/getpoint/index.html,但是会发现它只能一个一个的查,还要不停的点击,要是查询的量特别大,比如说要查某个省的所有村,甚至全国所有村的坐标怎么办 阅读全文
posted @ 2016-11-26 23:26 树形图 阅读(1217) 评论(6) 推荐(4) 编辑
摘要: 概要     窗前明月光,疑是地上霜,举头望明月,低头思故乡。别误会这是开头诗与以下文章没任何关系。 今天我想给大家说道说道 C lambda表达式,不废话,下面开始说道! lambda lambda是什么,它不是是什么,它只是一个语法糖,看着简单明了,写起来简单,对于开发人员可 阅读全文
posted @ 2016-11-13 23:25 树形图 阅读(614) 评论(0) 推荐(0) 编辑
摘要: 原文http://www.docin.com/p-409284488.htmlCAB打包文档说明文档目的本文档的目的在于说明将ocx和dll以及相关的文件打包成一个CAB包,以便在网页下调用ocx控件时免去手工将dll和其他一下文件拷贝到客户机,方便了现场施工。打包工具打包工具有makeCAB其中,... 阅读全文
posted @ 2015-05-11 10:27 树形图 阅读(578) 评论(0) 推荐(0) 编辑
摘要: 转自 (http://www.cnblogs.com/chinadhf/archive/2010/09/03/1817336.html),并且在开发过程中遇到的问题进行了补充说明,让新手少走弯路本文描述了使用ATL开发一个ActiveX控件的完整过程。一、创建项目单击起始页中的“New Projec... 阅读全文
posted @ 2015-05-11 10:18 树形图 阅读(584) 评论(0) 推荐(0) 编辑
摘要: 在网上只有webbroswer的代码,所以自己又修改了修改改成axwebbroswer的public static class yanZhengMaHelp { //webbrowser验证码 public static Image GetRegCodePic(We... 阅读全文
posted @ 2014-07-25 17:27 树形图 阅读(477) 评论(0) 推荐(0) 编辑
摘要: 最近发现,很久以前的一个项目中的查询竟然会注入sql,原来是使用的通用的存储过程分页,里面有个参数是@wherestr,这个参数是在拼接sql,所以会造成注入,这个真是蛋疼的问题。很多人没发现这个问题,所以在这里说一说,也希望找到完美的解决方法,首先过滤是不行的,过滤说白了是在改变用户的意志。所以我... 阅读全文
posted @ 2014-04-20 22:11 树形图 阅读(2458) 评论(19) 推荐(1) 编辑
摘要: 最近发现,很久以前的一个项目中的查询竟然会注入sql,原来是使用的通用的存储过程分页,里面有个参数是@wherestr,这个参数是在拼接sql,所以会造成注入,这个真是蛋疼的问题。很多人没发现这个问题,所以在这里说一说,也希望找到完美的解决方法,首先过滤是不行的,过滤说白了是在改变用户的意志。所以我... 阅读全文
posted @ 2014-02-27 16:55 树形图 阅读(711) 评论(0) 推荐(0) 编辑
摘要: 吐槽下百度,在百度搜这个问题都是渣渣,谷歌直接就出来了,记录一下设置Frame时,有一属性是scrolling="yes/no/auto",IE6的mozilla都支持,或许对auto的理解很不人性化。scrolling="auto"的意思是自动,就是要的时候有,不要的时候没有。但如果设成auto,则在网页过长需要出竖起滚动条时,IE会自动地把水平滚动条也显示出来,即使网页完全不超宽。scrolling="yes",IE则会一直出竖直滚动条,而不随便出水平条,这差不多是对的。所以如果要用Frame的话,还是要把这个属性设成Yes,这完 阅读全文
posted @ 2014-01-23 16:53 树形图 阅读(1274) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示