微信签名获取平台证书
https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay4_0.shtml
所函数
时间戳
Function ToUnixTime(strTime,intTimeZone)
If IsEmpty(strTime) or Not IsDate(strTime) Then strTime = Now
If IsEmpty(intTimeZone) or Not isNumeric(intTimeZone) Then intTimeZone = 0
ToUnixTime = DateAdd(“h”,-intTimeZone,strTime)
ToUnixTime = DateDiff(“s”,”1970-1-1 0:0:0″, ToUnixTime)
End Function
随机函数
Function getCode1(iCount1)
Dim arrChar1
Dim j1,k1,strCode1
arrChar1 = “23456789ABCDEFGHJKLMNPQRSTUVWXYZ”‘去掉了数字1和0,字母I和O
k1=Len(arrChar1)
Randomize
For i1=1 to iCount1
j1=Int(k1 * Rnd )+1
strCode1 = strCode1 & Mid(arrChar1,j1,1)
Next
getCode1 = strCode1
End Function
mchid=”1400000000″ ‘服务商户号
A=”GET”‘GET提交方式
B=”/v3/certificates”‘URL去除域名
timestamp=ToUnixTime(now(),+8)&””‘时间戳
nonce_str=getCode1(30)&””‘随机字符串
Datas=A&”\n”&B&”\n”×tamp&”\n”&nonce_str&”\n\n”
组成提交所需要的字符串
进行私钥签名每个人写法不一样
signature=Encrypt.Sign(Datas,”Null”,Privatekey,”SHA256″,”4.0.30319″)
Datas是上面的字符串
NULL不用管它
Privatekey为apiclient_key.pem证书中(私钥)
除—–BEGIN PRIVATE KEY—–
要中间部分就是Privatekey的值
—–END PRIVATE KEY—–
公钥导出
http://www.metools.info/code/c87.html
用上面的地址导出公钥(复制的时候全部复制)
SHA256为加密方式只能使用这种加密方式
4.0.30319为.net的版本号
查看.net版本信息
文件夹地址栏输入%systemroot%\Microsoft.NET\Framework
验证工具下载
https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/download/Product_5.zip
SHA256这个加密呵呵,一个大坑(别人帮写的)
提交时必须用https模式和证书
这里有个坑
msxml6.dll 错误 ‘80072f0c’
请求证书完成客户验证
加载证书
Set https = Server.CreateObject(“Msxml2.ServerXMLHTTP.6.0”)
https.setOption(2) = 13056
https.setOption(3)=”LOCAL_MACHINE\My\证书名称”
https.setTimeouts 10 * 100, 10 * 100, 10 * 100, 10 * 100
越过好几个坑后感觉见到亮的时
计算签名值,上面也用工具验证过了!继续往下弄
设置http头
然后出现
Http头Authorization值格式错误,请参考《微信支付商户REST API签名规则》
Authorization这块也是个大坑
Authorization后面的格式就修改了N多
始终出错,什么签名不合法
后来是
商户API证书序列号不正确本以为快接近了!修正后还是出错
错误的签名,验签失败
与下面的链接地址一模一样的错误
https://developers.weixin.qq.com/community/pay/doc/0004ae23130ab8b7b08bc95305f400
再来又出了一个什么平台证书获取!生成签名的时候也没说啊!哎!支付证书与平台证书还不一样
后来找资料等都不行,然后我们同事说哦,证书更新过,于是乎我就更新了证书。调用颁发者“Tenpay.com Root CA”这个证书
还是“错误的签名,验签失败”
懵了!不知道如何是好,同事说可以打电话给腾讯,我就打电话,得到与技术在平台沟通的渠道,沟通,说是\n被转义符了,我就开始替换\n是回车或是换行回车CHR(34)不行,然后换行CHR(10),没想到好用了!
就算是完结了!验证签名真的是资料少又少!
评论前必须登录!
注册