关于公众号:服务号如何检测当前进入了快照页

1、为了能重现快照页 ,可采纳如下计划,或百度搜寻其余计划 (1)勾销关注对应公众号 (2)清空手机微信公众号缓存数据 (3)从新登录微信 2、程序中将用户受权的 scope 设为 snsapi_userinfo,将登录回调中获取的微信用户实例 打印日志 Log::notice(json_encode($user1)); 会发现数据如下,nickname等字段的值都是微信用户 ,用这个作为进入微信受权快照页的判断根据 即可,具体代码自行设计 。3、最终成果:

April 25, 2023 · 1 min · jiezi

关于公众号:微信公众号关注或取关后再处理我们自己的业务逻辑

大家好,我是小悟 在做微信小程序或公众号开发的有时候,难免会遇到须要在用户关注或取关公众号后处理业务逻辑的需要,只须要几步就能够搞定。 1、配置首先咱们须要在微信公众号后盾进行服务器配置,登录公众号后盾->开发->根本配置->服务器配置,如下: 服务器地址就是咱们写的一个controller(代码在上面),用来给微信校验,和接管微信发过来的音讯,如果地址谬误或者token谬误,提交信息的时候会报错 2、代码实现SignUtil /** * @description */public class SignUtil { /** * 验证签名 * @param token * @param signature 签名用来核实最初的后果是否统一 * @param timestamp 工夫标记 * @param nonce 随机数字标记 * @return 一个布尔值确定最初加密失去的是否与signature统一 */ public static boolean checkSignature(String token, String signature, String timestamp, String nonce) { //将传入参数变成一个String数组而后进行字典排序 String[] arr = new String[] { token, timestamp, nonce }; // 将token、timestamp、nonce三个参数进行字典排序 Arrays.sort(arr); //创立一个对象贮存排序后三个String的结合体 StringBuilder content = new StringBuilder(); for (int i = 0; i < arr.length; i++) { content.append(arr[i]); } MessageDigest md = null; String tmpStr = null; try { md = MessageDigest.getInstance("SHA-1"); byte[] digest = md.digest(content.toString().getBytes()); tmpStr = byteToStr(digest); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } content = null; // 将sha1加密后的字符串可与signature比照 return tmpStr != null ? tmpStr.equals(signature.toUpperCase()) : false; } /** * 将字节数组转换为十六进制字符串 * @param byteArray * @return */ private static String byteToStr(byte[] byteArray) { String strDigest = ""; for (int i = 0; i < byteArray.length; i++) { strDigest += byteToHexStr(byteArray[i]); } return strDigest; } /** * 将每一个字节转换为十六进制字符串 * @param mByte * @return */ private static String byteToHexStr(byte mByte) { //转位数参照表 char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; char[] tempArr = new char[2]; tempArr[0] = Digit[(mByte >>> 4) & 0X0F]; tempArr[1] = Digit[mByte & 0X0F]; //失去进制码的字符串 String s = new String(tempArr); return s; }}MsgUtil ...

March 4, 2023 · 3 min · jiezi

关于公众号:关爱一线防疫工作者浩城嘉业携手高米店街道办事处共筑公益长城

万众一心、抗击疫情,为切实做好疫情防控工作,缓解社区一线人员工作压力,营造良好的社区环境。7月25日,北京浩城嘉业助力高米店街道办事处走进大兴片区,独特发展了“关爱社区工作者·暖心行”公益活动。当天,北京浩城嘉业装璜有限公司向高米店街道办事处工作人员捐献爱心防疫物资遮阳帐篷52顶、饮用水200件,用实际行动承当了企业应尽的社会责任。公益无界,浩城嘉业为爱输入本次公益活动旨在为抗疫一线的工作者送上和煦,纾解抗疫工作的低压氛围,推动片区工作人员更好实现防疫工作;弘扬公益精力、践行社会公德并提倡公益文化。本次公益活动,浩城嘉业出色完成工作,顺利将捐献的物资送达到每一位抗疫火线的工作者手中。作为一家司职大宅装修、设计施工的民营企业,浩城嘉业在这次流动中不仅表演了公益执行官的角色,还彰显了“小事难事见担当,危难时刻显本色”的公益精力和企业担当。正如捐献企业何总所言:随着疫情防控逐步趋于常态化,还远远未到放松警觉的时刻,作为企业咱们仍须要积极参与防控工作,致力及贡献力量,履行好社会责任,践行社会主义新时代下的外围价值观,凸显民营企业的担当精力。一箭易折,十箭难断,一线工作者仍旧在为抗疫奋斗着,作为一家立足于社会的企业,更应该贡献本人的一份力量,让疫情阴郁早日散去。尽管每一个企业在社会上表演的角色不尽相同,但为公益付出的爱心无界,正是这份为公益贡献的爱心驱使,浩城嘉业才会在公益上向着更和煦的方向前进。砥砺十七载,与爱同行从2005年至今,浩城嘉业已在社会砥砺前行十七载。秉承着“以诚待客、客户至上、精益求精、质量第一”的理念,浩城嘉业现在曾经倒退成一家具备500人团队的大型装璜企业,旗下服务客户已过万,至今放弃着0客诉。砥砺前行十七载,浩城嘉业与爱同行,始终不忘回馈社会,为大爱继续输入力量。将来可期,公益、事业齐头并进将来,浩城嘉业将会持续热心公益,在须要时奉献本人的一份力量。浩城嘉业将始终致力于推动公益事业倒退,助力公益文化的传递为己任。同时,浩城嘉业也将不忘初心,欠缺服务,力求业务上精益求精,用更好的品质去服务万千用户,缔造舒服住宅的美好生活空间,发明社会与责任的更大价值!

July 25, 2022 · 1 min · jiezi

关于公众号:CRMEB-知识付费模版消息修改教程

模板音讯仅用于公众号向用户发送重要的服务告诉,只能用于合乎其要求的服务场景中,如信用卡刷卡告诉,商品购买胜利告诉等。不反对广告等营销类音讯以及其它所有可能对用户造成骚扰的音讯。常识付费模版音讯性能应用的 easywechat 的模版音讯; <?php use EasyWeChat\Foundation\Application; $app = new Application($options); $notice = $app->notice;API# boolean setIndustry ($industryId1, $industryId2) 批改账号所属行业; array getIndustry () 返回所有反对的行业列表,用于做下拉抉择行业可视化更新; string addTemplate ($shortId) 增加模板并获取模板 ID; collection send ($message) 发送模板音讯,返回音讯 ID; array getPrivateTemplates () 获取所有模板列表; array deletePrivateTemplate ($templateId) 删除指定 ID 的模板。 非链接调用办法: $messageId = $notice->send(['touser' => 'user-openid', 'template_id' => 'template-id', 'url' => 'xxxxx', 'data' => [ //...],]);链式调用办法: 设置模板 ID:template /templateId/uses 设置接收者 openId: to /receiver 设置详情链接:url /link/linkTo 设置模板数据:data /with ...

May 14, 2022 · 1 min · jiezi

关于公众号:微信公众号文章插入附件教程

写公众号文章时,有时候心愿在公众号文末分享一些文档如Word、Excel、PDF之类的文档,但苦于公众号并不反对间接上传文件。 插入超链接是个计划,但并不是所有的公众号都有此性能。并且微信内并不容许间接下载文件,也是麻烦。 其实,通过插入附件小程序来给文章增加附件,不失为一个很好的解决方案。 小程序:文章附件。它在文章里的成果是这样的: 以下是文章附件增加教程,只须要简略的几步: 一、 把文件通过微信发送给本人(或者文件传输助手),上传文件到「文章附件」小程序,取得小程序门路二、 在公众号文章编辑器中,点击上方「小程序」按钮,搜寻「文章附件」小程序,点击下一步三、 粘贴第一步取得的附件小程序门路,填入文件题目,点击确定即可。实现插入后,你能够发送到手机预览一遍,看看具体的成果。

March 16, 2022 · 1 min · jiezi

关于云开发:环境共享已支持公众号网页登录云开发控制台

自云开发反对跨账号环境(资源)共享以来,受到了宽广开发者的青睐。 环境共享即一个小程序的云开发资源能够受权共享给同主体下多个其余小程序 / 公众号应用,无论其余小程序/公众号是否已开明云开发;环境共享能够帮忙开发者更高效的反对多小程序/公众号同用一套云开发资源,无需多个小程序/公众号屡次开发,大大的节俭开发时长,进步开发效率。 小程序云开发资源共享给公众号后,反对公众号在小程序云开发资源中应用云函数/云托管服务配置音讯推送以接管用户发送给以后公众号的音讯及开发者须要的事件推送。 当初,开明环境共享后的公众号,也能够间接登入云开发控制台,实现查阅共享详情、进行音讯推送等一系列操作,更加不便! 实现起来也十分简便: 首先,依照要求将小程序的环境共享给公众号,操作步骤为:在 微信开发者工具-云开发控制台-更多-环境共享,将两者进行关联共享。共享后,即可返回 1.05.2103192 或以上版本的微信开发者工具中,点击 公众号网页我的项目-公众号网页。再点击“云开发”,填入公众号 AppID,即可进入受权环境共享的小程序云开发资源。实现后,不仅能查看共享状况,还能够点击【音讯推送】,在小程序云开发资源中应用云函数/云托管服务来配置音讯推送,以接管用户发送给以后公众号的音讯及开发者须要的事件推送。详见文档>>快返回最新版微信开发者工具体验吧! 产品介绍云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为开发者提供高可用、主动弹性扩缩的后端云服务,蕴含计算、存储、托管等serverless化能力,可用于云端一体化开发多种端利用(小程序,公众号,Web 利用,Flutter 客户端等),帮忙开发者对立构建和治理后端服务和云资源,防止了利用开发过程中繁琐的服务器搭建及运维,开发者能够专一于业务逻辑的实现,开发门槛更低,效率更高。开明云开发:https://console.cloud.tencent.com/tcb?tdl_anchor=techsite产品文档:https://cloud.tencent.com/product/tcb?from=12763技术文档:https://cloudbase.net?from=10004技术交换加Q群:601134960最新资讯关注微信公众号【腾讯云云开发】

April 6, 2021 · 1 min · jiezi

关于公众号:前端面试每日-31-第608天

明天的知识点 (2020.12.14) —— 第608天 (我也要出题)[html] 微信公众号的文章如何做到点击图片查看答案?[css] 请解释下Sass中的嵌套规定是什么?[js] 实现一个isNaN的办法[软技能] 请说说浏览器都有哪些容错机制?《论语》,曾子曰:“吾日三省吾身”(我每天屡次检查本人)。前端面试每日3+1题,以面试题来驱动学习,每天提高一点!让致力成为一种习惯,让奋斗成为一种享受!置信 保持 的力量!!!欢送在 Issues 和敌人们一起探讨学习! 我的项目地址:前端面试每日3+1【举荐】欢送跟 jsliang 一起折腾前端,零碎整顿前端常识,目前正在折腾 LeetCode,打算买通算法与数据结构的任督二脉。GitHub 地址 微信公众号欢送大家前来探讨,如果感觉对你的学习有肯定的帮忙,欢送点个Star, 同时欢送微信扫码关注 前端剑解 公众号,并退出 “前端学习每日3+1” 微信群互相交换(点击公众号的菜单:交换)。 学习不打烊,充电加油只为遇到更好的本人,365天无节假日,每天早上5点纯手工公布面试题(死磕本人,愉悦大家)。心愿大家在这虚夸的前端圈里,放弃沉着,保持每天花20分钟来学习与思考。在这变幻无穷,类库层出不穷的前端,倡议大家不要等到找工作时,才狂刷题,提倡每日学习!(不忘初心,html、css、javascript才是基石!)欢送大家到Issues交换,激励PR,感激Star,大家有啥好的倡议能够加我微信一起交换探讨!心愿大家每日去学习与思考,这才达到来这里的目标!!!(不要为了谁而来,要为本人而来!)交换探讨欢送大家前来探讨,如果感觉对你的学习有肯定的帮忙,欢送点个[Star]

December 14, 2020 · 1 min · jiezi

微信公众号生成新浪短网址-快速生成

有没有想过,向一个公众号发送长链接,然后公众号给你回复一个短网址? 其实很简单: <?phpdefine("TOKEN", "xiao");//用于回复用户消息function responseMsg(){ $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; if (!empty($postStr)){ $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $fromUsername = $postObj->FromUserName; $toUsername = $postObj->ToUserName; $MsgT = $postObj->MsgType; $time = time(); //如果用户发的text类型 if($MsgT=="text"){ $key = trim($postObj->Content); $textTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> </xml>"; $msgType = "text"; //生成短网址 $dwzapi = "http://api.t.sina.com.cn/short_url/shorten.json?source=3271760578&url_long=".$key; $dwzpost = file_get_contents($dwzapi); $dwzjsondecode = json_decode($dwzpost,true); //发送 $contentStr = $dwzjsondecode[0]['url_short']; $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); echo $resultStr; exit; }else{ $textTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> </xml>"; $msgType = "text"; //发送 $contentStr = "请发送链接"; $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); echo $resultStr; exit; } //如果用户发的event(事件)类型 if($MsgT=="event"){ $Event = $postObj->Event; if ($Event==subscribe) { $contentStr = "欢迎关注"; }else{ $contentStr = "希望您下次关注,但您收不到此条消息了"; } $textTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> </xml>"; $Title = $postObj->Title; $Description = $postObj->Description; $Url = $postObj->Url; $msgType = 'text'; $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); echo $resultStr; exit; } }else{ echo "不对"; exit; }} $echoStr = $_GET["echostr"]; //如果有$echoStr说明是对接 if (!empty($echoStr)) { //对接规则 $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $token = TOKEN; $tmpArr = array($token, $timestamp, $nonce); sort($tmpArr, SORT_STRING); $tmpStr = implode( $tmpArr ); $tmpStr = sha1( $tmpStr ); if( $tmpStr == $signature ){ echo $echoStr; }else{ echo ""; exit; } }else{ responseMsg(); }?>配置方法:1、登录公众号2、打开基本配置 ...

August 17, 2019 · 1 min · jiezi

公众号开发微信公众平台配置

很久就想写一下开发微信公众号的所有配置,以及需要注意的坑点。最近项目提测,配合测试调试的空暇做个记录 微信端配置1、公众平台配置1、长期运营者和开发者配置绑定长期运营者:用于配置ip白名单和公众号后台登录Note:进入人员设置 Note:绑定运营者根据提示还需要关注名为公众号助手的公众号,不截图了 绑定开发者:用于开发者工具测试网站接口 2、基本配置Note:基本配置中,如图上半部分直接设置并保存在代码的配置文件中,下半部分需要在服务器配置好/wechat接口,并正确响应微信请求,注意此接口需要使用any方式 3、网页授权、JS安全域名、业务域名配置Note:两个入口可以进入配置 Note:这里的这个文件,前后端域名都需要可以直接访问,同一公众号三个需要配置的地方文件一模一样,不同公众号文件名和内容均不一样(vue不能放在/static下面) 2、商户号配置1、要开通微信支付功能,必须要自己申请商户号并与公众号进行绑定,这个流程根据微信提示操作即可(开通商户号,提交资料之后需要等待微信审核) Note:商户号登录建议用qq浏览器,总之用qq浏览器就对了,如图在画框的地方进行安装 2、安装完证书,就到api安全处获取后端调用退款的证书文件,包括设置密钥(这个页面因为要校验证书等,所以会巨卡,得有耐心) 3、设置支付授权目录,注意:授权目录我配置了前端的url,后端处理支付的接口必须要配置到最后一个"/",(比如,后端接口www.XX.com/wechat/pay/notice处理支付通知,那这个地方就要填写:www.XX.com/wechat/pay/,而且在后端处理退款回调通知的url最好也在/pay/下面,比如www.XX.com/wechat/pay/refund,这样在商户号这里就只需要配置一条就好了) 后端配置公众号1、公众号基础配置note:结合公众号后台的参数,写入配置 Note:/wechat接口逻辑处理 2、欢迎语,配置了根据公众号后台输入内容自动回复的内容 3、微信页授权回调 4、模拟用户,为了能在本地开发,于是配置了模拟用户,只需要在中间件中写入session就行了 5、再贴一个我单独配置的菜单吧,我把它写在配置文件里头,有artisan命令直接调用菜单接口就可以实现自定义菜单Note:还有一个更方便的设置菜单的方法,就是用微信的在线测试接口,聪明如我~_~ 支付1、支付配置 Note:支付相关的具体实现就不贴出来了,网上一大堆模板~

July 4, 2019 · 1 min · jiezi

小程序公众号免费商城系统源码

源码地址 功能简介 1.商品: 能够对商品的状态分类管理 (出售中、待上架、库存中、已售馨、库存警戒、回收站)、添加产品、添加商品分类等功能 2.会员:站内会员的管理 (发放优惠劵、发通知、发图文消息、增加余额、会员行为详情)、站内通知 、微信端用户管理 (微信用 户的管理、分组、行为观察、添加标签) 等功能 3.营销:能够管理优惠的发放和制作、用户积分的统计使用情况、秒杀产品的管理等 4.财务:能够对用户的消费、充值、返佣的记录 5.订单:能够完成用户的订单管理(发货、订单详情、修改订单、订单备注、订单记录、订单退款) 、售后服务 (评论的回复与删除) 6.分销:后台有分销统计管理,分销可以设置人人分销和指定人分销,也可以自己稍微开发一下修改规则,例如下单后成为分销等 7.数据统计图表统计分析(财务统计、产品统计、会员统计、营销统计、分销统计、交易统计等) 8.设置:能够完成管理员对网站的商品资料(添加大类、添加小类、商品添加、属性快速生成、商品审查)、商品交易(外理订单、发 货查询)、会员管理(会员审查)、操作管理(管理员添加、管理员审查、管理员退出)、系统配置、后台通知等功能 9.内容:管理文章分类 (添加分类、删除分类、修改分类) 、 管理文章 10.维护:查看系统日志、文件变动效验、刷新网站缓存、在线更新系统、清除数据、文件管理等功能 11.强大的权限管理系统

July 3, 2019 · 1 min · jiezi

php实现微信公众号创建自定义菜单

目的创建自定义菜单,实现菜单事件。 首先获取Access_Token接口: https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET我用的是测试号,修改APPID和APPSECRET,然后浏览器访问上面这个Url即可生成Access_Token 然后配置菜单的事件,caidan.php<?phpheader("Content-type: text/html; charset=utf-8");define("ACCESS_TOKEN", "生成的Access_Token");//创建菜单function createMenu($data){$ch = curl_init();curl_setopt($ch, CURLOPT_URL, "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".ACCESS_TOKEN);curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);curl_setopt($ch, CURLOPT_AUTOREFERER, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, $data);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);$tmpInfo = curl_exec($ch);if (curl_errno($ch)) { return curl_error($ch);}curl_close($ch);return $tmpInfo;}//获取菜单function getMenu(){return file_get_contents("https://api.weixin.qq.com/cgi-bin/menu/get?access_token=".ACCESS_TOKEN);}//删除菜单function deleteMenu(){return file_get_contents("https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=".ACCESS_TOKEN);}$data = '{ "button":[ { "type":"click", "name":"首页", "key":"home" }, { "type":"click", "name":"简介", "key":"introduct" }, { "name":"菜单", "sub_button":[ { "type":"click", "name":"hello word", "key":"V1001_HELLO_WORLD" }, { "type":"click", "name":"赞一下我们", "key":"V1001_GOOD" }] }]}';echo createMenu($data);浏览器访问caidan.php正确时的返回JSON数据包如下: ...

June 10, 2019 · 1 min · jiezi

免费开源小程序公众号商城

免费开源小程序+公众号商城,代码易读,功能完善,基于thinkphp5开发,支持一键安装。源码地址: http://github.crmeb.net/u/blue体验地址:

June 4, 2019 · 1 min · jiezi

Vue微信公众号兼容微信JSSDK使用分享等功能

很久没有写文章了,最近项目是基于微信公众号的Vue项目,有一个非常重要的分享功能,不搞不知道一搞不得了,发现vue-router和微信SDK配置有很大的兼容性问题,翻遍文档,社区,博客,都没有找到可以适合解决我这个问题的方法,最后是我们一起一个一个方法、一个一个api尝试才找到解决办法,现在和大家分享一下我们遇到的问题和解决方案。 先附上微信SDK文档地址:https://mp.weixin.qq.com/wiki... 这里只针对讨论Vue脚手架搭建,vue-router跳转的SPA单页面项目!!很多是Vue-router和微信JS-SDK之间的BUG问题1.url在IOS端和Android端表现不同当使用vue-router跳转的SPA单页面项目,在IOS端只要不刷新页面,页面URL永远是第一次进来的url!例如: 项目首页地址为:www.baidu.com/home项目详情页地址为:www.baidu.com/detail当你在首页点击详情页跳转按钮触发了this.$router.push('/detail')且!页面已经跳转至详情页,但是你复制当前链接查看后会惊讶的发现,url还是www.baidu.com/home但!你强制刷新页面后,url会变成www.baidu.com/detail有趣的是,Android端不会出现这种情况,url会随着页面跳转而改变。 你要是问我为什么会出现这种情况,等我什么时候进微信团队了,我再给大家解答。。。因为在wx.config中配置需要使用当前url进行签名,这种问题出现导致IOS端和Android端不可共用一个分享代码,需要分开讨论并分开配置。 解决方案://因为问题1,所以我们要在IOS端进入项目时,记住第一次进来的url地址,供签名使用// 判断浏览器是 Android端 or IOS端let userAgent = navigator.userAgent;let isAndroid = userAgent.indexOf("Android") > -1 || userAgent.indexOf("Adr") > -1; let isIOS = !!userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); if (isIOS) { // 是IOS,这里用Vuex进行储存 this.$store.commit("isIosFun", true); //记录好第一次进项目的URL,供签名使用 this.$store.commit("firstUrlFun", window.location.href.split("#")[0]); } else if (isAndroid) { // Android this.$store.commit("isIosFun", false); //安卓无需记录,因为url会随着页面跳转而改变,签名使用window.location.href即可}问题2.微信分享配置在IOS端和Android端api不同微信分享是微信生态很重要的一个功能,特别对于公众号项目,有些靠这个恰饭的啊 ????????????我们先看文档,有什么供我们使用 请注意,原有的 wx.onMenuShareTimeline、wx.onMenuShareAppMessage、wx.onMenuShareQQ、wx.onMenuShareQZone 接口,即将废弃。请尽快迁移使用客户端6.7.2及JSSDK 1.4.0以上版本支持的 wx.updateAppMessageShareData、updateTimelineShareData 接口。上面是文档的原话,即将废弃是什么意思?又不告诉我为什么废弃,什么时候废弃,那我全部用updateAppMessageShareData、updateTimelineShareData这两个是不是就可以了? 经过我们上百次的测试和试验得出的结果是:updateAppMessageShareData、updateTimelineShareData 接口 只能在IOS端使用!onMenuShareTimeline、onMenuShareAppMessage 接口 只能在Android端使用!你要是问我为什么会出现这种情况,等我什么时候进微信团队了,我再一并给大家解答。。。 问题3.进入Vue项目不可以使用定向不可以在第一次进入项目使用定向!否则在ios端会导致首页wx.config失败!{ path: '/', redirect:"/home"},问题4.微信分享地址不可以有端口号!例如供签名的url为www.baidu.com:8080会导致wx.config失败!以上部分方案仅针对使用vue-router的SPA单页面项目,如果使用a链接跳转或者直接window.location.href跳转的小伙伴,直接使用wx.onMenuShareTimeline、wx.onMenuShareAppMessage接口就可以完成分享配置。 ...

May 30, 2019 · 1 min · jiezi

为了用-Markdown-写微信公众号自定义了一个编辑器

身边应该有不少朋友在写公众号,不知道你们用的是什么编辑器呢? 135编辑器i排版秀米 XIUMI易点编辑器上面这些编辑器,应该是小编们用得最多的几款,它可以快速添加各种样式插件,使文章更吸引眼球,让用户看起来很爽,欲罢不能。毕竟他们最注重的是阅读量,而非内容。 我也有写文章的习惯,但我不是小编,格式上只追求简约大方即可,重点在文字上,希望内容能产生一些价值。自从用了 Markdown 标记语言后,写文章就再也没用过其他的编辑器。 什么是 Markdown?什么是 Markdown?它是目前最流行的写作标记语言,没有之一。它能够通过简单标记就能实现文档格式,让写作者专注于内容。 由于它是纯文本,所以它可以像代码一样进行版本管理,同时,它对 Web 也非常友好,方便转成 HTML,甚至直接将 Markdown 文档生成静态站点,很多免费的自建博客服务都是采用的这种方案。目前几乎所有主流的写作平台,其编辑器都支持 Markdown。 一些 Markdown 编辑器,甚至在其基础上,扩展了很多功能。例如:公式及表格的支持。前段时间,一个外国小哥的数学笔记火了,全程像敲代码一般,紧追数学老师板书,记了 1700 + 页笔记。感兴趣可以看下这篇文章: 1700页数学笔记火了!全程敲代码,速度飞快易搜索,硬核小哥教你上手LaTeX+Vim 为什么不支持 Markdown?虽然支持它的编辑器多到数不过来,可是国内最著名的内容发布平台 —— 微信公众号,它的编辑器就不支持 Markdown,可算折腾坏了一帮写作者。为什么不支持?可能有两个原因吧。 用户学习成本Markdown 语法虽然简单,但对大部分人来说,毕竟也是一门新的知识,这就增加了用户的学习使用成本。你要知道,绝大部分的人,哪怕一点点的新东西都是接受不了的,微信没把编辑器做成 Word 的样式,我觉得已经是克制了的。 支持的样式并不完整Markdown 只提供了简单的样式标签,例如:标题,引用,链接等等,而对于复杂的样式,例如文字背景色等等,它是不支持的。 而微信面对的是全体创作者,单纯使用 Markdown 编辑器定然不能满足基本需求,而兼容 Markdown 的需求优先级并不高。 所以,一直以来,微信并不支持 Markdown,但我猜测,支持 Markdown 的功能迟早还是会做的。 Markdown 写公众号的痛你不是说了 Markdown 对 Web 非常友好嘛,转成富文本样式,然后贴到微信公众号的编辑器里,就可以了呀。道理是没错,但这正是折腾人的关键所在,因为 Markdown 只定义了基础的标签,而没有样式。 于是,各家的 Markdown 编辑器导出的样式都是有差异的,并且,跟微信公众号上的默认样式也不兼容。所以,贴进去后,显示出来的样式各不相同,如果文章里再有一些非标准的 Markdown 语法,显示出来更是五花八门了。一直以来都很纠结,对于一些样式复杂的文章,几乎就不发公众号了,因为调整样式,就要耗费大量的精力。 除了样式兼容性问题,还有微信公众号对外部链接限制问题,公众号内文章只允许引用微信内部链接,不支持外部链接。文章里若添加了第三方链接,我们只能硬生生的将 链接重新再贴进去。或者通过「阅读原文」链接原文地址。 解决方案微信公众号编辑器都几乎成为一种新的行业了,文章开头的那些编辑器,都能自力更生了,说明对小编们来说,公众号编辑器问题真的是一个痛点。 而对于适配公众号样式的 Markdown 编辑器,几乎没有,之前接触过 Md2All,功能上很完整,但是它并非只针对微信公众号,所以在细节方面的处理,总是差强人意。 一直想着,应该写一款符合自己样式风格的公众号编辑器。然而,一个偶然机会,发现了它,花三小时写这个工具,只为一分钟拯救公众号排版。 在程序世界里,有句老话说「不要重复造轮子」,你费好大劲去研究怎么做,没准别人已经都出成品了,这样就造成了资源浪费。幸运的是,我的「轮子」还没有开始动手呢。 总要做点自己的贡献这款公众号编辑器基本符合我的心里预期,简单的界面,优雅的样式风格,你看到的这篇文章的样式,就是通过它生成的。 ...

April 28, 2019 · 1 min · jiezi

Vue 开发H5 微信公众号

一、调起微信支付在微信浏览器里面打开H5网页中执行JS调起支付,WeixinJSBridge内置对象在其他浏览器中无效。具体参考官方文档:https://pay.weixin.qq.com/wik…(1)大致流程:(2)调用代码示例:mounted(){ if (typeof WeixinJSBridge == “undefined”) { if (document.addEventListener) { document.addEventListener( “WeixinJSBridgeReady”, this.onBridgeReady, false ); } else if (document.attachEvent) { document.attachEvent( “WeixinJSBridgeReady”, this.onBridgeReady ); document.attachEvent( “onWeixinJSBridgeReady”, this.onBridgeReady ); } } else { this.onBridgeReady(); }}methods:{ // 调起微信支付 onBridgeReady() { const pay_params = this.payInfo; //创建支付返回的签名信息 WeixinJSBridge.invoke( “getBrandWCPayRequest”, { appId: pay_params.appId, //公众号名称,由商户传入 timeStamp: pay_params.timeStamp, //时间戳,自1970年以来的秒数 nonceStr: pay_params.nonceStr, //随机串 package: pay_params.package, signType: pay_params.signType, //微信签名方式: paySign: pay_params.paySign //微信签名 }, res => { if (res.err_msg == “get_brand_wcpay_request:ok”) { // 校验支付 alert(‘支付成功’); //do something… }else if(res.err_msg == “get_brand_wcpay_request:cancel”||res.err_msg == “get_brand_wcpay_request:fail”){ alert(‘支付失败’); } } ); },}二、实现Web签名+截图网页+上传截图web签名使用 jsignature 实现,由于jsignature 基于Jquery实现,需要引入Jquery。签名完成后,使用 html2canvas 实现网页全屏截图。截图成功后,由于Canvas的 toDataURL方法会根据签名的复杂程度返回不同长短的Base64,过长的Base64传到后台会增加服务器负担,所以需要转成平时input type=file上传的图片格式代码示例: import jSignature from “jSignature”; import html2canvas from ‘html2canvas’; mounted() { //通过setTimeout把代码丢到初始化最后执行 this.Timer = setTimeout(() => { // Signature 签名Dom容器 this.$SignDom = $("#Signature").jSignature({ height: “100%”,//占容器100% width: “100%” }); }, 0); }, methods:{ //清空签名 resetSign() { this.$SignDom && this.$SignDom.jSignature(“reset”); }, // 获取签名 async getSign() { if (!this.$SignDom) return; if (!this.$SignDom.jSignature(“getData”, “native”).length) { alert(“请填写您的签名!”); return; } // jSignature - 获取签名Base64(注意:该Base64指签名那一块,不是整个页面) // let datapair = this.$SignDom.jSignature(“getData”, “image”); // let SignSrc = “data:” + datapair[0] + “,” + datapair[1]; // html2canvas截取整个页面 const HTML_CANVAS = await html2canvas(document.getElementById(‘app’)); let SignSrc = HTML_CANVAS.toDataURL(); // Base64 转 Blob 实现提交图片 let uploadImg = this.dataURLtoFile(SignSrc); let param = new FormData(); //创建form对象 param.append(“file”, uploadImg,‘signImage.png’); // send request… }, // Base64转Blob上传图片 dataURLtoFile(dataurl) { var arr = dataurl.split(","), mime = arr[0].match(/:(.*?);/)[1], bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n); while (n–) { u8arr[n] = bstr.charCodeAt(n); } return new Blob([u8arr],{ type: mime, }); } }, destroyed() { //清理setTimeout this.Timer && clearTimeout(this.Timer); }三、如何在npm run dev下,手机打开H5公众号测试(1) 修改package.json,在dev 后面加上–host your IP示例: “scripts”: { “dev”: “webpack-dev-server –inline –progress –config build/webpack.dev.conf.js –host 192.167.1.99”, },(2) dev跑起来之后,通过文件传输助手发给手机,在手机打开http://your IP:8080/即可(3) 打开后就可以在手机上测试支付或wx-js-sdk等功能啦! ...

April 11, 2019 · 2 min · jiezi

重装上阵,全新的「极光开发者」公众号来了,关注送大礼!

简评: 专为开发者设计的「极光开发者」公众号来了!关注送好礼,文末全是彩蛋!乙亥年二月二十八日,公历 2019 年 4 月 3 日,晴。宜写码、改 bug、立 flag。今天,极光开发者公众号全新改版,重装上阵,一个全新的技术界的四有公号就此诞生。一个有人气的公众号8 年辛苦耕耘,诞生于 2011 年的极光如今已经成为国内最大的第三方开发者服务平台之一,旗下拥有极光推送、极光IM、极光统计、极光分享、极光短信、极光认证、极光魔链等七大产品。近 37 万移动开发者见证了极光的发展历程,超过 107 万款 app 使用了极光 SDK。正所谓国内 app 千千万,用极光的一大半!如此广泛的群众基础,注定极光开发者公众号会是一个有人气的公号。没准你心心念的隔壁公司单身程序员小姐姐也是咱们的粉丝?一个有深度的公众号我明白,一个没有深度、没有干货的公众号是吸引不了你们这些有理想有抱负努力上进的程序员的。所以我们准备了大量精选干货文章,既有案例实操,也有理论体系。我们也欢迎各位踊跃投稿,把自己踩过的坑和收获的赞分享给我们,自有大礼伺候。一个有意思的公众号作为技术公号界的泥石流,光有人气和干货还是不够的。各种有意思的线上线下活动信息是各位能从极光开发者公众号获得的另一项重要收益。不管是大咖频现的线上线下沙龙,还是好看好玩的各类行业活动,又或是惊喜不断的线下聚会交友,总之关注我们,让你的生活更加丰富多彩。一个有礼品的公众号不想送礼物的公众号都是耍流氓。熟悉极光的小伙伴都知道,极光既拥有业内最种类繁多好看实用的网红周边,也大气到令人发指,一言不合就大派礼品。因此,关注极光开发者公众号的小伙伴们也注定有福了。晶石香薰、保温杯、定制雨伞、涂鸦马克杯等等等等,各种周边拿到你手软。不信?大礼一百件,赶紧往下看!极光定制香薰晶石每一种颜色的晶石都有专属的寓意,极光精心挑选带有极光绿的西伯利亚天然扩香石。晶石所蕴含的磁场和能量,能让您从繁忙的工作中抽离,靠近两极之地,感受极光之美,给生活带来满满的正能量。极光定制保温杯秉承着一直以来极光走心走肾的周边理念,这款升级版保温杯采用绿色底,并且搭配多彩线条设计。既是办公桌上一款赏心悦目的艺术品,也是能带来炎夏中一份沁人心脾的惬意。极光定制帆布袋你所需要的东西,都在一臂之间。这款专为懒人定制的帆布袋,通勤休闲两相宜。极光设计师将吉祥物「光光熊」加入其中,在专业与时尚之间达到了平衡。环保的道路,我们一直都是认真的。极光定制折叠雨伞或是西子湖畔,或是丁香小巷,有伞的地方,总有许多浪漫的故事。极光的伞,绿色打底,八骨跨面设计,精致磨砂手柄质感,撑起你的小世界。伞外有风雨,伞下有故事。如何获得?活动一搜索「极光开发者」,或者扫描下方二维码,关注后回复关键词「问卷」;完成一份小问卷。问卷答题截止时间为 4 月 10 日上午 10 点,我们将 5 个工作日内从中抽取 50 位答题者送上极光周边礼物一份。活动二关注「极光开发者」后,转发微信原文至微信朋友圈,将朋友圈截图发送至「极光开发者」公众号后台。并说出极光开发者服务七大产品中任意一个英文名,即可参与小程序抽奖。我们将于 4 月 6 日上午 10 点开奖,满足上述条件的 50 位幸运儿,请务必在 4 月 10 日之前在抽奖小程序的中奖页面填写收件地址与联系人,我们将呈上礼物 ????

April 3, 2019 · 1 min · jiezi

nuxt+koa+ant-design-vue+mongoose开发的微信公众号文章管理

github欢迎star https://github.com/aoping/nux…关键词服务端渲染 微信公众号开发 nuxt koa ant-design mongoose功能介绍后台登录 注册 公众号增删改查 文章增删改查公众号自动回复 网页授权 自定义分享 设置菜单等界面展示首页登录注册页公众号管理页文章管理页移动端

February 22, 2019 · 1 min · jiezi