因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

ASP程序写的项目与微信服务号(公众号)完美结合。仅需一个DLL组建WeixinDLL的更多相关文章

  1. .NET Core之微信支付之公众号、H5支付篇

    前言 本篇主要记录微信支付中公众号及H5支付全过程. 准备篇 公众号或者服务号(并开通微信支付功能).商户平台中开通JSAPI支付.H5支付. 配置篇 公众号或者服务号中 -------开发----- ...

  2. 微信开放平台 公众号第三方平台开发 教程四 代公众号调用接口的SDK和demo

    原文:微信开放平台 公众号第三方平台开发 教程四 代公众号调用接口的SDK和demo 教程导航: 微信开放平台 公众号第三方平台开发 教程一 平台介绍 微信开放平台 公众号第三方平台开发 教程二 创建 ...

  3. 微信系列之公众号Token验证

    微信系列之公众号Token验证 pycharm连接线上服务器开发 开发过程笔记 参考资料 python3安装web.py可以选择安装`pip install web.py==0.40.dev0 pyc ...

  4. 微信支付(公众号支付APIJS、app支付)服务端统一下单接口java版

    一.微信公众号支付APIJS: 要完整的实现微信支付功能,需要前后端一起实现,还需要微信商户平台的配置.这里只是涉及服务端的代码. jar包:pom.xml <!-- ↓↓↓↓↓↓↓↓ 支付相关 ...

  5. 微信程序开发系列教程(四)使用微信API创建公众号自定义菜单

    大家可能经常看到一些微信公众号具有功能强大的自定义菜单,点击之后可以访问很多有用的功能. 这篇教程就教大家如何动手做一做. 这个教程最后实现的效果是:创建一个一级菜单"UI5", ...

  6. 【weixin】微信企业号和公众号区别和关系是什么?

    在移动互联网快速发展和智能手机普遍应用的时代环境下,随着微信平台应用不断扩大和微信用户的迅速增加,微信公众号运营也有了很大的发展,企业.机构和个人纷纷迈入微信公众号运营的行列.微信公众号就是在微信公众 ...

  7. 【微信SEO】公众号也能做排名?

    [写于2016年8月] 最近,微信团队发出一则公告,开放公众号运营者一年内更改公众号名一次,这对不少名字起的奇葩名字(包括dkplus)的公众号来说是一件好事. 为什么说是好事呢?公众号名字直接关联到 ...

  8. .net 微信支付(公众号支付)遇到的问题

    啥也不说了搬砖的都知道老板说是什么就是什么 最近我老板让饿哦做一个微信支付的功能  还带微信上面京东众筹活动的那种,我买东西别人出钱的那种 然后用微信支付 我是新手之前也没有做过这个 所以估计着过程中 ...

  9. 【微信支付】公众号、商户基础配置和流程(包括设置支付授权目录、测试支付目录和白名单、JS接口安全域名、授权回调域名等)

    一.使用场景以及说明 使用场景:商户已有H5商城网站,用户通过消息或扫描二维码在微信内打开网页时,可以调用微信支付完成下单购买的流程. 说明:1.用户打开图文消息或者扫描二维码,在微信内置浏览器打开网 ...

随机推荐

  1. arti车是大幅度发地方大幅度发

    转: arti车是大幅度发地方大幅度发 arti车是大幅度发地方大幅度发 转: arti车是大幅度发地方大幅度发

  2. 剑指 Offer 33. 二叉搜索树的后序遍历序列 + 根据二叉树的后序遍历序列判断对应的二叉树是否存在

    剑指 Offer 33. 二叉搜索树的后序遍历序列 Offer_33 题目详情 题解分析 本题需要注意的是,这是基于一颗二叉排序树的题目,根据排序二叉树的定义,中序遍历序列就是数据从小到大的排序序列. ...

  3. SpringBoot 开发提速神器 Lombok+MybatisPlus+SwaggerUI

    导读 Lombok:可以让你的POJO代码特别简洁,不止简单在BO/VO/DTO/DO等大量使用,还有设计模式,对象对比等 MybatisPlus:增加版Mybatis,基础的数据库CRUD.分页等可 ...

  4. 修改 Hosts 解决 Github 访问缓慢问题

    背景 最近访问 Github 经常出现访问速度慢的问题,甚至会出现无法连接的情况.有一天,在一次家常聊天中提到了这个事情,有一位热心的 Gitee 朋友就说:你改一下 Hosts 文件就可以了.修改了 ...

  5. vue 页面生成图片保存

    需求:将页面中的元素转成图片,支持保存或下载.要求下载的图片包含页面背景,头像,用户名,文本为"我的邀请码"和个人二维码. 实现:将页面绘制到canvas中,生成base64图片链 ...

  6. PTA 将数组中的数逆序存放

    7-1 将数组中的数逆序存放 (20 分)   本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的元素. 输入格式: 输入在第一行中给出一个正整数n(1). ...

  7. 玩玩CSS,写一个图标堆叠效果

    遇到有人问如下效果怎么写,一时兴起,自己写一个玩玩. 看到这个样子,首先应该考虑一下 DOM 结构,以我的观点,把DOM结构设计为如下形式: <div> <img src=" ...

  8. 写个小程序01 | 注册微信小程序

    出于兴趣和学习目的,我想自己做一个基于"子弹笔记(Bullet Journal)"的小程序.由于个人开发经验很有限,只在课程作业中写过 web 前端,所以也不知道多久能写出来(逃) ...

  9. 亲测有效,解决80端口被svchost.exe进程占用的问题,网上的方法不行,可以试试这个

    先说网上无效的方法(个人尝试无效,不具有代表性): 网上第一个说法:把IIS给关了,Windows10系统本身IIS是处于禁用状态的,并且没有额外安装IIS和启动IIS. 网上第二个说法:和SQL S ...

  10. 经过努力+作弊,我终于完成了leetcode通过率最低的一道题

    前两天刷leetcode的时候,突发奇想,leetcode中最难的一道题是什么样子的呢? 于是,我就将所有题目(https://leetcode-cn.com/problemset/all/ )按照通 ...