概要
微信小程序支付已经到了V3阶段,在V2阶段因为自己对文档的不仔细研读就踩过一个坑(ASCII排序),到了V3版本,又是折磨了2天时间,看了一下目前网上关于C#的示例代码,要么是做了高封装,要么是借用三方库,而且在版本上基本都是.net core的版本居多,向下兼容性较差。特此记录一下,也为同僚们提供一点点帮助;
因此,写了一个最干净简单的示例!
签名思路
官方提供的文档(如何签名)已经把思路基本写的比较清楚了,我们需要解决的问题其实就是1个,如何加密!!!
找了一下前行者的解决思路,.netCore 的示例较多,在向下兼容上,部分兄弟提出了.net 与java的秘钥不一致的问题,并使用了Org.BouncyCastle工具进行转换,其实大可不必。
本文的解决思路如下:
1、通过X509Certificate2对象读取证书直接获取秘钥(直接省略秘钥明文、引入三方库、跨平台等问题)
2、通过RSACryptoServiceProvider对象进行SHA256加密
3,、返回签名串
代码示例
以下代码为FrameWork4.5+以上均可使用。
/// <summary>
/// V3加密算法
/// </summary>
/// <param name="meth">POST、GET</param>
/// <param name="url">接口地址</param>
/// <param name="body">参数正文</param>
/// <param name="priKeyFile">证书地址</param>
/// <param name="keyPwd">证书密码</param>
/// <returns></returns>
public static string wx3Sign(string meth,