以文本方式查看主题 - Foxtable(狐表) (http://www.foxtable.com/bbs/index.asp) -- 专家坐堂 (http://www.foxtable.com/bbs/list.asp?boardid=2) ---- 微信支付V3中的SHA256-RSA的数字签名算法 (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=176387) |
-- 作者:tianhao0817 -- 发布时间:2022/4/11 14:25:00 -- 微信支付V3中的SHA256-RSA的数字签名算法 请问一下有点蓝老师,论坛里有用V3版本写的例子吗? SHA256-RSA的数字签名算法是怎么写的?
[此贴子已经被作者于2022/4/11 14:25:22编辑过]
|
-- 作者:有点蓝 -- 发布时间:2022/4/11 15:02:00 -- 没有例子。微信官方提供的代码里的加密算法仅支持.net core。Foxtable没有办法使用 |
-- 作者:hammerlucy -- 发布时间:2022/5/24 12:08:00 -- 这一块搞不定,那H5支付没办法完成了啊 |
-- 作者:有点蓝 -- 发布时间:2022/5/24 13:33:00 -- 微信支付V2现在不能使用了吗? |
-- 作者:有点蓝 -- 发布时间:2022/5/25 12:41:00 -- v3签名用法: Dim ts As TimeSpan = DirectCast((DateTime.Now - New DateTime(1970, 1, 1, 8, 0, 0, 0)), TimeSpan) Dim timestamp As Long = Convert.ToInt64(ts.TotalSeconds).ToString \'时间戳 Dim nonce_str As String = Guid.NewGuid.ToString.Replace("-", "").ToUpper \'随机数 Dim ss As String = "GET" & Chr(10) & "/v3/certificates" & Chr(10) & timestamp & Chr(10) & nonce_str & Chr(10) & Chr(10) \'Output.Show(ss) Dim pfxFilepath As String = "E:\\微信支付\\V3\\cert\\apiclient_cert.p12" \'证书文件地址 Dim pfxpassword As String = "1500000000" \'商户号 Dim privateCert As New Security.Cryptography.X509Certificates.X509Certificate2(pfxFilepath, pfxpassword, Security.Cryptography.X509Certificates.X509KeyStorageFlags.Exportable) Dim privateKey As Security.Cryptography.RSACryptoServiceProvider = privateCert. PrivateKey Dim privateKey1 As New Security.Cryptography.RSACryptoServiceProvider() privateKey1.ImportParameters(privateKey.ExportParameters(True)) Dim data() As Byte = Encoding.UTF8.GetBytes(ss) Dim signature() As Byte = privatekey1.SignData(data, "SHA256") Dim sign As String = Convert.ToBase64string(signature) \'Output.Show(sign) Dim htc As New HttpClient("https://api.mch.weixin.qq.com/v3/certificates") htc.ContentType = "application/json; charset=utf-8" htc.Accept = "application/json" \'必须 htc.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36" ‘必须’ Dim s1 As String = "WECHATPAY2-SHA256-RSA2048 mchid=""" & pfxpassword & """,nonce_str=""" & nonce_str & """,signature=""" & sign & """,timestamp=""" & timestamp & """,serial_no=""这里改为自己的证书序列号""" ‘授权验证数据 \'Output.Show(s1) htc.Headers.Add("Authorization", s1) Dim ret As String = htc.GetData() Output.Show(ret) [此贴子已经被作者于2022/7/4 16:55:53编辑过]
|
-- 作者:qinyilin -- 发布时间:2022/5/25 14:57:00 -- 必顶 蓝版
|
-- 作者:hammerlucy -- 发布时间:2022/7/4 15:56:00 -- Dim s1 As String = "WECHATPAY2-SHA256-RSA2048 mchid=""" & pfxpassword & """,n & nonce_str & """,signature=""" & sign & """,timestamp=""" & timestamp & """,serial_no=""这里改为自己的证书序列号""" ‘授权验证数据 测试时跳出错误提示,signature在局部变量中声明过
|
-- 作者:有点蓝 -- 发布时间:2022/7/4 16:03:00 -- 什么错误提示? |
-- 作者:tianhao0817 -- 发布时间:2022/7/4 16:31:00 -- [此贴子已经被作者于2022/12/12 14:24:09编辑过]
|
-- 作者:有点蓝 -- 发布时间:2022/7/4 16:43:00 -- serial_no后面少了一个双引号。 至于证书怎么下载,请去看微信支付的官方开发文档,有说明的
|