ASP程序写的项目与微信服务号(公众号)完美结合。仅需一个DLL组建WeixinDLL
因ASP程序开发有很多优点,早年间ASP风靡全球,因此如今还在继续运营的ASP开发的项目仍在运行着,但是随着社交网络不断发达,特别是微信支付、微信通讯、小程序等的出现,导致很多ASP项目对接起来就比较尴尬。且微信没有针对ASP项目开发的详细说明,这个只能靠技术员精湛的技术、丰富的技术经验去完成对接了。但是还有很多正在接手ASP老项目的需要去对接就比较麻烦。
今天我专门抽时间将ASP与微信服务号进行二次开发的一些常见应用,封装成了DLL组建,大家只需要熟悉这个组建的一些基本接口信息,即可很轻松搞定ASP老项目与微信服务号的完美对接,且最简单的方式。
组建名:WeixinDLL
此组建提供了2个类:(今天先介绍类的基本信息,后面一个函数配一个案例去进行介绍)
一、与微信通信的类:WeixinClass
二、微信V3支付MD5加密类:Md5Class
WeixinClass实现的常用功能:
1、微信服务号客户登陆,且获取客户授权的用户基本信息
2、判断客户是否取消关注微信公众号
3、微信分享(分享到微信好友、微信朋友圈、QQ好友、QQ朋友圈等)
4、访问客户的精准定位(正/逆地理编码获取详细的地址,精确到街道门牌号)
5、自动发送微信模板消息给客户
6、自动发送微信图文消息给客户
7、自动发送微信纯文本信息给客户(类似微信聊天信息)
8、微信在线支付(V3支付)
WeixinClass提供的函数
1、XMLRequest(ByVal prepay_id_url, ByVal xmlBody)
prepay_id_url:微信服务器认证prepay_id的url地址
xmlBody:提交到微信服务器的xml格式内容
这个函数主要是为了获取prepay_id这种XML请求,需要使用证书认证的请求。得到的是一串与微信服务器进行了数字证书认证且加密的字符串,方便发起JSAPI支付功能。
2、ToUnixTime(ByVal strTime)
这个主要是为了普通日期转换成时间戳
3、MakeRanNum(ByVal Length)
返回纯数字组合的随机数,长度为length,可以任意设置
4、MakeRanNumChar(ByVal Length)
返回数字、大写小写混合字符串,长度为length,可以任意设置
5、parseJSON(ByVal str)
将接受到的JavaScript的Json格式内容,通过parseJSON在ASP代码内也可以类似JS进行对象模式调用。
6、file_get_contents(ByVal url, ByVal method, ByVal postdata)
url:提交的网址
method:提交方式post/get
postdata:提交的数据,可以是json,也可以是其他
返回远程服务器上通信的反馈内容
7、get_paySign(ByVal snonce_str, ByVal sprepay_id, ByVal stimeStamp)
snonce_str:随机字符串
sprepay_id:数字证书认证之后的加密prepay_id
stimeStamp:时间戳
微信支付V3,返回最后提交的paySign
8、get_prepay_id(ByVal attach, ByVal body, ByVal nonce_str, ByVal notify_url, ByVal openid, ByVal out_trade_no, ByVal total_fee)
目的:微信支付V3获取Prepay_Id
attach:附加数据,主要用于notify的过程进行相关数据操作
body:下单内容
nonce_str:随机字符串(一般12位足够)
notify_url:支付成功后,微信服务器与我们这边服务器进行通讯的程序页面地址
openid:发起支付的客户的openid
out_trade_no:订单编号(随便设定一个不重复的编号即可,纯数字或字母数字组合)
total_fee:支付金额(记得需要乘以100,入库时记得除以100)
9、Get_Token()
获取通用access_token,这个与客户授权个人基本资料给第三方时的access_token有所不同,别混为一谈
10、Get_Ticket(ByVal AccessToken)
获取最新jsapi_ticket,变量:AccessToken 属于通用access_token
11、Get_RedirectUrl(ByVal CallUrl)
封装的登陆或授权URL,返回一个与微信服务器通讯后将code返回到callUrl内。
12、Get_Token_OpenID(ByVal Code)
Get_Token_OpenID:返回Json数据
可以得到token、openid
此处获取用户的token与通用token是不同(如没有开通第三方开发,无法获取到用户UnionID)
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
正确放回:{ "access_token":"ACCESS_TOKEN", "expires_in":7200, "refresh_token":"REFRESH_TOKEN", "openid":"OPENID", "scope":"SCOPE" }
错误返回:{" errcode":40029,"errmsg":"invalid code" }
13、GetUserInfo(ByVal token_openid_Json)
GetUserInfo:返回用户信息Json
获取用户的昵称、性别、国家、省份、城市、头像
sex : 用户的性别,值为1时是男性,值为2时是女性,值为0时是未知headimgurl:http://wx.qlogo.cn/mmopen/******/46 { 用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),
用户没有头像时该项为空。若用户更换头像,原有头像URL将失效。}
privilege : 用户特权信息,json 数组,如微信沃卡用户为(chinaunicom)
unionid : 只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。
14、WxSend(ByVal u_openid, ByVal u_token, ByVal u_text)
发送纯文本信息
POST方式请求
u_openid:用户openid
u_token:通用token
u_text:发送的内容
15、SendPicText(ByVal u_openid, ByVal u_token, ByVal u_title, ByVal u_description, ByVal u_url, ByVal img_url)
发送图文模板信息
POST方式请求
u_openid:用户openid
u_token:通用token
u_title:标题
u_description:描述
u_url:跳转地址
img_url:缩略图
16、SendModeMessege(ByVal iopenid, ByVal itemplate_id, ByVal iurl, ByVal itopcolor, ByVal idata, ByVal itoken)
POST方式请求
iopenid:用户openid
itemplate_id:模板ID
iurl:点击消息跳转的url
itopcolor:标题颜色
idata:模板格式数据(Json格式)
itoken:通用token
17、IfCancelWX(ByVal u_openid, ByVal u_token)
检测是否取消关注微信公众号
1 = 关注,0 = 取消关注,2 = 非法openid
上述均为Function函数,且均为Public公共函数,还有一些比较复杂算法的Private Function或Sub函数就没写出来了,外部不可以单独调用,都是配合Public函数的一些函数或方法。
接下来的博文就是针对WeixinDLL这个组建内的方法应用介绍,会直接上代码。
有不足之处,大家多多指教,ASP项目与微信服务号对接开发的技术讨论可以加V信:z18670092211