亲历H5移动端游戏微信支付接入及那些坑(二)——获取Openid和授权
第一篇中将一些坑说明,那么这篇开始正式进入接入步骤。具体的参数说明,我不会列出,毕竟微信官方文档都有,我想大家都看的懂,而且这接口也有可能微信会变动,所以不列出来,也是不想引起大家的误解,接入步骤只起一个抛砖引玉的作用。
接入步骤
获取OpenId和授权。首先聊一下OpenId,这个东西相当于一个用户id,只是,它并不是用户的微信号,也不是用户在微信后台的标识(至少不全是)。openid是当用户,经过授权后,相对于某个公众号的用户标识。换句话说,同样的用户,对于不同的公众号,其openid是不一样的。
当然,微信也可以使同一用户,在不同公众号下产生相同的openid,这个我们暂时不讨论
其次,access_token,这是一个相当于授权凭证的东西,好比,你只有拿着这个凭证去找微信的人(API)办事,没有这个凭证,根本没人鸟你(很有官僚脾气啊)。
(一)申请公众号支付
这个步骤就不多废话了,首先当然要申请公众号,认证,然后申请开通支付,开通登录获取获取用户授权等
在下图示例中,配置域名
图2中,需在网页授权域名处填写回调网页地址所在的域名,微信的解释是“用户在网页授权页同意授权给公众号后,微信会将授权数据传给一个回调页面,回调页面需在此域名下”。也就是说,我们提供给微信的URL(下面第二步中的URL),必须在这个域名下,否则是不能成功的。设置js安全回调域
同样,上图中的JS接口安全域名中要填写我们的域名地址,微信的解释为“设置JS接口安全域名后,公众号开发者可在该域名下调用微信开放的JS接口”。也就是说,我们调用微信API的页面,必须位于此处填写的JS接口安全域名中的域名下获取公众号id(也是后面要用的appid),公众号密钥(后面所说的appscret)
- 配置支付授权目录,微信的说明是“所有使用公众号支付方式发起支付请求的链接地址,都必须在支付授权目录之下”。意思和2中类似,意思是微信向我们推送支付结果的,由我们提供的回调页面地址必须在此处填写的域名下。
(二)获取OpenId
首先获取code,微信给出了前述第二个地址
只需将上述连接中的AppID填公众号id,URL填我们自己的网页地址,该地址是让微信将结果以http方式返回给我们的地址,必须要在第一步配置的域名下,比如,如果我们的域名是www.domain.com,那么我们的网页地址必须在这个域名的目录下,一级,二级目录都可以
这里使用什么方式来访问该连接视具体项目,但重要的是获得这个http请求的返回,如果成功请求,code会作为参数,添加在我们提供的url后,返回给我们。比如我们的url是www.domain.com/default,那么如果我们请求成功,微信会在该地址后加上参数,www.domain.com/default?code=Code,回调我们的接口,我们的接口所要做的就是获取并处理这个code
需要提的一点,scope这个参数在微信文档中说明,如果只是获得基本的授权,使用snsapi_base,如果要获取用户信息,要使用snsapi_userinfo
使用code来获得access_token和openId
同样APPID填公众号ID,SECRET填公众号的密钥,具体可以在我们的公众号账号中查看获得,而code就是先前我们获得的code。同样,这里是使用POST的方式来获取http请求的返回值。其中包含openid,和access_token
我们的业务逻辑,必须妥善保存和处理openid,和access_token,因为后续的接口(不一定是支付接口)可能会用到。
到这一步为止,我们已经通过了oauth2.0的授权,我们拿到了一个指代用户标识的openid,并且拿到了一个access_token,有了这个token,就相当于我们被微信后台认可,有权限调用微信相关接口。
注意,此处的access_token是对应于每一个不同的用户的。微信中称之为网页授权类型access_token,需要用户授权之后才能拿到。
具体请看我的第一篇文章
亲历H5移动端游戏微信支付接入及那些坑(一)——支付方式与坑
另附上微信关系access_token的文档地址
亲历H5移动端游戏微信支付接入及那些坑(二)——获取Openid和授权的更多相关文章
- 亲历H5移动端游戏微信支付接入及那些坑(一)——支付方式与坑
最近项目进入中后期,开始接入支付.要求是使用微信支付,呵呵,好笑的是不知老板从哪里听来的,居然和我说只要是熟手,接个微信支付两小时搞定,我只能再次呵呵.先不说支付处理逻辑,而且公司本来也没现成的接入模 ...
- 亲历H5移动端游戏微信支付接入及那些坑(四)——参考文档
写完三篇后,我觉得微信支付的文档确实比较乱,所以在此做一个整理汇总 支付流程相关文档 一下文档已经按照接入顺序排列,请依次参考阅读 微信公众号网页授权两种access_token区别,获取用户open ...
- 亲历H5移动端游戏微信支付接入及那些坑(三)——支付接入
终于到接入支付了,小小的一个微信支付,居然也写了3篇,好长,好累. 接入环境 对接入环境,前端的话,应该是以js为主吧,也有可能是,PHP,Java,C++,或者C#都可以.为什么在此特意提一下接入环 ...
- C#开发微信门户及应用(32)--微信支付接入和API封装使用
在微信的应用上,微信支付是一个比较有用的部分,但也是比较复杂的技术要点,在微商大行其道的年代,自己的商店没有增加微信支付好像也说不过去,微信支付旨在为广大微信用户及商户提供更优质的支付服务,微信的支付 ...
- paip.微信菜单直接跳转url和获取openid流程总结
paip.微信菜单直接跳转url和获取openid流程总结 #------不能直接跳转,贝儿提示不安全的链接.. #-------使用auth跳转. //todox 直接转到.. direct ...
- 微信支付接入的总结 —— NATIVE & MWEB & JSAPI
这段时间工作中需要对接微信支付,而且要多个端同时进行接入,web端,手机浏览器,微信浏览器,所以研究了下.不同场景选择合适的接入方式是必须的.https://pay.weixin.qq.com/wik ...
- Android app 第三方微信支付接入详解
微信支付做了好几遍了,都没有出现什么棘手的问题,下面一一为大家分享一下,欢迎吐槽. 还是老样子,接入微信的支付要第一步添加微信支付官方的包libammsdk.jar 首先就处理略坑的一个问题,app应 ...
- Wechat 微信端调用“微信支付接口”的正确方式
微信端的项目中,比如微信商城之类的,肯定会涉及到微信支付这一块: 下面直接上详细的代码: var data = {--}; // 调用微信支付需要的数据 function onBridgeReady( ...
- jsapi 调起微信支付的的踩坑
问题: 公众微信号调起微信支付的时候,有的时候调起支付成功,有的时候调起支付失败.利用抓包工具抓取数据显示授权和调用后台的微信预支付订单接口都成功并且都返回正确的数据.但是调起支付的时候传入的data ...
随机推荐
- 升级pip后出现 ImportError: cannot import name main
原文链接 https://blog.csdn.net/accumulate_zhang/article/details/80269313 在Ubuntu中,升级了pip,再次使用pip 安装相关的 ...
- idea 2018.1破解激活方法,有效期至2099年 idea 激活 破解
最近笔者测试了好多破解Idea的方法,最简单操作方法莫过于用license server激活,但是此类方法对最新的2017.3.2版已经无效了,亲测哦,如下图所示. 针对新版的IntelliJ ID ...
- Verilog 加法器和减法器(6)
为了减小行波进位加法器中进位传播延迟的影响,可以尝试在每一级中快速计算进位,如果能在较短时间完成计算,则可以提高加法器性能. 我们可以进行如下的推导: 设 gi=xi&yi, pi = xi ...
- 对于DQN的三大改进 - 这篇讲的好些
可以看这篇文章: https://blog.csdn.net/u013236946/article/details/73161586 这篇也讲的不错: https://www.cnblogs.com/ ...
- $.getJSON的缓存问题处理
今天遇到jQuery.getJSON的缓存问题.如果其调用的url之前曾经调用过的话,回调函数就会直接在缓存里面取得想要得值,而不是进入到后台,调用存储过程了.这是一个比较郁闷的问题.不修改的话,用户 ...
- 如何使用.net访问Access数据库 (转)
前言:今天整理程序,看到之前写的一个Demo,也不知道是从哪里参考的了,写到这里,留作备用吧. 使用.net访问Access数据库:1.BL层:新增一个DataAccess类. Code].Defau ...
- kafka 主要内容介绍
1. kafka介绍 1.1. 主要功能 根据官网的介绍,ApacheKafka®是一个分布式流媒体平台,它主要有3种功能: 1:It lets you publish and ...
- 命令行修改mysql密码和远程访问
http://jingyan.baidu.com/article/a3a3f8118cea488da2eb8a0a.html
- 让App中增加LruCache缓存,轻松解决图片过多造成的OOM
上次有过电话面试中问到Android中的缓存策略,当时模糊不清的回答,如今好好理一下吧. Android中普通情况下採取的缓存策略是使用二级缓存.即内存缓存+硬盘缓存->LruCache+Dis ...
- Spark 以及 spark streaming 核心原理及实践
收录待用,修改转载已取得腾讯云授权 作者 | 蒋专 蒋专,现CDG事业群社交与效果广告部微信广告中心业务逻辑组员工,负责广告系统后台开发,2012年上海同济大学软件学院本科毕业,曾在百度凤巢工作三年, ...