admin 管理员组文章数量: 1184232
微信开发!
安卓手机清楚微信缓存 /
防止微信的css,js缓存
小程序openid和公众号openid不一致解决办法
同一个用户在小程序和公众号的下的两个openid肯定不一样。如果小程序和公众号都绑定在同一个开放平台账号下的话,用户在小程序和在公众号下的unionid是一样的
微信服务器配置
wx.sample.php是官网下载的,文件里面的token和开放平台的一样,配置成功后,换成
$wechatObj = new wechatCallbackapiTest();
$wechatObj->valid(); //调用类的valid()方法执行接口验证。
$wechatObj->responseMsg();//处理并回复用户发送过来的消息,也是用的最多的一个函数,几乎所有的功能都在这里实现
QQ客服:注册的广点通,填了公司资质,要推广的链接地址能解决闪跳
<a href="=3&uin=123456789&site=qq&menu=yes">联系客服</a>
微信客服 :
<a class="c" href="tel:124567xxxx">点击通话</a>
#只需要替换tel后面的数字即可打电话把tel 换成 sms 就是发短信
JS微信小程序、微信公众号H5、浏览器、app环境
const ua = navigator.userAgent.toLowerCase();
getENVIR: () => {const isWeixin = ua.indexOf('micromessenger') !== -1;const isInApp = /(^|;\s)app\//.test(ua);if (isWeixin) {if ((window as any).__wxjs_environment === 'miniprogram') {return 'wxapp';} else {return 'wxh5';}} else {if (!isInApp) {return 'browser';} else {return 'app';}}
},
微信公众号支付 支付授权目录配置成目录的方式.php/wxpay/
//调用微信JS api 支付
function jsApiCall()
{WeixinJSBridge.invoke('getBrandWCPayRequest',<?php echo $jsApiParameters; ?>,function(res){alert("code:"+res.err_code+"msg:"+res.err_desc+"enmsg:"+res.err_msg);if(res.err_msg == "get_brand_wcpay_request:ok" ) { //支付成功会跳location.href = '<?php echo $this->createUrl("member/index"); ?>';}else{//用户遇到错误或者主动放弃
//if (res.err_msg == "get_brand_wcpay_request:cancel") {//您取消了支付
//if (res.err_msg == "get_brand_wcpay_request:fail") {//支付失败location.href = '<?php echo $this->createUrl("order/view",array("id"=>$order_id)); ?>';}});
}
微信支付回调,可以根据统一下单的可选参数进行业务区分
public function NotifyProcess($data, &$msg)
{if ($data['result_code'] == "SUCCESS" && $data['return_code'] == "SUCCESS") {if ($data['attach'] == "pay") { //微信支付回调$this->payNotify($data, $msg);}if ($data['attach'] == "recharge") {//微信充值回调$this->rechargeNotify($data, $msg);}}return parent::NotifyProcess($data, $msg);
}
微信支付-收货地址共享 支付授权目录配置成目录的方式.php/wxpay/address
//获取共享地址
function editAddress()
{WeixinJSBridge.invoke('editAddress', address_params, function(res){if(res.err_msg == 'edit_address:ok'){$.post("url",{name:res.userName,phone:res.telNumber,address:address},function(data){isValid = true;});}});
}window.onload = function(){if (typeof WeixinJSBridge == "undefined"){if( document.addEventListener ){document.addEventListener('WeixinJSBridgeReady', editAddress, false);}else if (document.attachEvent){document.attachEvent('WeixinJSBridgeReady', editAddress);document.attachEvent('onWeixinJSBridgeReady', editAddress);}}else{editAddress();}
};
公众号设置-》功能设置 设置业务域名后,在微信内访问该域名下页面时,不会被重新排版。用户在该域名上进行输入时,不出现下图所示的安全提示。
需要注意的一点是微信5.0以下版本不支持微信支付功能。还有就是在支付url后面加上showwxpaytitle=1字符串,会有“微信安全支付”的文字提示
一个微信公众号解决多个域名授权回调
如何获取微信用户基本信息,据我所知目前有两个方式:
在本文中,特别要注意的是有两个不同的Access Token,他们产生的方式不一样,一种是使用AppID和AppSecret获取的access_token,一种是OAuth2.0授权中产生的access_token,分别称为全局Access Token和授权Access Token。
=client_credential&appid=APPID&secret=APPSECRET
再使用全局ACCESS_TOKEN获取OpenID的详细信息(这种方式必须先关注公众号才能正常使用)
=ACCESS_TOKEN&openid=OPENID
2.用户关注以及回复消息,均可以获得用户的OpenID。
<xml><ToUserName><![CDATA[gh_b629c48b653e]]></ToUserName><FromUserName><![CDATA[ollB4jv7LA3tydjviJp5V9qTU_kA]]></FromUserName><CreateTime>1372307736</CreateTime><MsgType><![CDATA[event]]></MsgType><Event><![CDATA[subscribe]]></Event><EventKey><![CDATA[]]></EventKey>
</xml>
“FromUserName”标签中的内容即为该用户的OpenID,MsgType关注订阅事件subscribe,取消关注订阅事件unsubscribe,扫码事件scan点击微信的自定义菜单链接,获取openid
{"button": [{"type": "view","name": "授权获取","url": "=wx0738856156f7323c&redirect_uri=/&response_type=code&scope=snsapi_base&state=1#wechat_redirect"}]
}
微信分享
<!-- 微信分享 -->
<script type="text/javascript" src=".0.0.js"></script>
<script type="text/javascript" src="__PUBLIC__/wechat/share.js"></script>
<script>var _wxConfig = <?php echo ($wx_js_config); ?>;var _share = {tit: "qqqq来领取。",img: "<?php echo WAP_DOMAIN;?>share.png",con: "<?php echo ($share_text); ?>",link: "<?php echo ($share_url); ?>",pyq:{ //分享朋友圈回调success:function(){//成功 success$.ajax({type: "POST",url: "<?php echo U('ajaxShareCallback');?>",dataType: "json",success: function(data){}});}}};_share = _share || {};$(document).wechatShare(_wxConfig, _share);
</script>
微信官方带参数二维码带多个参数实现
$postData['action_name'] = 'QR_LIMIT_STR_SCENE'; //永久二维码
$postData['action_info']['scene'] = ['scene_str' => $adminId . "_" . $type];
消息模板内容换行
$data['first'] = array('value' => "尊敬的张三,您好。\r\n请您在确认认购信息无误后尽快安排打款。");
批量隐藏功能按钮接口
wx.hideMenuItems({menuList: [] // 要隐藏的菜单项,只能隐藏“传播类”和“保护类”按钮,所有menu项见附录3
});
#发送给朋友: "menuItem:share:appMessage"
#分享到朋友圈: "menuItem:share:timeline"
隐藏所有非基础按钮接口
wx.hideAllNonBaseMenuItem();
个性化菜单
CREATE TABLE `weixin_gxhmenu_group` (`group_id` int(11) unsigned NOT NULL AUTO_INCREMENT,`name` varchar(100) NOT NULL,`wx_gxh_menuid` int(11) NOT NULL COMMENT '个性化菜单menuid',`tag_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '用户标签的id,可通过用户标签管理接口获取',`sex` int(1) NOT NULL DEFAULT '0' COMMENT '性别:男(1)女(2),不填则不做匹配',`client_type` varchar(30) NOT NULL DEFAULT '' COMMENT '客户端版本,当前只具体到系统型号:IOS(1), Android(2),Others(3),不填则不做匹配',`country` varchar(100) NOT NULL DEFAULT '' COMMENT '国家信息,是用户在微信中设置的地区',`province` varchar(100) NOT NULL DEFAULT '' COMMENT '省份信息,是用户在微信中设置的地区',`city` varchar(100) NOT NULL DEFAULT '' COMMENT '城市信息,是用户在微信中设置的地区,具体请参考地区信息表',`language` int(10) NOT NULL DEFAULT '0' COMMENT '语言信息,是用户在微信中设置的语言,具体请参考语言表: 1、简体中文 "zh_CN" 2、繁体中文TW "zh_TW"',`sort` int(11) NOT NULL DEFAULT '0' COMMENT '排序,后生成菜单wx排最前',PRIMARY KEY (`group_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
客服消息接口:当用户和公众号产生特定动作的交互时(具体动作列表请见下方说明),微信将会把消息数据推送给开发者,开发者可以在一段时间内(目前修改为48小时)调用客服接口,通过POST一个JSON数据包来发送消息给普通用户。此接口主要用于客服等有人工消息处理环节的功能,方便开发者为用户提供更加优质的服务
永久素材
if (class_exists('\CURLFile')) {$data['media'] = new \CURLFile("E:/image/test.jpg", 'image/jpeg', 'test.jpg');
} else {$data['media'] = ["@$uploadfile;filename=" . $upload_image->name];
}
$url = "=" . $this->getToken() . "&type=image";
$this->vpost($url, $data);
临时素材
$data['file'] = new \CURLFile("E:/image/test.jpg", 'image/jpeg', 'test.jpg');
微信图片预览遇到的一些问题总结:
1,图片路径要绝对路径,否则点击时,显示的是大图是第一张图。而不是点击的图片。
2,网站加载是http或https,jweixin.js的加载要对应起来。
$('.sccn-list-imgs li').unbind('click');
$('.sccn-list-imgs li').click(function(){var baseUrl = document.location.protocol + '//'+location.host;var id = $(this).attr('id');var srcList = [];var curSrc = baseUrl + $(this).find('img').attr('src');//console.log(curSrc);$.each($('.list_pic_'+id),function(i,item){if(item.src) {srcList.push(baseUrl + $(this).attr('src'));}});wx.previewImage({current: curSrc, // 当前显示图片的http链接urls: srcList // 需要预览的图片http链接列表});
});
微信浏览器input关闭软键盘后导致页面底部空缺问题解决方案
测试后发现 ios 可以监听到 focusout 事件,而 android 在键盘收起后,input 仍处于焦点状态,无法触发 focusout事件。添加 resize 事件后 发现 android 在唤起键盘收起键盘后 window.innerHeight 会有改变,而 ios 不会
js 移动端对键盘监听
if (/Android/gi.test(navigator.userAgent)) {const innerHeight = window.innerHeight;window.addEventListener('resize', function () {const newInnerHeight = window.innerHeight;if (innerHeight > newInnerHeight) {// 键盘弹出事件处理} else {setTimeout(function () {window.scrollTo(0, 0);//window.scrollTo(0,$(window).scrollTop());}, 100);}});
} else {window.addEventListener('focusin', function () {// 键盘弹出事件处理});window.addEventListener('focusout', function () {// 键盘收起事件处理setTimeout(function () {window.scrollTo(0, 0);//window.scrollTo(0,$(window).scrollTop());}, 100);});
}
本文标签: 微信开发
版权声明:本文标题:微信开发! 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1686854128a42208.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论