微信支付v3 签名与验签

微信支付v3

新需求为了在网页上进行Native支付,在开发过程中走了很多弯路,网上的代码很多运行无法正常加解密,经过几天的读文档,百度,终于调通.
微信文档详见微信支付开发文档

签名

HTTP请求方法\n URL\n 请求时间戳\n 请求随机串\n 请求报文主体\n

对上述串进行SHA256 WITH RSA加密得到signature再填充到HTTP头中

‘Authorization: WECHATPAY2-SHA256-RSA2048
mchid=“1900009191”,nonce_str=“593BEC0C930BF1AFEB40B4A08C8FB242”,signature=“uOVRnA4qG/MNnYzdQxJanN+zU+lTgIcnU9BxGw5dKjK+VdEUz2FeIoC+D5sB/LN+nGzX3hfZg6r5wT1pl2ZobmIc6p0ldN7J6yDgUzbX8Uk3sD4a4eZVPTBvqNDoUqcYMlZ9uuDdCvNv4TM3c1WzsXUrExwVkI1XO5jCNbgDJ25nkT/c1gIFvqoogl7MdSFGc4W4xZsqCItnqbypR3RuGIlR9h9vlRsy7zJR9PBI83X8alLDIfR1ukt1P7tMnmogZ0cuDY8cZsd8ZlCgLadmvej58SLsIkVxFJ8XyUgx9FmutKSYTmYtWBZ0+tNvfGmbXU7cob8H/4nLBiCwIUFluw==”,timestamp=“1554208460”,serial_no=“1DDE55AD98ED71D6EDD4A4A16996DE7B47773A8C”’

 /// <summary>
 /// 签名
 /// </summary>
 /// <param name="filePath">证书地址</param>
 /// <param name="body">请求的报文内容 若为Get则为空</param>
 /// <param name="method">请求方法</param>
 /// <param name="url">链接 绝对路径</param>
 /// <returns></returns>
 public string CreateSign(string filePath,string body,string method,string url) {
   
     //0时间戳 1随机串 2报文主题
     string seconds = (DateTime.Now - DateTime.Parse("1970-01-01 08:00:00")).TotalSeconds.ToString().Split('.')[0];
     string randoms = new Random().Next().ToString("X")+ new Random().Next().ToString("X");
     string s = string.Format("{0}\n{1}\n{2}\n{3}\n{4}\n", method, url, seconds, randoms, body);
     s = Encryption.SHA256WithRSA(filePath, WeChatKey.mch_id,s);
     string sign = 
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值