用到的加密工具地址
http://tool.chinaz.com/Tools/md5.aspx
md5加密
https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=20_1
签名验证工具
https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_1
统一下单文档
https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_4
扫码接口文档模式一
https://pay.weixin.qq.com
商户平台登录地址
http://paysdk.weixin.qq.com/
微信demo地址
上面有个地址很关键
http://paysdk.weixin.qq.com/example/qrcode.php?data=
还有¬ify_url值被转的坑先用tnotify_url替代再替换
asp替换如下
function notktm(stra)
stra=replace(stra,"tnotify_url","notify_url")
notktm=stra
end function
还有就是asp的加密方式为php的md5加密,因为asp有两种以上md5加密
还有如下函数排序问题按ascii码字典顺序排序,手动就可以
ASCII码的值如下
48~57为0到9十个阿拉伯数字;
65~90为26个大写英文字母;
97~122号为26个小写英文字母。
所以应该写:
数字、大写英文字母、小写英文字母
还有白名单的问题,现已加入豪华套餐中,必须把所在的虚拟空间或是vps,ecs主机的IP加到里面否则也出错!
最后是post与get提交和json获取分割
Function GetBody(code)
Set https = Server.CreateObject("Microsoft.XMLHTTP")
With https
.Open "GET", "https://api.weixin.qq.com/sns/oauth2/access_token", False
.setRequestHeader "Content-Type","application/x-www-form-urlencoded"
.Send "appid="&APPID&"&secret="&APPSECRET&"&code="&code&"&grant_type=authorization_code"
GetBody = .ResponseBody
End With
GetBody = BytesToBstr(GetBody,"utf-8")
Set https = Nothing
End Function
Function BytesToBstr(body,Cset)
dim objstream
set objstream = Server.CreateObject("adodb.stream")
objstream.Type = 1
objstream.Mode =3
objstream.Open
objstream.Write body
objstream.Position = 0
objstream.Type = 2
objstream.Charset = Cset
BytesToBstr = objstream.ReadText
objstream.Close
set objstream = nothing
End Function
Dim sc4Json
Sub InitScriptControl
Set sc4Json = Server.CreateObject("MSScriptControl.ScriptControl")
sc4Json.Language = "JavaScript"
sc4Json.AddCode "var itemTemp=null;function getJSArray(arr, index){itemTemp=arr[index];}"
End Sub
Function getJSONObject(strJSON)
sc4Json.AddCode "var jsonObject = " & strJSON
Set getJSONObject = sc4Json.CodeObject.jsonObject
End Function
Sub getJSArrayItem(objDest,objJSArray,index)
On Error Resume Next
sc4Json.Run "getJSArray",objJSArray, index
Set objDest = sc4Json.CodeObject.itemTemp
If Err.number=0 Then Exit Sub
objDest = sc4Json.CodeObject.itemTemp
End Sub
Call InitScriptControl
Set objTest = getJSONObject(GetBody(code))
openid=objTest.openid
access_token=objTest.access_token
还有时间戳
asp代码如下
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
用法times=ToUnixTime(now(),+8)
还有
随机字符串代码
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
订单号代码
Randomize()
dingdanhao=INT((999999-1+1)*RND+1)
notify_url这个地址里是异步微信给咱程序的通知,所以把成功后的调用函数写这地址里
要不然,只有付款完毕后点完成才能启动函数,多数人忘记了呢?
最后是商户ID号一定要和微信里的商户ID号对应,我就遇见过一次这样的!
还有就是扫码支付,必须开通H5,和里面的网址配置都必须填写好,否则还是错误!腾讯弄的不在一起!都是坑,我都掉里过。
最后是编码问题gbk与utf-8都可以,gb2312不行
Response.Codepage="936"
Response.Charset= "gbk"
Response.Codepage="65001"
Response.Charset= "utf-8"
啥编码都没下面这句话好用
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
三个编码同时用也会是乱码
和微信接口对接的时候还有2个接口函数一样,但获取的时候不一样,用法也不一样,坑啊
获取access_token全局变量的函数和获取access_token再获取用户信息时的不一样
二者获取用户信息的区别在于获取关注字段subscribe
access_token全局变量一般都是静默不用用户允许获取用户openid和信息的
通过特殊网址让用户进去后点允许获取信息的是获取用户access_token变量
这有点乱自己慢慢体会
模版消息(业务通知)与一次性订阅消息是不一样的!后台很明确,都需要申请好像。一个是文字一个可以带图片
获取用户地理位置位置这个功能,没需求的就关闭,太烦人了!可以通过IP等获取用户位置,这个接口还麻烦呵呵!
最后说明一下!只有微信给别人发钱比如红包时和退款时才需要用到证书,否则不用证书。
php有现成的demo,比asp好写多了!而且坑还少点,写的代码也精炼,java与asp.net就没有php代码写的少。
就写这么多,留个文档让大家看看,我开始也是四处找代码,问别人,一点点的才写出来!
下面不是我的群,是asp微信开发的群
群号:3645974、群号:361633672
大师们都很慢,自己能解决的问题就自己解决吧!
http://tool.chinaz.com/Tools/md5.aspx
md5加密
https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=20_1
签名验证工具
https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_1
统一下单文档
https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_4
扫码接口文档模式一
https://pay.weixin.qq.com
商户平台登录地址
http://paysdk.weixin.qq.com/
微信demo地址
上面有个地址很关键
http://paysdk.weixin.qq.com/example/qrcode.php?data=
还有¬ify_url值被转的坑先用tnotify_url替代再替换
asp替换如下
function notktm(stra)
stra=replace(stra,"tnotify_url","notify_url")
notktm=stra
end function
还有就是asp的加密方式为php的md5加密,因为asp有两种以上md5加密
还有如下函数排序问题按ascii码字典顺序排序,手动就可以
ASCII码的值如下
48~57为0到9十个阿拉伯数字;
65~90为26个大写英文字母;
97~122号为26个小写英文字母。
所以应该写:
数字、大写英文字母、小写英文字母
还有白名单的问题,现已加入豪华套餐中,必须把所在的虚拟空间或是vps,ecs主机的IP加到里面否则也出错!
最后是post与get提交和json获取分割
Function GetBody(code)
Set https = Server.CreateObject("Microsoft.XMLHTTP")
With https
.Open "GET", "https://api.weixin.qq.com/sns/oauth2/access_token", False
.setRequestHeader "Content-Type","application/x-www-form-urlencoded"
.Send "appid="&APPID&"&secret="&APPSECRET&"&code="&code&"&grant_type=authorization_code"
GetBody = .ResponseBody
End With
GetBody = BytesToBstr(GetBody,"utf-8")
Set https = Nothing
End Function
Function BytesToBstr(body,Cset)
dim objstream
set objstream = Server.CreateObject("adodb.stream")
objstream.Type = 1
objstream.Mode =3
objstream.Open
objstream.Write body
objstream.Position = 0
objstream.Type = 2
objstream.Charset = Cset
BytesToBstr = objstream.ReadText
objstream.Close
set objstream = nothing
End Function
Dim sc4Json
Sub InitScriptControl
Set sc4Json = Server.CreateObject("MSScriptControl.ScriptControl")
sc4Json.Language = "JavaScript"
sc4Json.AddCode "var itemTemp=null;function getJSArray(arr, index){itemTemp=arr[index];}"
End Sub
Function getJSONObject(strJSON)
sc4Json.AddCode "var jsonObject = " & strJSON
Set getJSONObject = sc4Json.CodeObject.jsonObject
End Function
Sub getJSArrayItem(objDest,objJSArray,index)
On Error Resume Next
sc4Json.Run "getJSArray",objJSArray, index
Set objDest = sc4Json.CodeObject.itemTemp
If Err.number=0 Then Exit Sub
objDest = sc4Json.CodeObject.itemTemp
End Sub
Call InitScriptControl
Set objTest = getJSONObject(GetBody(code))
openid=objTest.openid
access_token=objTest.access_token
还有时间戳
asp代码如下
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
用法times=ToUnixTime(now(),+8)
还有
随机字符串代码
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
订单号代码
Randomize()
dingdanhao=INT((999999-1+1)*RND+1)
notify_url这个地址里是异步微信给咱程序的通知,所以把成功后的调用函数写这地址里
要不然,只有付款完毕后点完成才能启动函数,多数人忘记了呢?
最后是商户ID号一定要和微信里的商户ID号对应,我就遇见过一次这样的!
还有就是扫码支付,必须开通H5,和里面的网址配置都必须填写好,否则还是错误!腾讯弄的不在一起!都是坑,我都掉里过。
最后是编码问题gbk与utf-8都可以,gb2312不行
Response.Codepage="936"
Response.Charset= "gbk"
Response.Codepage="65001"
Response.Charset= "utf-8"
啥编码都没下面这句话好用
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
三个编码同时用也会是乱码
和微信接口对接的时候还有2个接口函数一样,但获取的时候不一样,用法也不一样,坑啊
获取access_token全局变量的函数和获取access_token再获取用户信息时的不一样
二者获取用户信息的区别在于获取关注字段subscribe
access_token全局变量一般都是静默不用用户允许获取用户openid和信息的
通过特殊网址让用户进去后点允许获取信息的是获取用户access_token变量
这有点乱自己慢慢体会
模版消息(业务通知)与一次性订阅消息是不一样的!后台很明确,都需要申请好像。一个是文字一个可以带图片
获取用户地理位置位置这个功能,没需求的就关闭,太烦人了!可以通过IP等获取用户位置,这个接口还麻烦呵呵!
最后说明一下!只有微信给别人发钱比如红包时和退款时才需要用到证书,否则不用证书。
php有现成的demo,比asp好写多了!而且坑还少点,写的代码也精炼,java与asp.net就没有php代码写的少。
就写这么多,留个文档让大家看看,我开始也是四处找代码,问别人,一点点的才写出来!
下面不是我的群,是asp微信开发的群
群号:3645974、群号:361633672
大师们都很慢,自己能解决的问题就自己解决吧!