zoukankan      html  css  js  c++  java
  • 亲历H5移动端游戏微信支付接入及那些坑(二)——获取Openid和授权

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

    接入步骤

    获取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的文档地址

  • 相关阅读:
    HDU2546(01背包)
    HDU4283(KB22-G)
    POJ1651(KB-E)
    POJ2955(KB22-C 区间DP)
    POJ3264(KB7-G RMQ)
    POJ3468(KB7-C 线段树)
    POJ3616(KB12-R dp)
    Ubuntu16.04安装opencv for python/c++
    华中农业大学第五届程序设计大赛网络同步赛-L
    华中农业大学第五届程序设计大赛网络同步赛-K
  • 原文地址:https://www.cnblogs.com/amylis_chen/p/7473543.html
Copyright © 2011-2022 走看看