asp微信支付的坑

用到的加密工具地址
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=


还有&notify_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


大师们都很慢,自己能解决的问题就自己解决吧!





评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值