关于微信公众号:微信公众号开放标签订阅通知的成功与失败

微信凋谢标签:wx-open-subscribe必须要提交到服务器上测试,比拟麻烦。否则就要搞个内网穿透能力搞,上面的代码能够间接复制拿去用。 <component :is="'wx-open-subscribe'" id="subscribe-btn" @success="handleSuccess" @error="handleError" :template="state.templateId" style="width: 100%; display:block;">// 省略两头的内容</component>次要来写handleSuccess const handleSuccess = (e: any) => { if (e.detail.errMsg === 'subscribe:ok') { const status = JSON.parse(e.detail.subscribeDetails) const tempStatus = JSON.parse(status[state.templateId]).status if (tempStatus === 'accept') { Toast.success('订阅胜利') } else if (tempStatus === 'reject') { Toast('回绝订阅音讯,请查看公众号设置!') } else if (tempStatus === 'cancel') { Toast('勾销订阅音讯,请查看公众号设置!') } else if (tempStatus === 'filter') { Toast('题目同名被后盾过滤!') } } else { Toast.fail('订阅失败') }}handleError const handleError = (e: any) => { const mapError = new Map([ ['10001', '参数传空了'], ['10002', '网络问题,申请音讯列表失败'], ['10003', '网络问题,订阅申请发送失败'], ['10004', '参数类型谬误'], ['20001', '没有模板数据,个别是模板ID不存在或者和模板类型不对应导致的'], ['20002', '模板音讯类型既有一次性的又有永恒的'], ['20003', '模板音讯数量超过下限'], ['20004', '用户敞开了主开关,无奈进行订阅'], ['20005', '服务号被封禁'] ]) Dialog.alert({ title: '订阅失败', message: `错误码:${e.detail.errCode},提醒:${mapError.get((e.detail.errCode).toString())}`, confirmButtonColor: '#0081ff' }).then()}

September 4, 2023 · 1 min · jiezi

关于微信公众号:公众号开发群发图文中插入小程序卡片报错-invalid-content-hint-的解决

如果你也正在开发群发图文中插入小程序的性能,那么大概率也会遇到这问题。 之前通过微信第三方开放平台开发过一个能够治理多个公众号的零碎,具体性能和成果能够参考 微信第三方开放平台代公众号实现业务 。 为不便小程序的经营和推广,微信公众号开发也反对通过接口在群发图文中插入小程序。和间接在MP后盾编辑一样,有三种款式可供选择。 依照开发文档示例插入文字和图片跳转小程序都没问题,然而插入卡片小程序却是始终报错。 这个谬误是说上传图文素材接口中的content字段的值是有效的,可能有非法字符,然而查看了很多遍,确保content参数的值很失常,但就是始终报错。去开发社区看帖子,很多人问这个问题,然而都没有给出解决办法。 起初又认真看了开发文档,发现 data-miniprogram-imageurl 参数阐明写着图片必须为1080x864像素。测试的时候都是轻易上传一张图片的,发现了这个细节后正儿八经的上传了一张1080x864像素的图片,居然提交胜利了。 事实证明,不肯定是1080x864的像素,只有像素比放弃为5:4就能够。所以同鞋,这也就解释了为啥把在MP后盾上传的图片拿来通过接口再上传能够胜利,而间接通过接口上传就会报错,因为MP后盾上传过的图片像素比曾经被裁剪成5:4了。 粗粗总结一句,文档看不细,开发两行泪。 公众号开发-群发图文中插入小程序卡片报错 invalid content hint 的解决 山水有相逢,来日皆可期,谢谢浏览,咱们再会 我手中的金箍棒,上能通天,下能探海 上一篇:支付宝直付通管理系统,进件二级商户

June 9, 2022 · 1 min · jiezi

关于微信公众号:评价返现实现用户留存公众号

如果你刚好经营着一家网店,也刚好经营着一个微信公众号,最好是有开明微信领取和现金红包性能的。那就能够通过评估返现的性能,有机会将用户留存在你的公众号上,便于精准营销,晋升复购率。至于用户是怎么找到你公众号的,这个就不说了,懂的人都懂,不懂的人也只是装作不懂。 在公众号菜单配置一个按钮,链接到提交评估信息的页面,用户要想加入流动,就要关注公众号,关注公众号后即可看到咱们设置的评估返现页面,用户也就明确是怎么回事了。用户能够在页面抉择订单平台、填写订单编号、上传评估截图和订单编号截图,提交到后盾,平台能够在24小时或48小时内进行审核。同时用户还能够在记录中看到提交申请的审核进度。 用户提交信息到后盾,平台只有每天抽出几分钟工夫审核一下截图就好了。同一订单号仅限提交1次,也无奈反复提交。 如果公众号还没有开明微信领取和现金红包性能的,也没有关系,在后盾能够开启填写支付宝账号的按钮,开启状态的话,则提交申请的时候会一并让用户填写支付宝账号用于接管打款。 如果某个用户应用不标准,还能够通过后盾将该用户禁用,该用户就无奈再进行提交申请的操作。 审核的时候能够通过也能够回绝,抉择审核通过的话会打款给用户,打款渠道能够抉择微信现金红包、微信零钱包、支付宝账号。抉择微信现金红包是通过公众号给用户发送一个红包点击支付,微信零钱包是间接打款到用户微信零钱包中,支付宝账号则是打款到用户的支付宝账户上的。 抉择审核回绝的话,须要输出回绝的起因。 后盾能够查看订单日志。 审核通过用户会收到一条收款胜利告诉的模板音讯,审核回绝也会收到一条审核失败告诉的模板音讯,能够点击查看详情从新提交。 模板音讯能够通过后盾管制。 以上就是通过评估返现用户留存公众号的整个流程。 评估返现,实现用户留存公众号 山水有相逢,来日皆可期,谢谢浏览,咱们再会 我手中的金箍棒,上能通天,下能探海 上一篇:从短视频中筛选你的精准客户-抖音版

March 9, 2022 · 1 min · jiezi

微信公众号地图模块

相关代码 wx.openLocation({ latitude: !!that.addressPoint.latitude ? Number(that.addressPoint.latitude) : 34.194024, longitude: !!that.addressPoint.longitude ? Number(that.addressPoint.longitude) : 108.937925, name: !!that.addressPoint.name ? that.addressPoint.name : "声动语商学苑", address: !!that.addressPoint.address ? that.addressPoint.address : "西安市" }); **注意:wx的openLocation方法绑定的经纬度坐标值必须为number类型,string类型不会跳转到地图界面,虽然也不会报错,最终效果为:

July 2, 2019 · 1 min · jiezi

微信公众号里面使用百度地图JavaScript-API-的一些记录

在这之前我们必须已经完成了微信JSSDK的配置 如果还没有配置,请看这篇文章 百度JavaScript API Lite JavaScript API标准版相比,Lite版专门针对移动端H5页面的使用场景,代码体积小,性能更好获取百度KEY1.注册成为百度开发者2.创建一个应用3.获取专属你的KEY 写一个简单的百度地图(JavaScript API Lite )1.在项目index.html 中引入百度JavaScript API Lite <script type="text/javascript" src="//api.map.baidu.com/api?ak=您的密钥&type=lite&v=1.0"></script>2.在需要用到百度地图的组件template中写入 <div id="baiduMap"></div> 3.在需要用到百度地图的组件script-mounted中写入 //创建一个地图实例let map = new BMap.Map("baiduMap"); //创建一个中心点坐标 let point = new BMap.Point(116.404, 39.915); //设置坐标 map.centerAndZoom(point, 15); 此时你就会看到一个简单的百度地图. 你也可以添加链接描述控件 //创建控件 let zoomCtrl = new BMap.ZoomControl(); //添加控件 map.addControl(zoomCtrl); map.addControl(scaleCtrl);JavaScript API Lite 只有一些简单的功能,不得不换JavaScript API v3.0... 使用JavaScript API v3.0百度地图API 3.0 与百度地图lite 使用方法类似,只不过引入的api文件不一样,百度JavaScript API 3.0 文档 <script type="text/javascript" src="http://api.map.baidu.com/api?v=3.0&ak=obQ9ARXSYP3nswLNHABZopmrIyu2NcRC"></script>使用百度地图碰到的一些坑坑1:微信SDK getLocation获取的位置为gps 定位,需要手动转为百度的BD09坐标;//创建坐标 let point = new BMap.Point(longitude, latitude);//微信获取的坐标 let convertor = new BMap.Convertor();// 创建一个坐标转换的实例 let pointArr = [];//定义存放转换点数组 每次最多10个 pointArr.push(point);//将转换点推入 数组 //转换坐标 convertor.translate(pointArr, 1, 5, function (data) { //转换左边后的回调函数, map.centerAndZoom(data.points[0], 15); if(data.status === 0) { //添加三角坐标 let marker = new BMap.Marker(data.points[0]); map.addOverlay(marker); //添加标签 let label = new BMap.Label("你的位置",{offset:new BMap.Size(20,-10)}); marker.setLabel(label); //添加百度label } })坑2:地图安卓页面显示正常,IOS微信端无显示原因是ios已经要求在APP中的所有对外连接都要使用https,但是我们用的秘钥链接是使用的http因此我们将index.html 中的script 改一下 ...

April 25, 2019 · 1 min · jiezi

SaaS化实践——如何用一个微信公众号登录多个不同的域名

背景SaaS 作为一种服务,需要为不同的客户定制不同的域名以满足客户定制化的需求。而微信登录时需要填写一个回调地址,单一的回调地址是难以处理多客户域名的业务需求的,经过不同的 SaaS 项目的实践,总结出了下面的方式。微信登录的核心代码依然采用 psa 这个库 https://github.com/python-soc…。微信说明阅读微信公众平台文档,可以看到,当同一个微信公众号需要在多个服务间使用时,微信的建议是提供一台中控服务器,防止access_token的重复刷新,这个坑确实踩到过。oauth 2.0https://tools.ietf.org/html/r…核心概念、表结构中控机中控机为同一引导用户登录的微信登录服务器,其中此机器做的为 oauth 2.0 截图部分的 A、B,引导用户授权,微信回调到此中控机,拿到code。中控机通过state参数,解除customerid,根据customer配置找到回调地址。回调是将state,code带去回调的客户域名。customercustomer表需要记录微信的appid,appsecret,这样即使客户需要定制自己的微信公众号,中控机也可以saas化。redirecturl由于微信的state参数长度有限,因此提供一张redirecturl表记录回调地址,登录时只需要将redirecturl_id带入state中即可。redirecturl记录的为回调客户域名+psa compelate地址的完整路由。statestate为oauth 2.0中允许的回调参数,state的构成为: 客户id,回调地址id,其他需要回调参数核心流程核心代码中控机通过customer获取对应的appid,secret。微信回调到cherrypick后,拿着code,state跳转到对应的客户域名。def _auth(request, backend): cid = request.GET[‘cid’] # TODO: DoesNotExist customer = Customer.objects.get(id=cid) appid, appsecret = customer.get_key_and_secret() log.info(’login cid:%s, key:%s’, cid, appid) def get_key_and_secret(): return appid, appsecret request.backend.get_key_and_secret = get_key_and_secret return do_auth(request.backend)@never_cache@psa(‘our_social:cherrypick’)def auth(request, backend, key=’’): return _auth(request, backend) @never_cache@psa()def cherrypick(request, backend): code = request.GET.get(‘code’, ‘’) state = request.GET.get(‘state’, ‘’) redirect_url_id = state.split(’,’)[0] redirect_url = RedirectURL.objects.get(id=redirect_url_id).url redirect_url = ‘{}?code={}&state={}’.format(redirect_url, code, state) log.info(‘cherrypick, redirect_url: %s, state: %s’, redirect_url, state) return redirect(redirect_url) SaaS 服务器处理 oauth 2.0 C、D之后的步骤@psa(‘our_social:complete’)def complete(request, backend, *args, **kwargs): “““Authentication complete view””” logout(request) state = request.GET.get(‘state’, ‘’) …… state解析出cid等参数 customer = Customer.objects.get(id=cid) appid, appsecret = product.get_key_and_secret() request._customer = customer 覆盖backend的方法 def get_key_and_secret(): log.info(’login complete use appid: %s %s’, appid, state) request.backend.get_key_and_secret = get_key_and_secret return do_complete(request.backend, _do_login, request.user, redirect_name=REDIRECT_FIELD_NAME, request=request, *args, **kwargs) ...

January 15, 2019 · 1 min · jiezi