亲历H5移动端游戏微信支付接入及那些坑(二)——获取Openid和授权

时间:2022-12-14 01:56:24

第一篇中将一些坑说明,那么这篇开始正式进入接入步骤。具体的参数说明,我不会列出,毕竟微信官方文档都有,我想大家都看的懂,而且这接口也有可能微信会变动,所以不列出来,也是不想引起大家的误解,接入步骤只起一个抛砖引玉的作用。

接入步骤

获取OpenId和授权。首先聊一下OpenId,这个东西相当于一个用户id,只是,它并不是用户的微信号,也不是用户在微信后台的标识(至少不全是)。openid是当用户,经过授权后,相对于某个公众号的用户标识。换句话说,同样的用户,对于不同的公众号,其openid是不一样的。

当然,微信也可以使同一用户,在不同公众号下产生相同的openid,这个我们暂时不讨论

其次,access_token,这是一个相当于授权凭证的东西,好比,你只有拿着这个凭证去找微信的人(API)办事,没有这个凭证,根本没人鸟你(很有官僚脾气啊)。

(一)申请公众号支付

这个步骤就不多废话了,首先当然要申请公众号,认证,然后申请开通支付,开通登录获取获取用户授权等

  1. 在下图示例中,配置域名 
    亲历H5移动端游戏微信支付接入及那些坑(二)——获取Openid和授权 
    亲历H5移动端游戏微信支付接入及那些坑(二)——获取Openid和授权 
    图2中,需在网页授权域名处填写回调网页地址所在的域名,微信的解释是“用户在网页授权页同意授权给公众号后,微信会将授权数据传给一个回调页面,回调页面需在此域名下”。也就是说,我们提供给微信的URL(下面第二步中的URL),必须在这个域名下,否则是不能成功的。

  2. 设置js安全回调域 
    同样,上图中的JS接口安全域名中要填写我们的域名地址,微信的解释为“设置JS接口安全域名后,公众号开发者可在该域名下调用微信开放的JS接口”。也就是说,我们调用微信API的页面,必须位于此处填写的JS接口安全域名中的域名下

  3. 获取公众号id(也是后面要用的appid),公众号密钥(后面所说的appscret)

  4. 配置支付授权目录,微信的说明是“所有使用公众号支付方式发起支付请求的链接地址,都必须在支付授权目录之下”。意思和2中类似,意思是微信向我们推送支付结果的,由我们提供的回调页面地址必须在此处填写的域名下。亲历H5移动端游戏微信支付接入及那些坑(二)——获取Openid和授权

(二)获取OpenId

  1. 首先获取code,微信给出了前述第二个地址

    https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=URL&response_type=code&scope=snsapi_base&state=STATE&connect_redirect=1#wechat_redirect

    只需将上述连接中的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

  2. 使用code来获得access_token和openId

    https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

    同样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和授权的更多相关文章

  1. 亲历H5移动端游戏微信支付接入及那些坑(一)——支付方式与坑

    最近项目进入中后期,开始接入支付.要求是使用微信支付,呵呵,好笑的是不知老板从哪里听来的,居然和我说只要是熟手,接个微信支付两小时搞定,我只能再次呵呵.先不说支付处理逻辑,而且公司本来也没现成的接入模 ...

  2. 亲历H5移动端游戏微信支付接入及那些坑(四)——参考文档

    写完三篇后,我觉得微信支付的文档确实比较乱,所以在此做一个整理汇总 支付流程相关文档 一下文档已经按照接入顺序排列,请依次参考阅读 微信公众号网页授权两种access_token区别,获取用户open ...

  3. 亲历H5移动端游戏微信支付接入及那些坑(三)——支付接入

    终于到接入支付了,小小的一个微信支付,居然也写了3篇,好长,好累. 接入环境 对接入环境,前端的话,应该是以js为主吧,也有可能是,PHP,Java,C++,或者C#都可以.为什么在此特意提一下接入环 ...

  4. C#开发微信门户及应用(32)--微信支付接入和API封装使用

    在微信的应用上,微信支付是一个比较有用的部分,但也是比较复杂的技术要点,在微商大行其道的年代,自己的商店没有增加微信支付好像也说不过去,微信支付旨在为广大微信用户及商户提供更优质的支付服务,微信的支付 ...

  5. paip.微信菜单直接跳转url和获取openid流程总结

    paip.微信菜单直接跳转url和获取openid流程总结   #------不能直接跳转,贝儿提示不安全的链接.. #-------使用auth跳转. //todox 直接转到..  direct ...

  6. 微信支付接入的总结 —— NATIVE & MWEB & JSAPI

    这段时间工作中需要对接微信支付,而且要多个端同时进行接入,web端,手机浏览器,微信浏览器,所以研究了下.不同场景选择合适的接入方式是必须的.https://pay.weixin.qq.com/wik ...

  7. Android app 第三方微信支付接入详解

    微信支付做了好几遍了,都没有出现什么棘手的问题,下面一一为大家分享一下,欢迎吐槽. 还是老样子,接入微信的支付要第一步添加微信支付官方的包libammsdk.jar 首先就处理略坑的一个问题,app应 ...

  8. Wechat 微信端调用“微信支付接口”的正确方式

    微信端的项目中,比如微信商城之类的,肯定会涉及到微信支付这一块: 下面直接上详细的代码: var data = {--}; // 调用微信支付需要的数据 function onBridgeReady( ...

  9. jsapi 调起微信支付的的踩坑

    问题: 公众微信号调起微信支付的时候,有的时候调起支付成功,有的时候调起支付失败.利用抓包工具抓取数据显示授权和调用后台的微信预支付订单接口都成功并且都返回正确的数据.但是调起支付的时候传入的data ...

随机推荐

  1. Linux服务器安装笔记 汇总

    系统 Ubuntu笔记:http://www.cnblogs.com/newsea/p/4746967.html CentOs笔记:http://www.cnblogs.com/newsea/p/47 ...

  2. javascript undefined 和void0

    underfine === void 0 并不完全成立 undefined不是关键字  不是保留字   在IE低版本下可以被赋值 所以代码中一般以void 0 代替undefined

  3. Qt 动画框架

    最近一个项目中的需要做动画效果,很自然就想起来用qt animation framework .这个框架真的很强大.支持多个动画组合,线性动画,并行动画等.在此总结一下使用该框架一些需要注意的地方: ...

  4. Bootstrap系列 -- 26. 下拉菜单标题

    Bootstrap下拉菜单中使用 dropdown-header 来显示菜单标题,和上一篇说道的分割线一样 <div class="dropdown"> <but ...

  5. 问自己----也是自己该怎么走的路(phper)

    1.首先看了PHP的源码API函数,对于许多口水仗的争论一笑而过,只是停留在脚本级别上的什么效率,安全...之争完全就是无稽之谈,没有深入理解API,所有的争论都是臆测和不科学的态度.你做了吗? 2. ...

  6. Java 8新特性前瞻

    快端午小长假了,要上线的项目差不多完结了,终于有时间可以坐下来写篇博客了. 这是篇对我看到的java 8新特性的一些总结,也是自己学习过程的总结. 几乎可以说java 8是目前为止,自2004年jav ...

  7. action解耦方式

    ServletAction方式,必须要有Servlet容器作支持 package com.hanqi.action; import javax.servlet.ServletContext; impo ...

  8. 消息摘要技术&lpar;MD5&rpar;

    1.使用消息摘要技术对密码加密 数据库存储的是经过消息摘要技术加密之后的信息, 避免保存密码明文,提升了系统安全性 必要性说明: 如果存储明文密码,数据库系统管理员和攻破系统的黑客是可以拿到你的所有信 ...

  9. 【Spring学习】【Java基础回顾-数据类型】

    Java基础回顾过程中,之前对于Java相关基础知识都是从这个人的博客看一些,那边的内容看一下,觉得不够系统化,决定用xmind脑图的形式,将Java基础知识回顾的作为一个系列,当前正在做的会包含: ...

  10. html内嵌框架

    html内嵌框架 <iframe>标签会创建包含另外一个html文件的内联框架(即行内框架),src属性来定义另一个html文件的引用地址,frameborder属性定义边框,scroll ...