- 企业微信-联系我config_id模式,弹出的二维码无state参数
步骤如下: 一、通过接口生成config_id,调用的接口如下: https://qyapi.weixin.qq.com/cgi-bin/externalcontact/add_contact_way?access_token=ACCESS_TOKEN 二、请求完成后拿到confi_id,然后把confi_id放入代码片段里面的plugid中; 三、 用手机点击“联系客户”的按钮,这时候会有个弹窗,如下: [图片] (注意:必须是真机调试,如果在开发者工具里面点是发模板消息的。 ) 四、长按二维码添加好友。 五、查看微信回调,发现无state参数。 其他说明:通过模板消息或生成config_id的时候直接用二维码(qrcode) 添加好友都是有state值的。 只有点击按钮,然后弹出二维码浮层的方式是没有state值的。
2021-06-25 - 99%的程序都没有考虑的网络异常?使用Fundebug.notify()主动上报
近日看到一篇文章99%的程序都没有考虑的网络异常,开篇提到: 绝大多数程序只考虑了接口正常工作的场景,而用户在使用我们的产品时遇到的各类异常,全都丢在看似 ok 的 try catch 中。如果没有做好异常的兼容和兜底处理,会极大的影响用户体验,严重的还会带来安全和资损风险。 于是,笔者分析了 GitHub 上的一些开源微信小程序,发现大多数的代码异常处理确实是不够的。 登录接口只考虑成功的情况,没考虑失败的情况 [代码]//调用登录接口 wx.login({ success: function() { wx.getUserInfo({ success: function(res) { that.globalData.userInfo = res.userInfo; typeof cb == "function" && cb(that.globalData.userInfo); } }); } }); [代码] 网络请求只考虑[代码]then[代码]不考虑[代码]catch[代码] [代码]util.getData(index_api).then(function(data) { //this.setData({ // //}); console.log(data); }); [代码] 考虑了异常情况但是没有做妥善的处理 [代码]db.collection("config") .where({}) .get() .then(res => { console.log(res); if (res.data.length > 0) { Taro.setStorage({ key: "config_gitter", data: res.data[0] }); } }) .catch(err => { console.error(err); }); [代码] 也许 99%的情况下接口都是正常返回的,只有 1%的情况会失败。看起来好像不是一件严重的事情,但是考虑到用户的量级,这个事情就不那么简单了。假设有 100 万用户,那么就有 1 万用户遇到异常情况,而且如果用户的使用频次很高,影响的何止 1 万用户。并且,如今产品都是体验至上,如果遇到这样的问题,用户极大可能就弃你而去,流失了客户就等于流失了收入。 如何妥善地处理接口异常的情况是一件严肃的事情,应当被重视起来。 妥善处理请求异常 那么,应当如何做呢?首先要定义请求异常的处理代码,比如微信开放接口的参数中有[代码]fail[代码](“接口调用失败的回调函数”)、Promise 的[代码]catch[代码]部分;其次,根据异常可能导致的后果,在函数中做相应的处理。如果会导致后续操作失败、或则界面无反馈,那么应当在 fail 回调中正确处理;如果你真的认为基本不可能出问题,那么至少写个异常上报。即使出错了,也知道具体的情况。 下图是微信支付接口的参数列表,其中包含了接口调用失败的回调函数([代码]fail[代码])。 [图片] 而且官方也给出了示例: [代码]wx.requestPayment({ timeStamp: "", nonceStr: "", package: "", signType: "MD5", paySign: "", success(res) {}, fail(res) {} }); [代码] 在回调函数[代码]fail[代码]中上报异常 为了确保完全掌握小程序的运行状况,我们将异常上报。Fundebug 的微信小程序插件除了可以自动捕获异常外,还支持通过API 接口主动上报异常。 根据其官方文档: 使用 fundebug.notify(),可以将自定义的错误信息发送到 Fundebug name: 错误名称,参数类型为字符串 message: 错误信息,参数类型为字符串 option: 可选对象,参数类型为对象,用于发送一些额外信息 示例: [代码]fundebug.notify("Test", "Hello, Fundebug!", { metaData: { company: "云麒", location: "厦门" } }); [代码] 首先在 Fundebug 创建一个小程序监控项目,并按照指示接入插件,然后在[代码]app.js[代码]的[代码]onLaunch[代码]函数下面调用[代码]wx.requestPayment[代码]来进行测试。 [图片] Fundebug 的微信小程序插件捕获并上报了异常: [图片] 在[代码]metaData[代码]标签还可以看到我们配置的 metaData,也就是[代码]fail[代码]回调函数的[代码]res[代码]参数。 [图片] 因此,我们可以知道失败的原因是订单过期。 另外,如果在二维码页面停留时间过久,也会触发报错: [图片] 通过简单的加入几行代码,就可以将小程序的异常情况了如指掌。而且 Fundebug 的微信小程序插件还可以监控线上 JavaScript 执行异常、自动捕获[代码]wx.request[代码]请求错误、监控慢 HTTP 请求,推荐大家接入试用! 关于Fundebug Fundebug专注于JavaScript、微信小程序、微信小游戏、支付宝小程序、React Native、Node.js和Java线上应用实时BUG监控。 自从2016年双十一正式上线,Fundebug累计处理了10亿+错误事件,付费客户有阳光保险、核桃编程、荔枝FM、掌门1对1、微脉、青团社等众多品牌企业。欢迎大家免费试用! [图片] 版权声明 转载时请注明作者 Fundebug以及本文地址: https://blog.fundebug.com/2019/07/08/report-http-error-by-fundebug-notify/
2019-07-08 - 微信小程序ios虚拟支付
简单说下流程: 小程序不支持ios虚拟支付,我们有个公众号,公众号有我们项目一个h5的口子,现在是想在用户点击支付的时候跳转到公众号h5进行购买支付,或者引导用户使用我们的h5网站进行支付购买,小程序只负责预览和观看,请问这样符不符合规范,在线等
2019-07-08