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

接入步骤

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

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

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

(一)申请公众号支付

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

  1. 在下图示例中,配置域名 
     
     
    图2中,需在网页授权域名处填写回调网页地址所在的域名,微信的解释是“用户在网页授权页同意授权给公众号后,微信会将授权数据传给一个回调页面,回调页面需在此域名下”。也就是说,我们提供给微信的URL(下面第二步中的URL),必须在这个域名下,否则是不能成功的。

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

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

  4. 配置支付授权目录,微信的说明是“所有使用公众号支付方式发起支付请求的链接地址,都必须在支付授权目录之下”。意思和2中类似,意思是微信向我们推送支付结果的,由我们提供的回调页面地址必须在此处填写的域名下。

(二)获取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. HashMap 与 ConcurrentHashMap

    1. HashMap 1) 并发问题 HashMap的并发问题源于多线程访问HashMap时, 如果存在修改Map的结构的操作(增删, 不包括修改), 则有可能会发生并发问题, 表现就是get()操作 ...

  2. 洛谷 P1138 第k小整数

    题目描述 现有n个正整数,n≤10000,要求出这n个正整数中的第k个最小整数(相同大小的整数只计算一次),k≤1000,正整数均小于30000. 输入输出格式 输入格式: 第一行为n和k; 第二行开 ...

  3. @Param注解在Mybatis中的使用 以及传递参数的三种方式

    第一种: Dao层的方法 public User selectUser(String name,String password); 对应的Mapper.xml <select id=" ...

  4. SQL Server 数据库项目

    ylbtech-.NET Framework: SQL Server 数据库项目 SQL Server 数据库项目 类型:SQL Server 用于创建 SQL Server 数据库的项目 1. 新建 ...

  5. OpenCV教程(48) 特征值匹配

          OpenCV中通过下面的代码,可以匹配两幅的图像的特征值. // Read input images cv::Mat image1= cv::imread("../church0 ...

  6. Hadoop streaming 排序、分桶参数设置

    编写hadoop任务经常需要用到partition和排序.这里记录一下几个参数. 1. 概念 Partition:分桶过程,用户输出的key经过partition分发到不同的reduce里,因而par ...

  7. 初识EntityFramework6【转】

    http://www.cnblogs.com/wujingtao/p/5401132.html 什么是EF? EF是一种ORM(Object-relational mapping)框架,它能把我们在编 ...

  8. iOS开发-消息通知机制(NSNotification和NSNotificationCenter)

    iOS中委托模式和消息机制基本上开发中用到的比较多,一般最开始页面传值通过委托实现的比较多,类之间的传值用到的比较多,不过委托相对来说只能是一对一,比如说页面A跳转到页面B,页面的B的值改变要映射到页 ...

  9. jquery ajax 的 $.get()用法详解

    js文件 $(document).ready(function(){ $("form").submit(function(event) {event.preventDefault( ...

  10. Packagist 镜像使用方法--composer

    镜像用法 有两种方式启用本镜像服务: 系统全局配置: 即将配置信息添加到 Composer 的全局配置文件 config.json 中.见“方法一” 单个项目配置: 将配置信息添加到某个项目的 com ...