java微信支付 openid_微信公众号支付(一)如何获取用户openId
一、获取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相关推荐
- 微信公众号网页授权,获取用户信息以及openid -- PHP后台
微信公众号网页授权,获取用户信息以及openid 这几天做项目,想通过公众号的appid获取用户的openid就,然后在网上查资料,问朋友,最后找到了方法,就是这个网页授权. 起初一直很蒙,这个怎么弄 ...
- Java微信支付开发之公众号支付(微信内H5调起支付)
官方文档 准备工作:已通过微信认证的公众号,必须通过ICP备案域名(否则会报支付失败) 借鉴了很多大神的文章,在此先谢过了 整个支付流程,看懂就很好写了 一.设置支付目录 在微信公众平台设置您的公众号 ...
- 微信支付一 :公众号支付1
微信公众号支付H5调用支付详解 最近项目需要微信支付,然后看了下微信公众号支付,,虽然不难,但是细节还是需要注意的,用了大半天时间写了个demo,并且完整的测试了一下支付流程,下面分享一下微信公众号支 ...
- 微信支付开发教程(公众号支付)
前段时间公司电商项目需要接入微信支付,因此研究了一下如何使用微信支付.和支付宝支付相比,微信支付相对复杂一些,需要配置的东西更多,限制也更多.经过两天的研究,终于搞定微信支付,在这里对于使用微信支付的 ...
- 微信公众号,关联网页支付功能(公众号支付)的实现
公众号支付是用户在微信中打开商户的H5页面,商户在H5页面通过调用微信支付提供的JSAPI接口调起微信支付模块完成支付.应用场景有: 1. 用户在微信公众账号内进入商家公众号,打开某个主页面,完成支付 ...
- 微信支付V3==>公众号支付、踩坑、简单记录
开始! 接支付前,看了微信支付文档(有点乱),也看了一些文章,都是假V3,点进去看demo还是XML格式,坑,不过多描述. V3接起来整体还是有些坑的,不过坑不深,这里简单记录一下,避免忘了再踩! 首 ...
- 微信支付之JSAPI公众号支付
本文首发于CSDN 原文链接:http://write.blog.csdn.net/mdeditor#!postId=51537271 前提 本教程默认以下几点你已经完全满足: 开通了认证后的服务号 ...
- 微信支付JSAPI(公众号支付)接口调用
来看微信支付jsapi接口是怎么调用的 步骤一:获取微信支付四大参数 首先要想支持微信支付,必须拥有两个账号 微信公众平台:账户 公众APPID,APPSECEPT ,微信商户平台商户ID, API密 ...
- 微信jsapi支付获取code_微信支付之JSAPI公众号支付详解
前提 本教程默认以下几点你已经完全满足: 开通了认证后的服务号 服务号开通的微信支付的认证 腾讯给你的邮件中有商户登录的账号和密码 拥有一个可供上传代码和设置回调域名的网站或云服务 有一点点php知识 ...
- php 工商银行公众号支付代码_微信支付PHP SDK —— 公众号支付代码详解
在微信支付 开发者文档页面 下载最新的 php SDK 这里假设你已经申请完微信支付 1. 微信后台配置 如图 我们先进行测试,所以先把测试授权目录和 测试白名单添加上.测试授权目录是你要发起微信请 ...
最新文章
- 美团2020年全年财务报告:疫情期间网络营销之下的美团选择进军社区团购
- python中ls是什么_使用Python代码实现Linux中的ls遍历目录命令的实例代码
- 【1】flink-source读取数据
- 这就是搜索引擎--读书笔记五--索引的建立与更新
- python 整数输出 d f_如何将数字(10,11,12,13,14,15)分配给Python 3中的字母(A,B,C,D,E,F)?...
- Unity2018新功能抢先预览 | Preset功能
- js常用处理请求到的数据的方法(即map,filter,find,findIndex,some,every一些常用方法的使用)
- SQL Server 加密案例解析
- Windows Mobile 6 模拟器绿色中文版
- laravel+php+支付功能,Laravel 支付解决方案之如何使用微信支付进行支付 – Laravel学院...
- 串口总线舵机之配置舵机
- 数据中心弱电设计及审图的注意事项
- xsh报告-推荐系统
- amos看拟合度在哪里看_Amos软件完结篇!模型无法拟合,拟合指标不佳如何解决?...
- 一文搞懂AWS EC2, IGW, RT, NAT, SG 基础篇下
- nexus5 博通芯片WIFI详解 (2)
- (十二)幸福之家 - 1
- 职称计算机pptt应用模块,2016年职称计算机考试PowerPoint单选练习题4
- SharkCDN,极速构建 CDN DNS 运营平台
- mysql geo_MySQL GEO 字段类型说明及案例
热门文章
- java需要数学_学java要数学好嘛?
- 计算机科学与技术研究生课表,计算机科学与技术(一级学科)硕士研究生培养方案...
- android tabhost用法详解,android Tabhost部件详解
- 【KnockoutJS】KnockoutJS 绑定列表数据。实现表头合并,列生成,图片上传等功能
- 智鼎在线测评是测什么_人才测评工具和人才测评方法
- 鲲鹏BoostKit虚拟化使能套件,让数据加密更安全
- 利用easyCHM制作JavaAPI帮助文档
- 陈纪修老师《数学分析》 第05章:微分中值定理及其应用 笔记
- 电子商业汇票知识问答题
- 移动硬盘坏点测试软件,移动硬盘坏道检测修复工具(硬盘坏道检测助手)V1.1 正式版...