一、获取apikey,appsecret与商户号

注册公众号、商户号

二、获取用户的OpenId

1.设置【授权回调页面域名】

官方解释:用户在网页授权页同意授权给公众号后,微信会将授权数据传给一个回调页面,回调页面需在此域名下,以确保安全可靠。回调页面域名不支持IP地址。

2.用户同意授权

我是把这个url写在微信菜单下的,当进入这个页面的时候就让用户同意。注意:好像是静默授权的,用户不知道

参数:appid:公众号的唯一标识

redirect_uri:重定向的url,就是授权后要跳转的页面

scope:应用授权作用域

snsapi_base:不弹出授权页面,直接跳转,只能获取用户openid

snsapi_userinfo:弹出授权页面,可通过openid拿到昵称、性别、所在地

state:重定向后带的参数

2.用户同意后会产生一个code,只有分钟时间的有效期。

String code = request.getParameter("code")

3.code换openId

/**

* 常量类

* @author rory.wu

*

*/

public class Constants {

// 第三方用户唯一凭证

public static String appid = "";

// 第三方用户唯一凭证密钥

public static String appsecret = "";

//商户ID

public static String mch_id="";

//获取openId

public static String oauth_url = "https://api.weixin.qq.com/sns/oauth/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code";

}

/**

* 通用工具类

* @author rory.wu

* @version .

* @since 年月日

*/

public class CommonUtil {

private static Logger log = Logger.getLogger(CommonUtil.class);

public static JSONObject httpsRequestToJsonObject(String requestUrl, String requestMethod, String outputStr) {

JSONObject jsonObject = null;

try {

StringBuffer buffer = httpsRequest(requestUrl, requestMethod, outputStr);

jsonObject = JSONObject.fromObject(buffer.toString());

} catch (ConnectException ce) {

log.error("连接超时:"+ce.getMessage());

} catch (Exception e) {

log.error("https请求异常:"+e.getMessage());

}

return jsonObject;

}

private static StringBuffer httpsRequest(String requestUrl, String requestMethod, String output)

throws NoSuchAlgorithmException, NoSuchProviderException, KeyManagementException, MalformedURLException,

IOException, ProtocolException, UnsupportedEncodingException {

URL url = new URL(requestUrl);

HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();

connection.setDoOutput(true);

connection.setDoInput(true);

connection.setUseCaches(false);

connection.setRequestMethod(requestMethod);

if (null != output) {

OutputStream outputStream = connection.getOutputStream();

outputStream.write(output.getBytes("UTF-"));

outputStream.close();

}

// 从输入流读取返回内容

InputStream inputStream = connection.getInputStream();

InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-");

BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

String str = null;

StringBuffer buffer = new StringBuffer();

while ((str = bufferedReader.readLine()) != null) {

buffer.append(str);

}

bufferedReader.close();

inputStreamReader.close();

inputStream.close();

inputStream = null;

connection.disconnect();

return buffer;

} }

/**

* 获取用户的openId,并放入session

* @param code 微信返回的code

*/

private void setOpenId(String code) {

session.put("code", code);

String oauth_url = Constants.oauth_url.replace("APPID", Constants.appid).replace("SECRET", Constants.appsecret).replace("CODE", String.valueOf(session.get("code")));

log.info("oauth_url:"+oauth_url);

JSONObject jsonObject = CommonUtil.httpsRequestToJsonObject(oauth_url, "POST", null);

log.info("jsonObject:"+jsonObject);

Object errorCode = jsonObject.get("errcode");

if(errorCode != null) {

log.info("code不合法");

}else{

String openId = jsonObject.getString("openid");

log.info("openId:"+openId);

session.put("openId", openId);

}

}

oauth_url返回的格式是:

{

"access_token":"ACCESS_TOKEN",

"expires_in":,

"refresh_token":"REFRESH_TOKEN",

"openid":"OPENID", "scope":"SCOPE",

"unionid": "o_bmasdasdsad_sgVthMZOPfL"

}

Code无效时:

{

"errcode":

,"errmsg":"invalid code"

}

以上内容就是脚本之家的小编给大家分享的微信公众号支付(一)如何获取用户openId,希望大家喜欢。

java微信支付 openid_微信公众号支付(一)如何获取用户openId相关推荐

  1. 微信公众号网页授权,获取用户信息以及openid -- PHP后台

    微信公众号网页授权,获取用户信息以及openid 这几天做项目,想通过公众号的appid获取用户的openid就,然后在网上查资料,问朋友,最后找到了方法,就是这个网页授权. 起初一直很蒙,这个怎么弄 ...

  2. Java微信支付开发之公众号支付(微信内H5调起支付)

    官方文档 准备工作:已通过微信认证的公众号,必须通过ICP备案域名(否则会报支付失败) 借鉴了很多大神的文章,在此先谢过了 整个支付流程,看懂就很好写了 一.设置支付目录 在微信公众平台设置您的公众号 ...

  3. 微信支付一 :公众号支付1

    微信公众号支付H5调用支付详解 最近项目需要微信支付,然后看了下微信公众号支付,,虽然不难,但是细节还是需要注意的,用了大半天时间写了个demo,并且完整的测试了一下支付流程,下面分享一下微信公众号支 ...

  4. 微信支付开发教程(公众号支付)

    前段时间公司电商项目需要接入微信支付,因此研究了一下如何使用微信支付.和支付宝支付相比,微信支付相对复杂一些,需要配置的东西更多,限制也更多.经过两天的研究,终于搞定微信支付,在这里对于使用微信支付的 ...

  5. 微信公众号,关联网页支付功能(公众号支付)的实现

    公众号支付是用户在微信中打开商户的H5页面,商户在H5页面通过调用微信支付提供的JSAPI接口调起微信支付模块完成支付.应用场景有: 1. 用户在微信公众账号内进入商家公众号,打开某个主页面,完成支付 ...

  6. 微信支付V3==>公众号支付、踩坑、简单记录

    开始! 接支付前,看了微信支付文档(有点乱),也看了一些文章,都是假V3,点进去看demo还是XML格式,坑,不过多描述. V3接起来整体还是有些坑的,不过坑不深,这里简单记录一下,避免忘了再踩! 首 ...

  7. 微信支付之JSAPI公众号支付

    本文首发于CSDN 原文链接:http://write.blog.csdn.net/mdeditor#!postId=51537271 前提 本教程默认以下几点你已经完全满足: 开通了认证后的服务号 ...

  8. 微信支付JSAPI(公众号支付)接口调用

    来看微信支付jsapi接口是怎么调用的 步骤一:获取微信支付四大参数 首先要想支持微信支付,必须拥有两个账号 微信公众平台:账户 公众APPID,APPSECEPT ,微信商户平台商户ID, API密 ...

  9. 微信jsapi支付获取code_微信支付之JSAPI公众号支付详解

    前提 本教程默认以下几点你已经完全满足: 开通了认证后的服务号 服务号开通的微信支付的认证 腾讯给你的邮件中有商户登录的账号和密码 拥有一个可供上传代码和设置回调域名的网站或云服务 有一点点php知识 ...

  10. php 工商银行公众号支付代码_微信支付PHP SDK —— 公众号支付代码详解

    在微信支付 开发者文档页面 下载最新的 php SDK 这里假设你已经申请完微信支付 1. 微信后台配置  如图 我们先进行测试,所以先把测试授权目录和 测试白名单添加上.测试授权目录是你要发起微信请 ...

最新文章

  1. 美团2020年全年财务报告:疫情期间网络营销之下的美团选择进军社区团购
  2. python中ls是什么_使用Python代码实现Linux中的ls遍历目录命令的实例代码
  3. 【1】flink-source读取数据
  4. 这就是搜索引擎--读书笔记五--索引的建立与更新
  5. python 整数输出 d f_如何将数字(10,11,12,13,14,15)分配给Python 3中的字母(A,B,C,D,E,F)?...
  6. Unity2018新功能抢先预览 | Preset功能
  7. js常用处理请求到的数据的方法(即map,filter,find,findIndex,some,every一些常用方法的使用)
  8. SQL Server 加密案例解析
  9. Windows Mobile 6 模拟器绿色中文版
  10. laravel+php+支付功能,Laravel 支付解决方案之如何使用微信支付进行支付 – Laravel学院...
  11. 串口总线舵机之配置舵机
  12. 数据中心弱电设计及审图的注意事项
  13. xsh报告-推荐系统
  14. amos看拟合度在哪里看_Amos软件完结篇!模型无法拟合,拟合指标不佳如何解决?...
  15. 一文搞懂AWS EC2, IGW, RT, NAT, SG 基础篇下
  16. nexus5 博通芯片WIFI详解 (2)
  17. (十二)幸福之家 - 1
  18. 职称计算机pptt应用模块,2016年职称计算机考试PowerPoint单选练习题4
  19. SharkCDN,极速构建 CDN DNS 运营平台
  20. mysql geo_MySQL GEO 字段类型说明及案例

热门文章

  1. java需要数学_学java要数学好嘛?
  2. 计算机科学与技术研究生课表,计算机科学与技术(一级学科)硕士研究生培养方案...
  3. android tabhost用法详解,android Tabhost部件详解
  4. 【KnockoutJS】KnockoutJS 绑定列表数据。实现表头合并,列生成,图片上传等功能
  5. 智鼎在线测评是测什么_人才测评工具和人才测评方法
  6. 鲲鹏BoostKit虚拟化使能套件,让数据加密更安全
  7. 利用easyCHM制作JavaAPI帮助文档
  8. 陈纪修老师《数学分析》 第05章:微分中值定理及其应用 笔记
  9. 电子商业汇票知识问答题
  10. 移动硬盘坏点测试软件,移动硬盘坏道检测修复工具(硬盘坏道检测助手)V1.1 正式版...