关于微信

1、获取微信js所必须的签名

 1 logger.info("获取凭证..");
 2             String code=(String) SecurityUtils.getSubject().getSession().getAttribute("Sign_code");
 3             String state=(String) SecurityUtils.getSubject().getSession().getAttribute("Sign_state");
 4             logger.info(state);
 5             logger.info(code);
 6             String ticket = null;
 7             // 存储凭证和生成时间
 8             FishingSingle instance = FishingSingle.instance;
 9             if (null != instance.getJsGenerateTime()) {
10                 Date currentTime = new Date();
11                 // 计算时间差
12                 long time = ((currentTime.getTime() - instance.getJsGenerateTime()
13                         .getTime()) / 1000);
14                 // ticket有效时间7200秒
15                 if (time >= 7100) {
16                     // 获取js凭证
17                     ticket = WeixinUtil.jsApi();
18                 } else {
19                     ticket = instance.getJsTicket();
20                 }
21             } else {
22                 // 获取js凭证
23                 ticket = WeixinUtil.jsApi();
24             }
25             //ticket = WeixinUtil.jsApi();
26             Map<String, Object> paramsMap = new HashMap<String, Object>();
27             paramsMap.put("jsapi_ticket", ticket);
28             paramsMap.put("timestamp", System.currentTimeMillis());
29             paramsMap.put("noncestr", "weixin");
30             // 调用js的页面完成路径
31             String url=(String) MiceConfig.getContextProperty("wd_URL");
32             if(code==null){
33                 paramsMap.put("url", url+"personal/toSign");
34             }else{
35                 paramsMap.put("url", url+"personal/toSign?code="+code+"&state="+state);
36             }
37
38             // 排序后的结果
39             String listStr = createLinkString(paramsMap);
40             logger.info("排序后..." + listStr);
41             // SHA-1加密
42             String tmpStr = new MySecurity().encode(listStr, MySecurity.SHA_1);
43             logger.info("SHA-1加密后:" + tmpStr);
44             // 保存js需要的4个参数
45             mv.addObject("appId", WeixinUtil.appId);
46             logger.info(WeixinUtil.appId);
47             mv.addObject("timestamp", paramsMap.get("timestamp"));
48             mv.addObject("nonceStr", paramsMap.get("noncestr"));
49             mv.addObject("signature", tmpStr);

所需要的加密方法

 1 /**
 2      * 把数组所有元素排序,并按照“参数=参数值”的模式用“&”字符拼接成字符串
 3      *
 4      * @param params
 5      *            需要排序并参与字符拼接的参数组
 6      * @return 拼接后字符串
 7      */
 8     public static String createLinkString(Map<String, Object> params) {
 9
10         List<String> keys = new ArrayList<String>(params.keySet());
11         Collections.sort(keys);
12
13         String prestr = "";
14
15         for (int i = 0; i < keys.size(); i++) {
16             String key = keys.get(i);
17             Object value = params.get(key);
18
19             if (i == keys.size() - 1) {// 拼接时,不包括最后一个&字符
20                 prestr = prestr + key + "=" + value;
21             } else {
22                 prestr = prestr + key + "=" + value + "&";
23             }
24         }
25
26         return prestr;
27     }
28
29     

2、页面必须要导入微信所提供的js

1 <script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>

3、页面必须先通过签名

 1 wx.config({
 2                 debug : false,
 3                 appId : ‘${appId}‘,
 4                 timestamp : ${timestamp},
 5                 nonceStr : ‘${nonceStr}‘,
 6                 signature : ‘${signature}‘,
 7                 jsApiList : [ ‘checkJsApi‘, ‘onMenuShareTimeline‘,
 8                         ‘onMenuShareAppMessage‘, ‘onMenuShareQQ‘, ‘onMenuShareWeibo‘,
 9                         ‘hideMenuItems‘, ‘showMenuItems‘, ‘hideAllNonBaseMenuItem‘,
10                         ‘showAllNonBaseMenuItem‘, ‘translateVoice‘, ‘startRecord‘,
11                         ‘stopRecord‘, ‘onRecordEnd‘, ‘playVoice‘, ‘pauseVoice‘,
12                         ‘stopVoice‘, ‘uploadVoice‘, ‘downloadVoice‘, ‘chooseImage‘,
13                         ‘previewImage‘, ‘uploadImage‘, ‘downloadImage‘,
14                         ‘getNetworkType‘, ‘openLocation‘, ‘getLocation‘,
15                         ‘hideOptionMenu‘, ‘showOptionMenu‘, ‘closeWindow‘,
16                         ‘scanQRCode‘, ‘chooseWXPay‘, ‘openProductSpecificView‘,
17                         ‘addCard‘, ‘chooseCard‘, ‘openCard‘ ]
18             });

4、执行一些具体的微信提供的东西

wx.ready(function() {

}

5、扫一扫(在4中执行)

wx.scanQRCode({
                needResult : 1,
                desc : ‘scanQRCode desc‘,
                success : function(res) {
                    //alert(JSON.stringify(res));
                    //alert(res.resultStr);                    //获取一个字符串数组取值
                    var str=res.resultStr.split(",");
                    var str1=str[0];
                    var str2=str[1];                    //post提交方法
                    $.post(‘‘,{}).success(function(data) {}
                }
            });
时间: 2024-12-11 13:55:04

关于微信的相关文章

小说分销系统,微信小说分销,类掌中云小说系统,类818tu系统源码

[演示站参数][][][][][][][][][][][] [后 台 地 址]     http://xiaoshuo.qqsiot.cn/manager          [] [管理员账号]     admin                                                     [] [渠道商账号]     channel                                                  [] [代理商账号]     age

微信网页第三方登录原理

微信开放平台和公众平台的区别 1.公众平台面向的时普通的用户,比如自媒体和媒体,企业官方微信公众账号运营人员使用,当然你所在的团队或者公司有实力去开发一些内容,也可以调用公众平台里面的接口,比如自定义菜单,自动回复,查询功能.目前大多数微信通过认证之后,都在做这个事情. mp.weixin.qq.com 2.开放平台面向的开发者和第三方独立软件开发商.我觉得开发平台最大的开放就是微信登录.当年腾讯没有花大力气去做统一登录这个事情,导致目前各个网站都要弄一套登录机制.好在他们现在认清了局势.开发者

微信支付PHP SDK —— 公众号支付代码详解

在微信支付 开发者文档页面 下载最新的 php SDK http://mch.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1 这里假设你已经申请完微信支付 1. 微信后台配置  如图 我们先进行测试,所以先把测试授权目录和 测试白名单添加上.测试授权目录是你要发起微信请求的哪个文件所在的目录. 例如jsapi 发起请求一般是jsapi.php所在目录 为测试目录,测试白名单即开发人员的微信号. 正式的支付授权目录不能和测试的一样否则会报错.不填

微信支付之JSAPI公众号支付

前提 本教程默认以下几点你已经完全满足: 开通了认证后的服务号 服务号开通的微信支付的认证 腾讯给你的邮件中有商户登录的账号和密码 拥有一个可供上传代码和设置回调域名的网站或云服务 有一点点php知识. 第一步:公众号设置 1. 你的公众号,在支付认证的标签下, 内容应该和下图类似.证明公众号已经完成了认证和合约的签署. 2. 然后在微信支付–开发配置中,设置测试授权目录和测试白名单 3. 在公众号设置-功能设置标签中,设置JS接口安全域名,这个域名在认证获取token的过程中可能会用到.但具体

微信支付错误两个问题的解决:curl出错,错误码:60

如下是运行微信支付测试代码时出错代码: Warning: curl_setopt() expects parameter 2 to be long, string given in D:\wwwroot\weixinpaytest\pay\WxPay.JsApiPay.php on line 99 Fatal error: Uncaught exception 'WxPayException' with message 'curl出错,错误码:60' in D:\wwwroot\weixinpa

H5版如何在微信外(非微信浏览器)进行微信支付技术方案

官方是支持在非微信内置浏览器中调起微信支付的!H5支付是基于公众号基础开发的一种非微信内浏览器支付方式(需要单独申请支付权限),可以满足在微信外的手机H5页面进行微信支付的需求.同时,由于H5链接传播十分方便.来源不易追踪,商户需要特别注意做好防钓鱼.防刷单的处理,控制风险. 流程原理 接口说明 (1)用户打开商户H5网页选购商品,生成支付订单:(2)商户调用[统一下单]接口(接口中trade_type需定义为WAP),获得预支付交易会话标识prepayid:(3)商户按照微信H5支付协议生成d

微信公众号可通过现金红包接口发放微信支付现金红包(附开发教程)

农历新年将至,支付宝红包打了一仗,微信在朋友圈屏蔽了它的分享,但单防守还不行,进攻才是最好的防守.昨日,微信支付现金红包接口正式开放,只需开通微信支付,即可接入现金红包.微信公众号也可以发放现金红包了! 通过现金红包接口,公众号开发者可以策划相关运营活动,向用户发放微信支付现金红包,更好的达到品牌推广及回馈用户的效果. 1.商户调用接口时,通过指定发送对象以及发送金额的方式发放红包,这样的方式,允许商户灵活的应用于各种各样丰富的活动场景 2.领取到红包后,用户的资金直接进入微信零钱,避免繁复的领

微信文件传输助手文件夹在哪?一起来找找

微信文件传输助手是微信电脑版与手机微信之间相互传输图片等文件的好工具,但很多童鞋都找不到微信文件传输助手文件夹在哪,就让我们一起找找吧 1.先说说手机微信文件传输助手文件夹在哪吧 文件夹路径为/Tencent/MicroMsg/Download/ 2.电脑版微信文件传输助手文件夹在:/微信安装保存目录/wechat files/微信号/ 也可以点击接收到的图片下载保存到相应位置即可

Linux下微信安装

安装过程如下: 1.下载最新版本tar.gz压缩包https://github.com/geeeeeeeeek/electronic-wechat/releases/download/V2.0/linux-x64.tar.gz wget https://github.com/geeeeeeeeek/electronic-wechat/releases/download/V2.0/linux-x64.tar.gz 本人发现这个服务器不稳定,已将2.0上传到百度云,方便以后使用. 链接: https

微信浏览器中调用支付宝支付

众所周知,在微信浏览器中是无法唤起支付宝的,会提示请在浏览器中打开,如果非要在微信浏览器中调起支付宝的话,只能是跳出微信浏览器,关于这一点,在支付宝官网给出了一个例子.但是,话说回去,后来我仔细想想,其实真的没有必要非要在微信浏览器中调起支付宝支付(当时真是一根筋啊啊啊...) 支付宝手机网站支付的官方文档: https://doc.open.alipay.com/docs/doc.htm?treeId=203&articleId=105288&docType=1 快速接入: https: