一、获取apikey,appsecret与商户号
注册公众号、商户号
二、获取用户的OpenId
1.设置【授权回调页面域名】
官方解释:用户在网页授权页同意授权给公众号后,微信会将授权数据传给一个回调页面,回调页面需在此域名下,以确保安全可靠。回调页面域名不支持IP地址。
2.用户同意授权
我是把这个url写在微信菜单下的,当进入这个页面的时候就让用户同意。注意:好像是静默授权的,用户不知道
1.url:
https://open.weixin.qq.com/connect/oauth/authorize?appid=appid&redirect_uri=url&response_type=code&scope=snsapi_userinfo&state=park#wechat_redirect
参数: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,希望大家喜欢。
本文向大家介绍微信公众号支付H5调用支付解析,包括了微信公众号支付H5调用支付解析的使用技巧和注意事项,需要的朋友参考一下 最近项目需要微信支付,然后看了下微信公众号支付,虽然不难,但是细节还是需要注意的,用了大半天时间写了个demo,并且完整的测试了一下支付流程,下面分享一下微信公众号支付的经验。 一、配置公众号微信支付 需要我们配置微信公众号支付地址和测试白名单。 比如:支付JS页面
本文向大家介绍nodejs微信公众号支付开发,包括了nodejs微信公众号支付开发的使用技巧和注意事项,需要的朋友参考一下 odeJs 微信公众号功能开发,移动端 H5页面调用微信的支付功能。这几天根据公司的需要使用 node 和 h5页面调用微信的支付功能完成支付需求。现在把开发过程重新捋一遍,以帮助更多的开发者顺利的完成微信支付功能的开发。(微信暂时还没有提供 node 的支付功能) 一.请求
上一篇我们介绍了在h5 app 开发微信支付, 这篇我们说一说在微信公众号开发支付。 目录 环境准备 1 需要一个有支付能力的公众号 2 wex5 3.3 及以上版本 3 备案好的域名 4 微信web开发者工具 开发步骤 1 取得参数 2 编译Baas 3 基本URL配置 4 JS接口安全域名、授权回调页域名配置 5 开发UI 5.1 修改参数 5.2 修改代码二 6 配置微信支付授权目录 7
本文向大家介绍微信支付PHP SDK —— 公众号支付代码详解,包括了微信支付PHP SDK —— 公众号支付代码详解的使用技巧和注意事项,需要的朋友参考一下 在微信支付 开发者文档页面 下载最新的 php SDK http://mch.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1 这里假设你已经申请完微信支付 1. 微信后台配置 如图 我们
本文向大家介绍微信公众号网页授权获取用户openId和微信公众号内获取的openId是否一样?相关面试题,主要包含被问及微信公众号网页授权获取用户openId和微信公众号内获取的openId是否一样?时的应答技巧和注意事项,需要的朋友参考一下 微信公众号网页授权获取用户openId和微信公众号内获取的openId是否一样?
说明 微信公众号支付SDK。 官方文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1 类 请求参数类 支付参数 类名:\Yurun\PaySDK\Weixin\JSAPI\Params\Pay\Request 属性 名称 类型 说明 $scene_info \Yurun\PaySDK\Weixin\JSAPI\Params