2017-03-18 21:27:49 redbelt 阅读数 1801
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27856 人正在学习 去看看 秦子恒


1.浏览器js 请求java的islogin 接口
2.java 从session 中获取当前用户
3.能获取到说明已经登录
4.不能获取到说明没有登陆
5.返回一个result
6.resuel.code == 200 是已经登录
7.result.code == 400 是没有登录
8.已经登录的就不说了,说下没有登陆情况
9.浏览器js根据result.code == 400 判断没有登录
10.在浏览器端进行跳转 window.location.href = result.redirect_url
11.result.redirect-url 是微信的接口,如下
12. https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxb3549eaaee11457a&redirect_uri=http://jiezhao.xtake.cn/weixin/login&response_type=code&scope=snsapi_base&state=snsapi_base|http://localhost:3000/dev/index.html#wechat_redirect
13.浏览器js直接进行跳转了 get请求
14.这里请求的是微信的服务器 response_type告诉微信我现在是想要code
15.微信知道了之后,进行一系列判断,就能在 12 那个页面上进行再次跳转,你可以理解成这样:
16.你get请求 12 的地址后,微信的控制层 拿到你传进来的几个参数,appid 是认证过的,好了 那就没问题了,微信服务器生成一个随机的code,然后把这个code 和请求传过来的redirect_url,state 原封不动的一并传到了返回的页面上,页面上的js无论通过什么样的形式都能获取到刚刚传过来的生成的code和redirect_url以及state,这样一来js 就能在这个页面上直接进行window.location.href = 传过来的redirect_url?code=[传过来的code]&state=[传过来的state]
17.到这里就简单了,因为redirect_url 和state 是原封不动的传过来的,所以到现在的请求连接就是我们自己网站了。并且带着参数 code state
18.我们自己的服务器要针对redirect_url 写响应的controller
19.比如我们这里的连接是 jiezhao.xtake.cn/weixin/login?code=xxxx&state=xxxxx
20.这个时候就进入到我们的业务层的了
21我们在controller 中能根据code 获取access_token,是在controller中通过httpClient 请求如下连接完成的:(注意是在controller层请求的)
22.https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
23.上面的这个请求中填上自己的appid,sectrt 以及controller传过来的CODE,就能获取到access_token
24.这是正确时返回的数据json
25.{ "access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE" }
26.里面有access_token ,有效时长,refresh_token(用来刷新token),还有一个很重要的openid ,这个openid 就是当前微信用户的唯一标识啊,这也从一定程度上说明access_token 是面向单一用户的。这个基础的access_token有这本质的区别,真实坑爹啊。scope 是snsapi_base 或者 snspai_userinfo
27.有了access_token 和用户的openid 就能真正的进入业务层。
==========================华丽分割线===========================
28.我们简称25 中的json包是access_token对象
29.先是检验了access_token 是否还有效,无效的话能通过对象中的refresh_token 进行刷新,从而获取最新的 access_token
30.查看scope的类型是 snsapi_base 还是 snsapi_userinfo
31.以下我用伪代码描述
accessToken = 通过code获取accessToken(code)
if(accessToken is 失效) {
重新获取AccessToken

if (accessToken 的scope 是 snspai_base) {
openid = accessToken.getopenid()
业务user = userservice.getUserBy(openid)
if(业务user == null) {
//说明该微信用户在我们的业务系统中并不存在,我们想不他直接存进来
//想要存起来 我们不想仅仅知道openid 还想知道用户头像以及更详细的信息。
//这时候snspai_base 的scope 已经不够用了,需要能提供更详细信息的 . //nsapi_userinfo scope
//然后。构建像12 中一样的url 不过scope 改成了 snsapi_userinfo
snsapi_userinfo_url = 构建url();
// 然后使用WebUtils.issueRedirect()这个工具能在后台进行请求
//这个时候思考
//请求了这个构建好的类似于12 的这个连接之后就又进入了12之后的步骤。
//也就是说如果用户没有登录,为了拿到更详细的用户信息,
//重新获取snsapi_userinfo 的 scope 的access_token

} else {
}//后来的写到程序上面的注释上了

2018-08-15 11:08:38 yuge486 阅读数 220
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27856 人正在学习 去看看 秦子恒

微信小程序官方文档

一、注册微信开发者平台账号

二、完善小程序信息:小程序管理后台

三、获取appid:“设置”-“开发设置” 

四、打开“微信开发者工具”,新建项目

五、进入到项目首页

六、代码构成

自动生成的目录结构如下:

├── pages
|   ├── index
|   |   ├── index.json  index 页面配置
|   |   ├── index.js    index 页面逻辑
|   |   ├── index.wxml  index 页面结构
|   |   └── index.wxss  index 页面样式表
|   └── log
|       ├── log.json    log 页面配置
|       ├── log.wxml    log 页面逻辑
|       ├── log.js      log 页面结构
|       └── log.wxss    log 页面样式表
├── app.js              小程序逻辑
├── app.json            小程序公共设置
└── app.wxss            小程序公共样式表
  • .json 后缀的 JSON 配置文件

app.json是当前小程序的全局配置,包括了小程序的所有页面路径、界面表现、网络超时时间、底部 tab 等。属性文档

pages: 用于描述当前小程序所有页面路径,这是为了让微信客户端知道当前你的小程序页面定义在哪个目录。pages 字段的第一个页面就是这个小程序的首页(打开小程序看到的第一个页面)
window: 定义小程序所有页面的顶部背景颜色,文字颜色定义等。
{
  "pages":[
    "pages/index/index",
    "pages/logs/logs"
  ],
  "window":{
    "backgroundTextStyle":"light",
    "navigationBarBackgroundColor": "#fff",
    "navigationBarTitleText": "WeChat",
    "navigationBarTextStyle":"black"
  }
}

2>工具配置 project.config.json,可配置一个性化配置,例如界面颜色、编译配置等等。属性文档

{
	"description": "项目配置文件。",
	"packOptions": {
		"ignore": []
	},
	"setting": {
		"urlCheck": true,
		"es6": true,
	},
	"compileType": "miniprogram",
	"libVersion": "2.2.1",
	"appid": "wxdda21eb8b323db99",
	"projectname": "GrapefruitRecord",
	"isGameTourist": false,
	"condition": {
	}
}

3>页面配置 page.json,可独立定义每个页面的一些属性,例如导航栏颜色、是否允许下拉刷新等等。属性文档

{
  "navigationBarTitleText": "查看启动日志"
}

 

  • .wxml 后缀的 WXML 模板文件

类似HTML,用来描述当前这个页面的结构,由标签、属性等等构成。也存在着不同点:

标签名不同,提供了包装好的组件标签

不同的属性和表达式 属性文档

 wx:if 实现控制语句比如:if/elsefor

{{ }} 实现数据绑定

 

  • .wxss 后缀的 WXSS 样式文件

类似CSS,用来描述页面的样子,具备CSS的大部分特性并进行了扩展 属性文档

新增了尺寸单位 rpx(手机设备的屏幕会有不同的宽度和设备像素比,免去像素换算的烦恼

提供了全局的样式和局部样式

仅支持部分 CSS 选择器

  • .js 后缀的 JS 脚本逻辑文件

用来处理这个页面和用户的交互事件说明文档

七、小程序的启动流程

整个小程序只有一个 App 实例,是全部页面共享的,注册程序APP

八、页面Page

Page 是一个页面构造器,这个构造器就生成了一个页面。在生成页面的时候,小程序框架会把 data 数据和 index.wxml 一起渲染出最终的结构,于是就得到了你看到的小程序的样子。

onLoad方法:页面渲染完成之后执行

Page({

  /**
   * 页面的初始数据
   */
  data: {
    
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {
    
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {
    
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
    
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {
    
  }
})

九、组件

十、小程序API

可以很方便的调起微信提供的能力,例如获取用户信息、微信支付等等

需要注意的是:多数 API 的回调都是异步,你需要处理好代码逻辑的异步问题

 

 

 

 

 

 

 

2017-03-06 11:27:24 zhuming3834 阅读数 4552
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27856 人正在学习 去看看 秦子恒

流程

  1. 用户扫码或者直接点击链接进入我们的入口页面;
  2. 进入授权登录页面,用户点击授权登录按钮;
  3. 微信会自动将我么的网页授权域名后增加参数;
  4. 根据微信给的code去获取当前登录的微信用户的用户信息。

流程图

具体操作过程

1.配置网页授权域名
图1
图2
这里的域名设置只能设置一个,要求就按照微信的操作就可以。由于这个域名还是公司的,所以这里都马赛克处理了。
我们需要确保我们获取了权限
开发–>权限接口–>网页服务–>网页授权
图
2.配置txt路径可以访问
我的项目目录:
图3
微信的要求:wx.qq.com/mp/MP_verify_2poeJ5jQBozaGbNV.txt
我使用的Node.js+Express的框架,可以看这里之前的一些文章Node.js这里有Express的安转和新建项目、路由等。

router.all('/mp/MP_verify_xxxxx.txt', function(req, res, next) {
    res.sendfile("./wx/MP_verify_xxxxx.txt");
});

当我们在浏览器输入:xxx.cn/mp/MP_verify_xxxxx.txt的时候可以看见里面的信息。这个感觉是微信那边需要验证我们的网页授权域名是否设置正确。
这一步
3.阅读网页网页授权流程
微信网页授权文档大家先仔细看看文档。
- 用户同意获取code
这里我们需要严格的按照微信的要求谁知url路径:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
尤其注意:由于授权操作安全等级较高,所以在发起授权请求时,微信会对授权链接做正则强匹配校验,如果链接的参数顺序不对,授权页面将无法正常访问。这里也就是我在流程介绍里面的第一点介绍的入口页面。
之后会跳转到微信授权登录的页面
图3
点击授权登录按钮之后就会跳转到xx.cn/mp的页面这里我们就可获取到code了。
- 获取用户信息
获取用户信息其实基本都是后台做的事,因为微信不允许我们子啊前台调用微信的接口,不管怎么搞都是跨域,而且微信也说了这个需要在后台操作。
剩下的步骤看文档就很明确了。我的后台代码。

/*
 * 根据code获取微信用户的用户信息
 */
router.get('/mp/getUserInfo', function(req, res, next) {
    var param = req.query || req.params; 
    var code = param.code;
    var url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' + wxConfig.AppID + '&secret=' + wxConfig.Secret + '&code=' + code + '&grant_type=authorization_code';
    request(url, function (error, response, access_token_body) {
        if (!error && response.statusCode == 200) {
            var access_token_data = JSON.parse(access_token_body); 
            // 获取access_token后 就做缓存
            // access_token 有效期是7200s
            var userinfoUrl = 'https://api.weixin.qq.com/sns/userinfo?access_token=' + access_token_data.access_token + '&openid=' + access_token_data.openid + '&lang=zh_CN ';
            request(userinfoUrl, function (error, response, userinfo_body) {
                if (!error && response.statusCode == 200) {
                    var userinfo_data = JSON.parse(userinfo_body); 
                    res.end(JSON.stringify(userinfo_data));
                }
            })
        }
    })
});
前台只需要调用getUserInfo这个接口,传入code就可以获取到了。这里关于access_token的时效性还没处理。 这里我是直接把微信返回的数据给了前台处理。

最后

至此,微信网页开发–获取微信用户信息就介绍完了。
由于是第一次做微信网页开发,中间遇见过跨域的问题(上面有说为什么跨域),也不知道具体流程是怎样的,基本就是一边踩坑一边总结出来的流程。

2016-09-28 13:08:56 wuqinghua1109 阅读数 221
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27856 人正在学习 去看看 秦子恒
一、自动回复
1、首先登陆微信公众号如果将第三方基本配置启用,那么微信公众平台的基本功能就不能用了
2、因为订阅号有一个接口的限制 自带功能十分有限而且结合我们个人网站也不好接,不过微信给了我们很多接口,并且接口还十分丰富所以我

们使用第三方开发工具进行授权接口和功能权限使我们更好地完成公众号的功能开发和运营来调用这个丰富的接口
3、由于权限的限制,微信也给了我们一个测试的开发者工具然后打开开发者工具 进入公众平台测试账号进行登陆
4、我们可以看到接口信息配置,首先我们将接口文档打开  (1)点击开始开发 (2)打开接入指南 (3)下载验证服务有效期的demo (4)解压上传到

线上文件中
5、由于测试的原因首先要将验证服务器地址的有效性给跳过 调用自动回复的方法 我们将发送的信息组成xml类型发送给微信 微信然后将我们想

要发送的信息给展示出来了 由于我们在发送消息的时候给了一个文本类型 所以微信在回复的时候给我们展示的是文本类型的消息

二、创建微信菜单栏
1、首先创建一个demo然后将调用接口的路径填写到demo中 定义常量appid和appsecret 在浏览器执行输出的路径 请求获取到access_token和

expires_ir(过期时间)的值 进行使用时建议使用缓存
2、调用自定义菜单创建的接口进行粘贴复制修改路径中的token值将刚获取的token填入当前路径 将创建菜单的json串进行传值用post方法进行

提交 (取消关注重新关注就生成菜单栏了)

三、微信上传图片   
 首先创建一个demo 然后将上面获取的token展示到当前页
 获取接口调用请求的url路径 将当前token值填写入url路径中的token 然后将
 图片类型改成image类型
 然后定义图片路径 用curlpost进行上传图片
 

四、获取微信中的个人信息
  首先打开网页授权获取用户基本信息,然后进入用户同意授权的页面获取code将url粘到自己的demo中将获取的appid定义成变量名,修改路径

中的appid 然后将redirect_url指定道自己指定的路径进行处理 然后改scope的参数类型很多自己挑选 因为连接中有两个地址所以会报错所以用

urlencode处理自定义的路径 然后执行出来一个授权页面 点击关注 就拿到了access_token的值
 进入处理页面 将appid和appsecret引入到当前页面中 修改url地址中的appid和appsecret值 json
转换成数组让后从json中调出access_token和openid
 拉取用户信息的url填写到当前页面并进行修改 完成之后并执行当前路径 就获取到用户全部信息了
 
 




 


2016-12-22 10:36:39 zfh4686530 阅读数 252
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27856 人正在学习 去看看 秦子恒

微信接口简单说,是微信公众平台向第三方开发者提供的一个用户资源数据及功能的访问/使用权限。通过对开发者提供开放统一的API接口环境,来帮助微信第三方开发者访问微信公众平台的功能和资源,以达到充分自由的运用微信公众平台用户资源及功能的目的。

在微信上,要实现这一目的,需要开启“服务器配置”一旦开启了服务器配置,微信平台自带的自动回复、自定义菜单等功能全部失效,所有的事件推送都会被转发到你所配置的服务器地址URL上。
AppID是应用ID,也就是微信开发者编号的意思,在微信中主要用于创建微信菜单等。

AppSecret是应用密匙,与AppID是相配合的,意思可理解为这是私密的应用编号。

URL服务器地址是微信服务器像开发者服务器推送消息和事件的地址,可理解为你家的住址。这里没什么特别要求,无论你使用什么语言开发,只要能通过HTTP服务的80端口返回符合微信要求的XML信息即可。

Token令牌可理解为用来验证安全接头暗号,让微信服务器知道对方就是我要找的人。

EncodingAESKey可理解为暗语加密交流,以免你与用户之间的交互信息被第三方获取到后泄露敏感数据。

梳理下过程,当微信用户给你的微信公众号发送消息后,消息到达微信服务器被处理成XML数据包并转发给开发者服务器(URL),开发者服务器接收到数据包后就会把用户消息经过一系列的逻辑处理并再转送给微信服务器,最后微信服务器再推送给用户

数据交互的流程:用户发送消息—到达微信服务器—转发给开发者服务器—转送微信服务器—推送给用户

作者:宇天行

本文首发地址:http://www.huceo.com/post/383.html

没有更多推荐了,返回首页