Foxtable(狐表)用户栏目专家坐堂 → 微信支付V3中的SHA256-RSA的数字签名算法


  共有7391人关注过本帖树形打印复制链接

主题:微信支付V3中的SHA256-RSA的数字签名算法

帅哥哟,离线,有人找我吗?
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/4/11 15:02:00 [显示全部帖子]

没有例子。微信官方提供的代码里的加密算法仅支持.net core。Foxtable没有办法使用

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/5/24 13:33:00 [显示全部帖子]

微信支付V2现在不能使用了吗?

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/7/4 16:03:00 [显示全部帖子]

什么错误提示?

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/7/4 16:43:00 [显示全部帖子]

serial_no后面少了一个双引号。

至于证书怎么下载,请去看微信支付的官方开发文档,有说明的

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/7/4 16:57:00 [显示全部帖子]

嗯,论坛因为安全的原因屏蔽了一些东西,参考下面用法

Dim s1 As String = "WECHATPAY2-SHA256-RSA2048 mchid=""" & pfxpassword & """,nonce_str=""" & nonce_str & """,signature=""" & sign & """,timestamp=""" & timestamp & """,serial_no=""这里改为自己的证书序列号"""  ‘授权验证数据

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/12/1 13:39:00 [显示全部帖子]

调试看看那些代码执行慢:http://www.foxtable.com/webhelp/topics/2226.htm

如果是调用接口获取返回值那就是微信的问题了

 回到顶部