- 小程序开发新能力解读 - 2021.12
快速知悉 网络调优相关 - 前后台切换 - 网络状态变化 wx.onNetworkStatusChange - 弱网状态变化 wx.onNetworkWeakChange - request/download 新协议 enableHttp2 / enableQuic / enableCache - wx.connectSocket 压缩扩展 perMessageDeflate 插件登录 wx.pluginLogin无障碍优化 aria-component文件系统新增readCompressedFile 接口支持读取指定类型压缩文件 1. 网络调优相关 [视频] 网络调优:小程序和小游戏网络相关 API 使用方式相同, 所以我们用网络接口来统称 。 网络接口的构成主要包括四个类型: requestdownloaduploadwebsocket对于网络调优,我们提供了以下的优化建议: 1.1. 前后台切换 小程序切后台 5s 后, 会中断网络请求, 开发者会收到 interrupted 的回调, 此时需要做好兼容逻辑。 1.2. 网络状态变化 wx.onNetworkStatusChange 使用介绍:当用户网络状态变化时会通过事件 wx.onNetworkStatusChange 进行通知, 不少网络问题是断网引起的, 可以通过此事件给用户更好的提示。 示例代码: wx.onNetworkStatusChange(function (res) { console.log(res.isConnected)//当前是否有网络链接,返回的是布尔值 console.log(res.networkType)//返回的是网络类型 }) 1.3. 弱网状态变化 wx.onNetworkWeakChange 使用介绍:基础库从 2.19.0 版本开始, 提供 wx.onNetworkWeakChange 弱网变化通知, 很多超时类的问题都是用户处于弱网引起的, 可以通过此事件给用户更好的提示。 在最近的八次网络请求中, 出现下列三个现象之一则判定弱网。 出现三次以上连接超时出现三次 rtt 超过 400出现三次以上的丢包弱网事件通知规则是: 弱网状态变化时立即通知, 状态不变时 30s 内最多通知一次。 示例代码: wx.onNetworkWeakChange(function (res) { console.log(res.weakNet)//当前是否处于弱网状态 console.log(res.networkType)//当前网络类型 }) // 取消监听 wx.offNetworkWeakChange() 1.4. request/download 新协议 enableHttp2 / enableQuic / enableCache 从 Android 7.0.12 / iOS 8.0.3 开始, 提供下面三个新参数: [图片] h2 连接速度更快, 建议支持, 这里需要注意 h2 的 header 是需要为全小写, 打开 enableHttp2 开关前需要注意代码逻辑。 1.5. wx.connectSocket 压缩扩展 perMessageDeflate 压缩参数目前已在 Android 和 iOS 上全量支持。 使用介绍:可以通过 wx.connectSocket 来进行创建一个 WebSocket 连接然后使用perMessageDeflate进行压缩。 示例代码: wx.connectSocket({ url: 'wss://example.qq.com',//开发者服务器 wss 接口地址 header:{//HTTP Header,Header 中不能设置 Referer 'content-type': 'application/json' }, protocols: ['protocol1']//子协议数组 perMessageDeflate:"true"//是否开启压缩扩展,默认是false }) 点击查看 网络调优 官方文档 2. 插件登录 wx.pluginLogin [视频] 使用介绍: 该接口仅在小程序插件中可调用。调用接口获得插件用户标志凭证(code),无需通过 用户信息功能页 进行授权。插件可以此凭证换取用于识别用户的标识 openpid。用户不同、宿主小程序不同或插件不同的情况下,该标识均不相同,即当且仅当同一个用户在同一个宿主小程序中使用同一个插件时,openpid 才会相同。示例代码: wx.pluginLogin(){ success(res) { // 用于换取 openpid 的凭证(有效期五分钟)。插件开发者可以用此 code 在开发者服务器后台调用 auth.getPluginOpenPId 换取 openpid。 console.log(res.code) }, fail(err){ console.log(err) } } 点击查看 插件登录 官方文档 3. 无障碍优化 aria-component [视频] 使用介绍: 1.满足视障人士对于小程序的访问需求。 2.以 view 组件为例,开发者可以增加aria-role和aria-label属性。 其中aria-role表示组件的角色,当设置为'img'时,读屏模式下聚焦后系统会朗读出'图像'。设置为'button'时,聚焦后后系统朗读出'按钮'。 aria-label表示组件附带的额外信息,聚焦后系统会自动朗读出来。 3.小程序 aria 属性对齐 web 标准。 示例代码: <view aria-role="button" aria-label="提交表单">提交</view> 注意: 安卓和iOS读屏模式下设置aria-role后朗读的内容不同系统之间会有差异。可设置的aria-role可参看 Using Aria 中的Widget Roles,部分role的设置在移动端可能无效。点击查看 无障碍优化 官方文档 4. 文件系统新增readCompressedFile 接口支持读取指定类型压缩文件 使用介绍: 1.读取指定压缩类型的本地文件内容。 2.其中compressionAlgorithm属性,文件压缩类型,目前仅支持 'br'(brotli压缩文件)。 示例代码: const fs = wx.getFileSystemManager() // 异步接口 fs.readCompressedFile({ filePath: '${wx.env.USER_DATA_PATH}/hello.br', compressionAlgorithm: 'br', success(res) { console.log(res.data) }, fail(res) { console.log('readCompressedFile fail', res) } }) // 同步接口 const data = fs.readCompressedFileSync({ filePath: '${wx.env.USER_DATA_PATH}/hello.br', compressionAlgorithm: 'br', }) console.log(data) 点击查看 readCompressedFile 官方文档 5. 更多能力 worker里添加USER_DATA_PATH 详情云托管支持 websocket 连接 详情apiCategory对应API限制调整开 详情
2022-06-24 - 微信小程序分享到企业微信群,怎么获取群ID?
微信小程序分享到普通微信群能获取到群信息(gID),同样的操作分享到企业微信群,点击无法获取到群信息 [图片]
2020-07-03 - setData 性能问题,一次性设置几百条数据,大小 400kb 以上,可有性能优化方案?
客户购物车商品数据,可能会出现几百条商品数据,数据大小经 JSON.stringify 后插件 400 kb 左右。 这个时候 setData 到视图层渲染会很卡,会造成2秒左右的白屏。 问题明确表示数据不能做分页,也就是说接口几百条数据是一次性返回的。 我的临时方案是:先把数据截取前10条 setData ,解决白屏问题,然后 setTimeout 50毫秒后,再把整体数据 setData 赋值过。 上面方案白屏问题是解决了,但是会出现先加载的 10 条数据,这个时候去滑动屏幕也是有个一两秒滑不动(卡住,因为 后面一个 setData 在赋值所有数据)。 我看了下 setData 也没有一个 可以 push 的功能,本想循环拆分多次 setData 。 请问大家有没有类似经验或更好的方案,万分感谢!!!
2021-12-01 - 微信小程序this.setData如何修改对象、数组中的值
在微信小程序的前端开发中,使用this.setData方法修改data中的值,其格式为 this.setData({ '参数名1': 值1, '参数名2': 值2 )} 需要注意的是,如果是简单变量,这里的参数名可以不加引号。 经过测试,可以使用3种方式对data中的对象、数组中的数据进行修改。 假设原数据为: data: { user_info:{ name: 'li', age: 10 }, cars:['nio', 'bmw', 'wolks'] }, 方式一: 使用['字符串'],例如 this.setData({ ['user_info.age']: 20, ['cars[0]']: 'tesla' }) 方式二: 构造变量,重新赋值,例如 var temp = this.data.user_info temp.age = 30 this.setData({ user_info: temp }) var temp = this.data.cars temp[0] = 'volvo' this.setData({ cars: temp }) 方式三: 直接使用字符串,此种方式之前不可以,现在可以了,估计小程序库升级了。 注意和第一种方法的对比,推荐还是使用第一种方法。 this.setData({ 'user_info.age': 40, 'cars[0]': 'ford' }) 完整代码: Page({ /** * 页面的初始数据 */ data: { user_info:{ name: 'li', age: 10 }, cars:['nio', 'bmw', 'wolks'] }, change_data: function(){ console.log('对象-修改前:', this.data.user_info) this.setData({ ['user_info.age']: 20 }) console.log('对象-修改后1:', this.data.user_info) var temp = this.data.user_info temp.age = 30 this.setData({ user_info: temp }) console.log('对象-修改后2:', this.data.user_info) this.setData({ 'user_info.age': 40 }) console.log('对象-修改后3:', this.data.user_info) console.log('数组-修改前:', this.data.cars) this.setData({ ['cars[0]']: 'tesla' }) console.log('数组-修改后1:', this.data.cars) var temp = this.data.cars temp[0] = 'volvo' this.setData({ cars: temp }) console.log('数组-修改后2:', this.data.cars) this.setData({ 'cars[0]': 'ford' }) console.log('数组-修改后3:', this.data.cars) } }) 效果: [图片]
2020-08-26 - wx.getWeRunData接口报错system apperror
https://developers.weixin.qq.com/miniprogram/dev/api/open-api/werun/wx.getWeRunData.html wx.getWeRunData接口报错 "errMsg": "getWeRunData:fail:system apperror","err_code": "-1" 手机品牌:华为 cpuType: vendor Kirin980
2023-11-27 - wx.getLocation在安卓上精度不高,speed无法准确获取
- 当前 Bug 的表现(可附上截图) 简单说就是,在ios上wx.getLocation可以获得5米的高精度,并且可以准确返回speed。可是在安卓上,几乎所有的设备都只能达到30米的精度,无法获取到speed - 预期表现 在安卓上能实现高精度的定位,以能够准确返回speed值用来实现测速功能 - 复现路径 - 提供一个最简复现 Demo
2019-05-09 - wx.getLocation的accuracy返回0~10000代表什么意思?
问题1: wx.getLocation的accuracy返回0~10000单位是米吗,怎么去理解这段数值? 问题2:模拟器返回的是特定数值? 调用代码 wx.getLocation({ type: 'gcj02', isHighAccuracy: true, highAccuracyExpireTime: 3000 })
2022-01-04 - 用经纬度计算商家和客户的距离怎么相差这么大?
计算货运费用,商家位置固定的,然后客户点击打开地图选择位置后获取到客户经纬度,然后拿来与商家经纬度计算,发现计算出来的公里数和打开腾讯导航后看到的公里数尽然相差到4,5公里,换个地点测试有时相差1,2公里,经纬度计算出来的公里数真不准。高手可以帮忙下吗?还是有什么好的做法?什么好的意见?谢谢
2021-10-17 - 小程序经纬度算距离的问题
调用第三方接口,比如腾讯地图的SDK,但是要在公众平台上配置合法域名,如腾讯地图要求:[图片] 但是,我去小程序配置完域名,在编译小程序,报的错是:域名不合法[图片] [图片] 求各位大神,告知!!!!
2017-11-21 - 根据两点经纬度来计算距离
如何根据两点的经纬度来计算两点间的距离
2017-09-19 - 3分钟搞定微信小程序类美团用户商家距离计算
前言 小程序实操,距离计算总结。 思路 一共有两种方法,各有利弊: 1.利用小程序的wx.getLocation 方法得到用户的经纬度,然后用已知的商家的经纬进行计算; 2.利用腾讯地图位置服务calculateDistance直接计算; 先熟悉下两个单词: longitude:经度; latitude:纬度; 下边是两种方法的具体实现 一、获取用户的位置信息,再进行计算(wx.getLocation) 1.小程序提供了获取用户位置信息的api,所以我们能直接获取到经纬度; 2.在腾讯位置服务坐标拾取器,获取商家的具体经纬度(例:北京故宫博物院116.397027(经度),39.917990(纬度)); 3.利用公式进行两点的经纬度计算,需注意:小程序默认坐标系是wgs84,您需设置为gcj02再试; 代码: [代码]Page({ data:{ }, onLoad: function() { var _this = this; _this.findXy() //查询用户与商家的距离 }, findXy() { //获取用户的经纬度 var _this = this wx.getLocation({ type: 'gcj02', success(res) { _this.getDistance(res.latitude, res.longitude, 39.917990,116.397027) } }) }, Rad: function(d) { //根据经纬度判断距离 return d * Math.PI / 180.0; }, getDistance: function(lat1, lng1, lat2, lng2) { // lat1用户的纬度 // lng1用户的经度 // lat2商家的纬度 // lng2商家的经度 var radLat1 = this.Rad(lat1); var radLat2 = this.Rad(lat2); var a = radLat1 - radLat2; var b = this.Rad(lng1) - this.Rad(lng2); var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2))); s = s * 6378.137; s = Math.round(s * 10000) / 10000; s = s.toFixed(2) + '公里' //保留两位小数 console.log('经纬度计算的距离:' + s) return s } )} [代码] 二、利用腾讯地图的位置服务 1、先到腾讯位置服务注册登录,申请key、引入依赖。 下图的第三步配置是要在小程序的后台那里设置,记得不要找错地方了。如图: [图片] 2、配置完成了之后,小程序重新编译一下 3、求两点距离文档:腾讯位置-两点求距 4、读完可知,我们只需要商家的经纬度即可,我们在小程序里实验一下 [代码]// 引入SDK核心类 var QQMapWX = require('../../utils/qqmap-wx-jssdk.js'); Page({ onLoad: function() { var _this = this; _this.findShop() //查询用户与商家的距离 }, findShop() { //拿到商家的地理位置,用到了腾讯地图的api // 实例化API核心类 var _that = this var demo = new QQMapWX({ key: '你申请到的key' // 必填 }); // 调用接口 demo.calculateDistance({ to: [{ latitude: 39.917990, //商家的纬度 longitude: 116.397027, //商家的经度 }], success: function(res) { let hw = res.result.elements[0].distance //拿到距离(米) if (hw && hw !== -1) { //拿到正确的值 //转换成公里 hw = (hw / 2 / 500).toFixed(2) + '公里' } else { hw = "距离太近或请刷新重试" } console.log('腾讯地图计算距离商家' + hw); } }); } }) [代码] 可能会出现的错误: {status:199,message:‘此key未开启webservice功能’} 此时需要打开腾讯位置服务-key配置,设置一下刚才申请key的详情页面,把下列选项全部勾上,把你小程序的appid也写上,webservice域名白名单设置为空即可。 保存完,重新编译再试 [图片] 作者:大师兄 链接:https://segmentfault.com/a/1190000017401316 来源:SegmentFault 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
2020-09-25 - 跪求大神解答:同城配送板块,门店位置经纬度怎么获取,用户位置如何获取,在计算两者距离。得出配送费?
跪求大神解答:同城配送板块,门店位置经纬度怎么获取,用户位置如何获取,在计算两者距离。得出配送费。这个用高德的吗?用高德的话应该怎么对接呀!收费嘛? 部分商城和餐饮小程序,我看都是先获取门店经纬度,用户位置微信可直接授权,计算两者距离,用高德地图的居多。如下图:(用那个功能呢?) [图片][图片]
2022-12-12 - 微信小程序地图中获取两个坐标之间的直线距离
在小程序中引入腾讯的微信小程序JavaScript SDK,这里面只提供了一个点到多点的步行、驾车距离。 如何获取到地图中两个坐标之间的直线距离。距离米
2018-03-16 - 记录--根据经纬度计算直线距离
/** 经纬度计算两点之间的距离,不是很准确 */ [代码]function distance(lat1, lng1, lat2, lng2) { lat1 = lat1 || 0; lng1 = lng1 || 0; lat2 = lat2 || 0; lng2 = lng2 || 0; var rad1 = lat1 * Math.PI / 180.0; var rad2 = lat2 * Math.PI / 180.0; var a = rad1 - rad2; var b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0; var r = 6378.137; var distance = r * 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(rad1) * Math.cos(rad2) * Math.pow(Math.sin(b / 2), 2))); return distance; } [代码]
2019-07-24 - 关于微信小程序地图怎么获取两点的距离
微信小程序目前提供是地图可以获取两点之间距离嘛!还是需要调动第三方接口
2017-03-06 - 微信小程序 经纬度获取两地距离
定义一个获取经纬度的方法,在使用的时候直接调用即可 /** * @desc 由经纬度计算两点之间的距离,la为latitude缩写,lo为longitude * @param la1 第一个坐标点的纬度 * @param lo1 第一个坐标点的经度 * @param la2 第二个坐标点的纬度 * @param lo2 第二个坐标点的经度 * @return (int)s 返回距离(单位千米或公里) */ distance: function (la1, lo1, la2, lo2) { var La1 = la1 * Math.PI / 180.0; var La2 = la2 * Math.PI / 180.0; var La3 = La1 - La2; var Lb3 = lo1 * Math.PI / 180.0 - lo2 * Math.PI / 180.0; var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(La3 / 2), 2) + Math.cos(La1) * Math.cos(La2) * Math.pow(Math.sin(Lb3 / 2), 2))); s = s * 6378.137; s = Math.round(s * 10000) / 10000; s = s.toFixed(2); return s; },
2022-03-13 - 微信小程序计算地球经纬度两点之间的距离
在微信小程序中,如何计算地球经纬度两点之间的距离,不啰七八嗦,直接上代码: Page({ data: { targetLatitude: xxx, targetLongitude: xxx, }, onLoad: function (options) { getCurrentLocation(); }, getCurrentLocation: function() { const { targetLatitude, targetLongitude } = this.data; const that = this; wx.getLocation({ type: 'wgs84', success(res) { const currentLatitude = res.latitude; const currentLongitude = res.longitude; const distance = that.calDistance(latitude, longitude, targetLatitude, targetLongitude); that.setData({ latitude, longitude, distance }); } }); }, calDistance: function (latitude1, longitude1, latitude2, longitude2) { var iLatitude1 = latitude1 * Math.PI / 180.0; var iLatitude2 = latitude2 * Math.PI / 180.0; var xLatitude = iLatitude1 - iLatitude2; var xLongitude = longitude1 * Math.PI / 180.0 - longitude2 * Math.PI / 180.0; //求地球上两点之间的距离 var iDistance = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(xLatitude / 2), 2) + Math.cos(iLatitude1) * Math.cos(iLatitude2) * Math.pow(Math.sin(xLongitude / 2), 2))); //地球半径 iDistance = iDistance * 6378.137; iDistance = Math.round(iDistance * 10000) / 10000; iDistance = iDistance.toFixed(2); return iDistance; }, }) 请,大家参考,原文发布在码嗨路书,点击 这里 查看详情,希望此文对您有帮助。
2023-03-14 - 小程序 地图功能 - 如何根据经纬度获取 两点 步行距离?
(小程序 map 组件,小程序 地图功能 - 如何根据经纬度获取 两点 步行距离?) [图片]
2020-02-19 - setLocMarkerIcon 设置自定义图标 起始方向?
[图片]是默认这样的角度吗? 上下左右,文档也不说一下。万一方向整错了。害死人啊。
2022-11-28 - 微信认证年审到期或失败哪些功能会受影响?
公众号微信认证名称加“V”被取消;订阅号不可在自定义菜单插入外链、“发送信息”暂不支持纯文字类型;服务号支付功能、授权等高级接口将被停用。
2020-04-23 - 微信认证年审快到期该怎么办?
1、为什么要进行微信认证年审? 微信公众平台开放的接口权限、微信支付商户功能等高级功能都依赖于微信认证资质认证结果,为了保证拥有相应权限功能的公众号是合法可信的企业/组织;一年后企业资质证件、相关运营人信息可能出现变更。为了保证使用公众平台高级功能权限的帐号依然是合法可信的企业/组织,微信认证每年都需要进行年审。 2、如何知道年审时间/有效期? 微信认证完成时,会在微信公众平台上显示下次年审的时间,认证到期前3个月会通过微信公众平台的通知中心提醒您需要进行年审。 3、年审方法? 电脑登录微信公众平台->设置->微信认证->去年审。
2020-03-18 - 小程序重新认证,如果认证失败后影响原来已经认证的吗?
小程序主体由于个转企重新认证更新主体信息,现在小程序资质过来,小程序原来名字不给过,如果算认证失败会不会影响原来已经认证过了的
2023-09-26 - 小程序审核:名称规则调整及优化建议
微信小程序的开发者们在发布小程序之前,需要给每个小程序起好一个名称,设置好logo、简介及类目信息,然后才能进行代码提审。 这些帐号的基础信息是用户对一个小程序的初步认知,平台希望这些信息能够给予用户准确预期每个小程序的功能和内容,也希望每个小程序的名称是具有独特性的,减少误导、混淆用户理解的可能性。 因此有以下几点名称规则调整及优化建议,希望开发者可以了解并遵循,后续可能会在名称审核、代码审核或已发布运营时,收到平台的审核通知或建议修改通知。 l 微信小程序的名称建议是品牌、商标或具有辨识度的短词 在微信小程序发布后,用户会通过搜索、传播等场景使用小程序的功能和服务。选择品牌、商标或具有辨识度的短词作为小程序的名称,可以帮助用户快速建立与小程序的记忆与关系。 名称为“印象笔记”会比“笔记”能更好的让用户记忆和理解,并使用“印象”品牌词进行搜索或传播。 [图片] l 不能直接使用功能性描述、广义归纳类的词汇作为名称 功能性描述的词汇虽然可传达出小程序所要提供的相关功能,但直接使用此类词汇,缺乏显著性且不具有识别、区分小程序的作用。 如名称为“牙科”的帐号,用户能直接理解小程序的内容可能与“牙科”相关,但对这个小程序帐号是没有建立认知和关系的。 [图片] l 不能同时使用地域性词汇与广义归纳类词汇进行命名 使用“地域+广义归纳类”词汇进行命名,同样存在指向性过于宽泛的问题。 如以下案例, 名称包含的地域词:“四川”、归纳类词:“系统门窗”,并不会让用户对帐号的功能产生有效的预期。以下示例是不允许的: [图片] 但在政务民生类服务场景,“广州地铁”、“广州公积金”可以被用户理解并接受属于政府或相关机构提供的服务和资讯,因此“地域+广义归纳类”词汇可被政府民生场景使用。 l 不建议使用具有营销属性的词汇进行命名 营销属性词汇如:免费、促销、清仓、打折等,鉴于活动规则普遍附有限制条件,在名称中使用,通常带有过于夸大的表达效果,并非是小程序的核心功能和用户的全部认知,存在误导的可能性。以下示例是不允许的: [图片] l 商品销售类小程序,需要包含品牌名称,不直接使用产品分类进行命名 商品销售类小程序,若仅使用产品分类进行命名,无法建立易于记忆、易于传播的品牌形象。如名称为“女鞋男鞋女包批发生产”,用户并不会因“女鞋”“男鞋”“女包”就会进行选择,反而“品牌+女装”才是用户真正需要的。以下示例是不允许的。 [图片] l 不在名称中堆砌热门搜索关键词 名称中堆砌多个关键词,过于冗长的热门搜索关键词堆砌名称无法建立品牌记忆,目的普遍是在搜索结果上获得更多的曝光。以下示例是不允许的: [图片] 结语 此次名称规则的调整和优化建议,平台希望开发者们能相应地调整自己的小程序名称。如未满足名称规范,平台会在后续的小程序名称设置、名称审核、代码审核流程进行规则提示和修改要求。并会在搜索场景优化需求基础上,对无辨识度的帐号名称进行搜索策略调整。 微信小程序完整的名称规则可具体参照《微信小程序平台运营规范》2. 基本信息规范,除以上规则与示例之外,当然还包括了不得使用违法违规的名称、不得使用侵权他人的品牌词进行命名、在命中敏感类目如医疗词时提交主体资质等规则。 平台希望小程序名称的优化调整,可以使得每个被开发者精心创造出来的小程序都能让用户在使用时、搜索时、传播时逐渐接受并建立对产品品牌的认知。
2019-05-14 - 提示小程序名称含通用词,请问怎样能通过认证?
你好,平台认为每个小程序的命名都应该有一定的辨识度,建议选具有辨识度的短词作为小程序的名称,具体名称规则可参考:https://developers.weixin.qq.com/community/operate/doc/00060288824708b8d588e4ae25bc01
2019-08-29 - 如果公众号资质认证成功,而名称认证作了失败处理。影响绑定的视频号的认证吗?
我们有视频号绑定在公众号上,现在该公众号的名称要作失败处理(资质认证已成功)。这样的话,影响以后视频号的认证吗?
2023-03-02 - 小程序微信认证认证审核问题汇总
1、微信认证申请入口 入口一:小程序账号后台:功能->微信认证 [图片] 入口二:小程序账号后台:设置->基本信息->微信认证->去认证; [图片] 入口三:小程序发布流程页 [图片] 2、小程序微信认证所需资料 微信认证选择对应认证主体类型,并提交相应的认证材料: [图片] 3、微信认证审核时间 微信认证费用支付完成之后1-3个工作日内完成。 4、认证状态和结果查看方式 请登录公众平台,从“设置->微信认证->查看“查看进度。 也可以拨打第三方审核公司的客服热线咨询审核进度。 5、微信审核失败费用是否退回? 除政府或部分组织(基金会、外国政府机构驻华办事处)可免费申请外,其他类型申请微信认证均需支付审核服务费用。这是用户基于腾讯提供的资质审核服务而支付的一次性费用,用户每申请一次认证服务需要支付一次审核服务费。无论认证成功或失败,都需要支付审核服务费。
2023-11-09 - 微信认证分为资质审核和名称审核的说明
1、审核阶段分别对应功能(为什么审核通过后无认证标识?) 微信认证分为帐号主体资质和帐号名称两部分审核: 1)帐号主体资质审核成功可使用功能权限:卡券功能、多客服功能,此外订阅号自定义菜单(可设置跳转外部链接,设置纯文本消息)、服务号可获得公众平台开放的所有高级接口; 2)帐号名称审核成功:则完成完整的微信认证,帐号会有认证标识、认证信息等。 温馨提示:设置业务域名、申请广告主功能需要同时通过资质审核及名称审核才可以申请。 2、申请认证时怎么区分资质审核和名称审核? 您在微信认证时填写页面保持不变,微信认证您填写完成后,会进入审核阶段,分为帐号主体资质和帐号名称两部分进行审核,无须用户手动选择。 温馨提示:帐号名称审核通过前(未获得认证标识),不影响自定义菜单和高级接口的使用。
2020-04-23 - 如何彻底解决小程序滚动穿透问题
背景 俗话说,产品有三宝:弹窗、浮层加引导,足以见弹窗在产品同学心目中的地位。对任意一个刚入门的前端同学来说,实现一个模态框基本都可以达到信手拈来的地步,但是,当模态框里边的内容滚动起来以后,就会出现各种各样的让人摸不着头脑的问题,其中,最出名的想必就是滚动穿透。 什么是滚动穿透? 滚动穿透的定义:指我们滑动顶层的弹窗,但效果上却滑动了底层的内容。 具体解决方案分析如下: 改变顶层:从穿透的思路考虑,如果顶层不会穿透过去,那么问题就解决了,所以我们尝试给蒙层加catchtouchmove,但是发现部分场景无效果,那么就不再赘述了。 改变底层:既然是顶层影响了底层,要是底层不会滚动,那就没这个问题了。 如何改变底层解决该问题呢? 不成熟方案: 底部页面最外层view设置position: fixed;页面不可滚动,但是这个时候会导致页面回到顶部。 滚动时监听滚动距离,弹窗时记录滚动位置,关闭弹窗后使用wx.pageScrollTo回滚到记录的位置。 成熟方案 使用page-meta组件,通过该组件我们可以操作Page的style样式,类似于h5里body设置overflow: hidden; 控制页面不可滚动。文档地址:https://developers.weixin.qq.com/miniprogram/dev/component/page-meta.html 使用wx.setPageStyle设置overflow: hidden, 也可以实现给Page组件设置样式。) page-meta组件: 通过该组件我们可以直接操作[代码]Page[代码]组件 ,我们给它的wxss样式overflow动态设置[代码]hidden[代码]or[代码]visible[代码]or[代码]auto[代码] 就可以控制整个页面是否可以滚动。 [图片] wx.setPageStyle方法: 调用这个api,动态设置它为hidden/auto,用于控制页面是否可滚动,主要用于页面组件内使用,比如封装好的弹窗组件,就不用单独写page-meta组件了。。 [代码]wx.setPageStyle({ style: { overflow: 'hidden' // ‘auto’ } }) [代码] 老规矩,结尾放代码片段: https://developers.weixin.qq.com/s/U6ItgQmP7upQ 拓展 支付宝小程序虽然存在page-meta组件,但是由于内核为69版本,给page设置overflow: hidden 也无法控制底部元素不可滚动,目前已联系支付宝的底层开发同学提供API控制页面disableScroll,目前正在封装Appx,近期开放。
08-06 - 「笔记」个人主体迁移到企业主体小程序踩坑
前言 作为开发者,相信很多人都是个人开发小程序,想着等以后做大了或者有公司后再迁移。 迁移 小程序的迁移过程并不复杂,根据后台提示进行操作,提交相关资料就可以了。 迁移中的注意事项 如果迁移的企业和原主体是同一个管理员的话可以选择不变更小程序管理员,申请函中填同一个人的手机号或者只填一个就可以,但是小程序后台填资料的时候一番操作后会告诉你目标主体和原主体不能使用同一个手机号码,必须使用不同的号码(大部分人都有多个手机号,所以这个也不是什么大问题),迁移过程中审核人员会分别拨打2个号码进行确认,而且是上一个号码拨打完立马就拨打下一个,所以如果是同一个人的话最好手机都在身边。 迁移成功后 收到迁移成功后可能以为就万事大吉了,但是你登录后台的时候会发现小程序的主体信息变更了,但是微信认证状态是[代码]未认证[代码],这时候我不知道其他人是什么想法,反正我看到第一时间可能是很多头羊驼在奔腾,如果需要认证的话还需要走一遍认证流程。 在迁移后未认证状态的小程序大部分功能使用,比如[代码]业务域名[代码]可以直接配置,目前不知道对实际审核会有什么影响。 迁移后可复用公众号资质认证 经过上面的误解,最后发现通过公众号后台的小程序管理里点开迁移过来的小程序详情可以[代码]复用公众号资质认证[代码]进行免费认证,切记不要在小程序后台里走认证流程,那个还是需要支付300。 [图片] 本文仅代表个人观点,希望大家不要花冤枉钱。
2020-06-11 - 微信开放平台创建第三方平台详细教程来啦!
一、操作步骤简介 1、登录微信开放平台,进入管理中心-第三方平台,点击创建第三方平台账号 3、填写基本信息 4、选择权限集(平台型服务商) 5、填写开发资料(平台型服务商) 6、提交审核,等待审核通过即可完成创建 7、如果需要修改基本信息和开发资料,则需要进行全网发布方可生效 8、如果需要修改权限集信息,则无需进行全网发布 二、操作步骤详情 1、创建第三方平台[图片] 2、填写基本信息平台型服务商指的是,可以一键授权给第三方平台,通过第三方平台来完成业务的服务商定制化型服务商指的是,具有完整开发独立小程序或插件并可以提供后续运营的服务商[图片] 3、配置权限集 权限集建议按需进行配置[图片] 4、填写开发资料 [图片] [图片] 5、资料填写完毕,点击“提交”,等待审核。
2021-07-14 - 小程序内容安全能力2.0上线公告
为提高微信开放平台生态安全性,针对小程序各内容场景中可能存在的安全问题,平台正式上线内容安全能力2.0,以协助开发者维护小程序内容安全。 小程序内容安全能力2.0介绍如下: 一、应用场景 文本内容安全检测:支持用户资料检测,用户文字评论检测,论坛文字内容检测,社交日志文字内容检测。 图片内容安全检测:支持用户头像检测,用户图片评论检测,论坛图片内容检测,社交日志图片内容检测。 音频内容安全检测:游戏聊天频道中的语音检测;直播中的主播语音检测;论坛社区发布相关媒体内容的音频检测。 二、性能优化 1. 接口识别准确度提升:通过不断优化敏感词库和深度学习技术,接口识别的准确度有较大提升。 2.接口识别结果精细化:接口的返回结果包含综合结果和详细检测结果,除了会提供处置建议外,还会标明具体的违规类型,分数,命中所配置的自定义关键词,可以更好地满足开发者个性化的需求。 3.新增自定义关键词功能:登录小程序管理后台,在【开发→开发管理→安全中心→内容风控】进行自定义关键词库的配置,具体可操作添加相应关键词的标签、分值和处置建议,接口将识别包含自定义关键词的违规内容,可以更灵活地满足开发者业务需求。 [图片] 三、解决方案 微信开放平台通过开放API的方式给开发者提供内容安全2.0接口,调用地址、请求参数及说明详见接口文档: 文本内容安全接口文档:msgSecCheck音频/图片内容安全异步接口文档:mediaCheckAsync“游戏”类目推荐: 文本内容安全接口文档:gamesecurity.msgSecCheck音频/图片内容安全异步接口文档:gamesecurity.mediaCheck四、问题反馈 内容安全能力2.0常见问题可查看常见问题F&Q文档,如有其他疑问,欢迎随时参与官方社区讨论。
08-12 - 小程序内容安全能力2.0常见问题汇总
Q1:是否有提供图片的同步接口? 2.0版本暂不支持,可使用1.0版本的 imgSecCheck 图片同步接口。 Q2:接口是否有频率和配额限制? 2.0版本的频率及配额限制和1.0版本保持一致,计算均采取同api名相加(1.0+2.0)的方式。 msgSecCheck:频率限制:单个 appId 调用上限为 4000 次/分钟,配额限制:2,000,000 次/天 mediaCheckAsync:频率限制:单个 appId 调用上限为 2000 次/分钟,配额限制:200,000 次/天 Q3:为什么接口会报错61010? 用户访问记录超时,请检查传入的openid是否未在近两小时访问小程序。 Q4:为什么security.msgSecCheck无论检测任何内容都返回正常结果?①若为1.0接口切换2.0接口的开发者,请注意,判断两个接口的返回结果存在差异:使用1.0接口时,当errcode返回0,errmsg返回ok,代表的为内容正常; 使用2.0接口时,当errcode返回0,errmsg返回ok,代表的为请求成功,实际的综合检测结果需查看result返回值,详细检测结果需查看detail返回值。 ②若为初次接入的开发者,建议可使用 微信调试工具 确认调用结果,以便排查调用问题: (1)需为post提交;(2)最后编码的数据需为utf-8编码 ; (3)具体代码示例建议可参考社区帖子 Q5:接口的场景值应该如何进行选择?① 资料:对用户个人头像,昵称,介绍等资料的检测 ② 评论:对用户评论内容的检测 ③ 论坛:对用户互相聚集讨论内容的检测 ④ 社交日志:对用户发表的社交日志的检测 建议优先接入与业务相符合的场景,若无相符合场景可选择,可根据实际测试结果选择与自身业务需求相匹配的场景,针对不同的场景特征,不同场景值的检测结果可能存在差异。 Q6:自定义关键词功能如何进行使用? 开发者登录小程序管理后台,可在【开发→开发管理→安全中心→内容风控】进行自定义关键词的配置。具体可操作添加相应关键词的标签、分值和处置建议,接口将识别包含自定义关键词的违规内容,可以更灵活地满足开发者业务需求。 [图片] Q7:自定义关键词功能最多能导入多少条? 每个小程序最多支持导入一千条关键词,请开发者合理进行使用。 Q8:除了小程序,其他场景可以接入使用吗? 目前主要还是解决小程序的问题,现阶段不考虑拓充其他场景。 开发者如有其他疑问,欢迎随时参与官方社区讨论。
2022-09-26 - 内容检测结果有误
https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/sec-check/security.msgSecCheck.html 敏感词校验有问题 校验结果 显示 label 20002 敏感词内容 红包,红包,红包,面膜 trace_id:6231b3dd-35e1cf61-4eefb510 6231b40a-457a1a53-1c280e01
2022-03-17 - PHP开发调用msgSecCheck,违规内容也返回无问题
通过PHP调用msgSecCheck,无论什么内容均返回OK,无问题,即使是很明显的违规词也返回无问题。 而且看过相关的问题处理,已经是post提交,且验证的内容也是utf-8。 复现demo: <?php $checkContent = '要检测的内容'; $url = 'https://api.weixin.qq.com/wxa/msg_sec_check?access_token=ACCESS_TOKEN'; $data = json_encode(array('content'=>$checkContent)); $ch = curl_init(); curl_setopt($ch, CURLOPT_HEADER, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_URL,$url); // url curl_setopt($ch, CURLOPT_POST, TRUE); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); // json数据 $res = curl_exec($ch); // 返回值 curl_close($ch); $result = json_decode($res,true); echo "<pre>"; var_dump($result); echo "</pre>"; ?>
2018-08-28 - security.msgSecCheck为何有些内容无法拦截?
当前security.msgSecCheck接口主要识别明显违规的涉政,色情样本。 对于一些低俗擦边的内容,开发者可以根据自身情况进行识别和过滤,可自行开发一个自己的简易关键词库,对需要拦截的内容进行拦截
2019-11-20 - security.msgSecCheck内容安全监测全返回成功
关于内容安全监测测试内容的问题,可以先自行确认以下问题: 1、是否采用post请求方式 2、是否已经把unicode转为utf-8 (参考链接:https://www.jb51.net/article/70251.htm) 3、内容安全监测主要是覆盖涉政,色情,违法这几类
2019-11-20 - 小程序地图 map 支持polyline轨迹渐变回放吗?
暂时只看到彩虹色分段,但是很奇怪从没搜到过像其他家的轨迹渐变的教程 高德: [图片] 百度: [图片]
2021-12-31 - 小程序现在能否实现稳定的运动轨迹记录呢?类似第三方运动健康软件似的,记录跑步的轨迹。
想请问一下官方的大佬们,小程序现在能否实现稳定的运动轨迹记录呢?有对应的api用吗,类似第三方运动健康软件似的,记录跑步的轨迹。 公司想在小程序上加入一个跑步的功能板块,需要记录到对应的运动轨迹,求解答。。
2020-01-06 - [小程序计步] 活力健身房
简介 一款基于手机加速度传感器的跑步记录小程序。 用步伐丈量世界,在活力健身房记录你的跑步轨迹,助你更快达成你的跑步目标。 运动海报,记录每一天的变化,分享好友相互勉励,在活力健身房健身不再是孤独的坚持。 小程序码 [图片] 截图 [图片] [图片] [图片] [图片] 心率测量 最近重写了心率测量算法,使得计算精度更高,效率也变得更高,并且加入了血氧浓度估算,欢迎大家体验。 [图片] PS 这次开发的这个小程序其实就是Lebu的升级版本,算法上升级到了2.0,计算算法更加准确且高效。加入了轨迹图,逐公里的配速曲线以及逐公里的海拔曲线。还支持运动信息海报生成。终于是把在Lebu上没实现的功能都开发完成了,开心owo
2021-07-03 - 云函数new Date()时间不对 相差8小时 如何设置北京时间
在云函数中,如果使用: let date = new Date(); console.log(date); 结果是比正常时间少8小时,为什么呢? 经过查询,得出了原因: [图片] 文档路径:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/functions/notice.html 找到原因就可以解决了 在微信开发者工具——>云开发——>云函数——>点击指定函数的版本管理——>配置 [图片] [图片] [图片] 大功告成!!!
2020-11-06 - 云开发环境env究竟有谁说了算?
云开发设置了2个env id, 1.在云函数使用cloud.DYNAMIC_CURRENT_ENV cloudinit({ env cloud: DYNAMIC_CURRENT_ENV, traceUser: true, }) 2.在小程序端必须指定一个env wxcloudinit({ env: 'xxx', traceUser: true, }) 3.在开发者工程界面需要指定一个env [图片] 4.在云开发控制台有‘环境名称’设定 [图片] 请问env究竟由哪里说了算?4个入口可以指定,不反-人类吗?
2019-12-20 - 小程序流量主运营技巧
前言(写给入坑的小白) 本文不涉及任何需要资质的小程序(如:视频类目)。小程序流量主是个人和小微企业主要变现途径之一,满1000人即可开通流量主(登录mp.weixin.qq.com,左侧边栏-推广-流量主-开通即可)。开通后,开发者可从流量主-广告位管理添加广告位,目前有6种广告位。 [图片] 正文(本文约很多字,分为四大主类,手里有1-10个小程序建议全部看完;手里有10个以上小程序,可跳过1、2、3,均为个人观点,不喜使劲喷) 一、小程序定位 小程序定位目前有以下四种,均不需要任何资质,个人(商城除外)/小微企业都可以做,由于本人不擅长文字表达,每个类型只选择一个做分析,谅解。 1、工具类 工具类有很多可以做:题库、技术文档、教程、去水印等。目前最火爆的应该属于疫情相关类的工具,关于疫情数据类小程序不做分析,没资质也没权利,主要说疫情周边可运营的工具。头像口罩,代表小程序:头像加口罩、戴个口罩吧、戴上口罩(每日搜索量约等于2000),可参考以下做法: [图片] 以下为近7日访问数据量 [图片] 盈利方式:流量主 延伸参考:如果仅做头像加口罩的话,那么疫情过后,这个小程序会直线下降,将无任何作用。如果开发者手里目前有类似小程序,可参考“头像加口罩”做法,逐渐去延伸头像周边功能,例: ①、头像加字:头像+数字、头像加V、头像加字、头像加圣诞帽、新年头像边框、头像加福、头像加明星等 ②、聊天背景图、壁纸:武汉加油、卡通、美女(不要漏点太多)、二次元、跑车、科技等 ③、趣味九宫格配图:类似朋友圈9张图,中间获取用户自己头像,周围8张图弄点能吸引用户的等 ④、文字秀:微信昵称下标、上标、个性昵称等 运营分析:如果参考以上4点做法,首先你的程序再疫情结束后,不至于直线下滑,最起码能留住一些用户(UI很重要) 个人建议:工具类的好处就是不需要去长时间盯着后台,建议有想法的开发者,可以入门5-10个左右工具类小程序(功能不要相同)。 推广方式:参考本文第四大板块内容 2、返利类 主流返利平台:淘宝、天猫、拼多多、京东、蘑菇街、唯品会、网易考拉,以下参考 [图片] 盈利方式:返利(主)+流量主(辅) [图片] 基础分析:每个人微信里都会有一个或多个微信群是给你们购物优惠券链接的,他们盈利方式主要是靠每个平台的返利,比如淘宝天猫的叫“阿里妈妈”、拼多多的叫“多多进宝”等 运营分析: ①、平台功能:提供所有优惠券、商品返利、代理入驻、提现(个人可做收款码、企业可对接微信支付到零钱) ②、招代理商、可以给代理商(兼职、宝妈)50%以上的返利 ③、除了商品优惠券之外,可以把返利分给一部分给到用户。首先,用户会花更少的钱买到商品;其次,用户买完东西还会赚点小钱,每个月可提现到微信零钱。这样用户会发生裂变,省钱+赚钱。 个人建议:开发者至少有一个类似的返利小程序,每个月只需运营一天,工作内容一是把用户的返利发给用户&代理商,二是自己去各大平台领取每个月的“工资” 推广方式:参考本文第四大板块内容 3、商城类(个人开发者可跳过) 商城类,本人运营的比较少,每天就10-20单左右,卖啥就不做广告了 盈利方式:差价 基础分析:如果自己手里有一些商品低价资源,可以做一个“综合服务商城类目”,然后去试着用广告主去推一下 运营分析: ①、平台功能:砍价、返利、拼团、回购、入驻、积分、抽奖、游戏营销 ②、广告主曝光&点击报价不要最低,也不要最高,理由就是最低的话,80%的钱会给你推到一些质量很差的微信用户,比如我。 ③、对接圈子,虽然圈子刚起步,不确定能不能做大,万一呢? 个人建议:企业一定要有一个自己的商城,哪怕没人买。这种东西怎么说呢,就好比一个企业站,虽然没什么用,但是得放那儿,万一客户要看呢? 推广方式:参考本文第四大板块内容 4、游戏类(非小游戏) 答题、成语、找茬等类似运营的比较多,可自行搜索,不要认为这是游戏,开发者就望而却步,在线教育类目是可以通过的,这个开发者很多都不知道。以下可参考: [图片] 盈利方式:流量主 基础分析:基本所有的模式都是闯关类型,这种类型的小程序,基本都是用户消磨时间用 运营分析:关卡尽量多,入门、初级、中级、高级,高级模式可以做类比循环,形成无限关卡模式,闯关奖励机制,签到机制等。这种类型的小程序比较方便运营,裂变起来也快。 个人建议:裂变模式一定要有,虽然微信会严格把控这方面功能,但是开发者可以做一些技巧,不要让用户强制或者主动去触发,这样微信对开发者还是很友好的。 推广方式:参考本文第四大板块内容 二、小程序开发 有实力的开发者,自己开发,云开发很快,会前端就可以了,没实力的去正规平台买源码,论坛源码也很多,有部分论坛还是嵌入了比特币勒索,自己做好防护。个人建议:开发者能开发尽量自己开发,后期迭代方便,不要像我一样,50多个小程序80%是买现成去运营的。反正各有各的好处,开发者可自行决定,运营者可选择直接购买源码直接上线运营,前提是自己看好功能是不是和自己要的一样。有些SAAS平台的开发者实力还是可以的,支持定制功能。此处不做广告,自行搜索或者询问朋友。 三、广告位位置及利润 开发者的每个页面广告位一定要分开!一定要分开!一定要分开!这样做的目的是为了分析每个广告位的利润,好去做调整,把收益最大化。 失败案例举例:小程序的主页、个人中心页用同一个banner广告位,这样做出来一点好处都没有,后台只能看到banner收益是多少,看不到是哪个页面收益。极端情况,收益全部再首页,个人中心页没有广告收益,这种情况开发者是不知道的,如果把广告位分开,这种情况可以去优化个人页面,或者主页面换成视频banner。广告位分析页面:流量主--数据统计--广告数据--广告指标明细--细分数据 [图片] [图片] 1、很多人表示,疫情期间流量主收入下滑。这个原因不是因为微信调整流量主收益,根本问题是自己的用户质量。举个例子,当你开通流量主之后,你的用户还是这1000个,假如你第一天收益为100,你很开心,1000用户就能赚100,你第二天就放弃推广了,这样的话,你的用户质量是会逐渐下滑,微信方完全可以认定为你这1000人都是自己的号,去刷广告费的。长此以往下去,你的流量主利润会无限趋向于0。举个栗子: [图片] 2、广告位位置一定要合理好看,但是不代表“流氓”,比如全明星代言的某游戏“元宝无限收一刀999”点哪儿哪充值。开发者需要注意的是小程序的质量,需要用户在每个页面停留的时长最起码30秒,这样一个完整的视频广告才能曝光完。 3、banner广告收益是按有效点击计算的。很多人好几千曝光,但是点击只有几个、十几个,这种情况需要不断去优化接入的场景/位置,提高用户点击意愿。个人技巧:banner广告位尽量不要太多,1-2个就可以。尽量多放几个视频广告位,这样曝光也有收益。格子广告没试过,用过都说不好~ 4、激励广告作为流量主最高收益是有一定道理的,用户为了获取某些奖励是必须观看完整的,所以给开发者建议:用户如果可以获得小程序内某些奖励,可以适当多放一些激励广告位。 5、所有的广告位都是根据用户年龄、爱好等参数去调取相应的广告,开发者不需要去考虑 6、广告收益个人认为:激励》视频》插屏》前贴》banner》格子(格子没试过,暂放倒数第一) 四、小程序推广 尽量做成年人主打的小程序,有些开发者觉得好玩儿,做一些儿童益智类的小程序,你是认为儿童有手机,还是认为家长愿意让孩子玩儿手机呢?这个很不解。没有鄙视的意思,也许是情怀吧~~毕竟我做小程序比较俗,就是为了赚钱。 主流推广方式:公众号引流、截流,由于涉及一些不合常规的内容,本文只说常规操作,剩下的自己领悟,或者可以联系我~ 首先小程序的名字至关重要,一个好的名字可以带来无限的流量,再加上裂变功能(邪恶的微笑)。起名字的时候可以用到的工具:搜索小程序-微信指数,查询关键字,尽量找稳定再1000万以上的搜索量,从关键字中摸索自己的小程序名字。这样用户搜索到你的小程序几率会很高~ 1、工具类核心玩儿法(适用于所有小程序推广):文章引流,截取关键字,火爆主题,比如2019年12月19日庆余年全集泄露、2020年疫情(不要发疫情数据内容,要发一些正能量的有内容文章去引流),我阅读过的文章最低的阅读量8000左右,最高的10万+,据说有好几百万的阅读量。如果你的文章写的好,结尾放一个小广告:为防止疫情蔓延,请给您的头像带上口罩~,啪,一个卡片小程序(或二维码),流量自己想~ 推广对象:18-30岁 2、返利类核心玩儿法: ①、可以参考工具类玩儿法 ②、各大微信群、QQ群,去推广,招代理等方式,或者去买一些基础流量,进行裂变,实际运营看下效果,好继续针对用户群体去推广,建立自己的群体系,群内发商品返利链接。微信好友没人?给你举个例子,我这篇文章发完,如果加个我的二维码,最起码能有100人加我,不是我文章写的有多好,是你永远不知道用户有什么样的目的和需求~ 推广对象:18-60岁 3、商城类核心玩儿法 ①、可参考返利类核心玩儿法,拥有自己的客户群体系,发一些自己的商品还是可以的,一定要带分销体系,你懂得~(最高3级,再高就是传销了) ②、广告主、目前效益个人感觉不明显,每次花1000块钱做广告,利润基本没有,和发广告的钱持平,而且用户留存也不是很高,可能是我的商品比较单一等各方面因素吧,不过赚流量还是不错的。 推广对象:18-30岁(以我的商城为例,还需看商城出售的内容) 4、游戏类核心玩儿法(非小游戏) ①、一个好的名字就够了。举例:精选商品橱窗(腾讯官方),微橱窗(我朋友的)。不得不说,这波流量很高,遗憾的是,他不是火爆的游戏类小程序~ [图片] ②、参考工具类玩儿法,文章引流截流 推广对象:18-40岁 五、小程序矩阵 矩阵一定要有,矩阵一定要有,矩阵一定要有,防截流,底配10个小程序。不是纯矩阵,是微信开发规定,每个小程序可以跳转10个小程序,开发者可以利用这个功能去添加自己的矩阵来获取更多的流量收益,保证自己的用户在自己的矩阵圈活动。 [图片] 写这篇文章主要是给大家传授经验,希望小白能学到点东西,入门后的朋友可领悟到更多运营方法,江湖之大,附月账单有缘再见 [图片]
2020-05-25 - 小程序盈利模式入门指南
如何通过小程序盈利、如何开通流量主、小程序有哪些广告类型 本文概述 由于上一篇介绍的文章,没法进行编辑,本文主要在上一篇的基础上着重再讲广告的分成模式。 小程序如何盈利 目前对个人小程序开发者而言,只有通过开通流量主,并且按照官方规范要求添加广告位,才能获取收益,当然打赏除外。 小程序流量主 流量主是微信对外提供的一个服务,通过开通流量主,就可以在小程序合适的位置引入广告位,进而实现收益 小程序流量主开通流程 https://developers.weixin.qq.com/community/develop/doc/000046f02244a041da79753e557009 1.开通条件:小程序累计独立访客(UV)1000以上,且无违规记录,即可开通流量主功能。 温馨提示:如满足条件仍无法开通,可能是数据同步问题,建议等待1-2个工作日后再试。 2.申请方法:进入微信公众平台小程序后台,点击左侧面板“流量主”,满足开通门槛的小程序开发者点击“开通”,提交财务资料,待审核通过后成功开通流量主功能,即可创建相应的广告位。 3.广告接入指引: 广告接入可查看下面具体文档 微信小程序广告接入指引 https://wximg.qq.com/wxp/pdftool/get.html?id=BJSyDkLqz&pa=14&name=miniprogramAds_supplier_manual 小程序流量主结算方式 对个人小程序流量主而言,广告收益是在扣除个人所得税之后,直接到个人银行账户的,目前每月结算两次。 [流量主结算周期及开票规则调整说明][2019-12-03发布] https://mp.weixin.qq.com/promotion/readtemplate?t=notice/detail_page&time=1575340587¬ice_id=634169 小程序广告位介绍 广告类型有哪些 下面主要介绍小程序广告组件以及重点介绍下分成模式 Banner广告 激励式视频 插屏广告 视频广告 视频前贴视频 下面我们从目前几个主流的小程序给大家截图展示,让大家更真实的认识不同类型的广告 [banner广告] [图片] [插屏广告] [图片] 视频广告 [图片] 激励式广告 以下截图来自抽奖助手(没错,就是那个广告收入月入200多W的无码科技旗下冯大辉老师的抽奖助手) [图片] 以下截图来自激励式广告指引官方文档 [图片] 不同广告类型的分成模式 Banner广告的分成模式如下: 根据用户的每一次广告点击,平台收取广告费用并与流量主分成。100W元以下广告流水,按照5:5分成,100W元以上广告流水,按照3:7分成(流量主3成),分成不设封顶。 实际分成以后台“数据统计”页面展示为准 视频广告、插屏广告、激励视频广告分成模式如下 按照每一千次有效的广告曝光,平台收取广告费用并与流量主分成。100W元以下广告流水,按照5:5分成,100W元以上广告流水,按照3:7分成(流量主3成),分成不设封顶 实际分成以后台“数据统计”页面展示为准。 哪种广告类型收益相对最大 直接从后台截图吧 [图片] 在10月30号,将banner广告同一替换为激励式视频广告和视频广告,收益很明显从30元上升到90元、150元 可以看到视频广告相对于banner广告,对于收益增加是有用的。 下图是某小程序12月4号一天的收益数据 [图片] 12月4号一天,不同广告类型,收益分析 总收益 194.74+23.27+147.82=365.83 具体分拆来看 广告类型 点击量 总收益 单个点击收益(元) banner 1956 194.74 0.099 插屏广告 62 23.27 0.375 激励式视频广告 152 147.82 0.972 通过上图我们对比分析,不难得出以下结论:激励式视频广告单个点击的收益最大、 当然我们不能通过单一维度来了解哪种收益最好,还要综合考虑,比如哪种广告对用户影响最小,毕竟不管哪种方式,广告的接入肯定会带来交互体验上的障碍, 我们必须在交互体验和广告收益这两者之间做好权衡。 系统公告 2019年4月25号,小程序广告组件新增激励式视频广告与插屏广告,进一步丰富开发者的广告变现方式,开发者可到流量主模块进行开通,具体规则见《小程序激励式视频广告开通指引》,《小程序插屏广告开通指引》。 激励式广告于2019年7月31日支持30秒视频素材,广告流量将逐步放开,MP后台-广告位管理模块可支持选择6-15秒视频或6-30秒视频素材的功能,请流量主根据产品进行调整。 小程序视频前贴广告组件已于8月30日正式全量上线,开通后即按广告曝光获得分成收入,进一步提升流量变现收益。 程序视频广告已于9月4日正式全量上线,开通后即按广告曝光获得分成收入,进一步提升流量变现收益。 2019-09-04小程序视频广告与视频前贴广告已面向非游戏类小程序全量上线,进一步丰富开发者的广告变现方式。 开发者可到流量主模块进行开通,开通后即按广告曝光获分成收入,进一步提升广告收益水平。 具体规则见《小程序视频广告流量主主指引》,《小程序视频前贴广告流量主指引》。 官方文档 流量主接入指引文档、小程序广告组件流量主操作指引 https://wximg.qq.com/wxp/pdftool/get.html?id=BJSyDkLqz&pa=14&name=miniprogramAds_supplier_manual 应用规范 https://wxa.wxs.qq.com/mpweb/delivery/legacy/pdftool/get.html?id=rynYA8o3f&pa=10&name=miniprogramAds_supplier_guidance 小程序流量主应用规范 https://wximg.qq.com/wxp/pdftool/get.html?id=rynYA8o3f&pa=10&name=miniprogramAds_supplier_guidance 处罚标准 https://wxa.wxs.qq.com/mpweb/delivery/legacy/pdftool/get.html?id=BkTGkbs2G&pa=1&name=miniprogramAds_supplier_regulation 小程序视频广告流量主指引 https://wximg.qq.com/wxp/pdftool/get.html?post_id=1317 小程序视频前贴广告流量主指引 https://wximg.qq.com/wxp/pdftool/get.html?post_id=1318 小程序激励式视频广告开通指引 https://developers.weixin.qq.com/community/develop/doc/00060ef22cc00855a4681691c5bc01 小程序插屏广告开通指引 https://developers.weixin.qq.com/community/develop/doc/0002680c7f4960344578da0a756801 小程序视频广告流量主主指引 https://wximg.qq.com/wxp/pdftool/get.html?post_id=1317 小程序视频前贴广告流量主指引 https://wximg.qq.com/wxp/pdftool/get.html?post_id=1318 提升广告收益怎么做?四大流量主增收妙招 https://wximg.qq.com/wxp/pdftool/get.html?post_id=1699 文中流量主单篇文章插入两条广告使用邀请 https://wximg.qq.com/wxp/pdftool/get.html?post_id=331 总结 从纯收益的角度来讲,在各种广告类型中,视频广告(包含激励式视频广告、视频广告、视频前贴广告)要比banner广告要好,而且好很多 从用户体验来讲,插屏广告是首次打开带插屏广告的页面强制弹出的,但是广告过后,在页面是不占空间的,这是区分与其他广告的地方,banner广告、激励式视频广告、视频广告、视频前贴广告都是在页面中占固定的空间的,这一点要小程序运营同学权衡。 Banner广告是按点击,激励式视频、视频广告、插屏广告都是按照曝光来收取广告费用的,这一点非常重要,难怪我每次手工点击我的视频广告没有见流量的增加[哭脸.jpg]。[感谢 @ 仙森 补充于2019年12月9号] 虽然对个人开发者而言,我们开发小程序的目的是为了收益(当然也有为了情怀而开发),在了解如何收益的情况下,我们还是应该尽量把精力放在小程序本身的开发上面。 结算对账单 [图片] [图片] 收入截图 1 [图片] 1 收益截图 1 [图片] 1 1 感谢 在此特别感谢,小程序运营讨论群的两位小伙伴,微信号中间两位已打码 1、@迭戈 (yang_##chun) 2、@风猫 (cs##26) 3、@citizen four
2021-01-24 - 如何调用API关闭广告?
Promise InterstitialAd.show()显示插屏广告。 没有关闭广告的API吗?只有show没有close吗?
2020-07-23 - 直播教程-矩阵小程序流量主广告怎么赚钱
一篇文章成了2月突出贡献 [图片] 原文如下: 小程序流量主运营技巧 文章发布后,收到很多私信,也有很多朋友想让我教怎么做小程序流量主赚钱,说实话这个东西没有系统的教程,不知道从何教起,于是整理了一周的资料准备开个直播给大家演示一下,全部从0开始免费做自己的流量,直播的内容主要有: 1、小程序申请、起名、上线(代码已购买) 2、公众号申请、起名、文章引流到小程序 3、聊一些小程序你不知道的小技巧 4、互动问题解答 (我的骨子里是一个程序员,大家不要太期待直播的激情) 直播大约2个小时左右,具体时间群里通知(本来想用直播插件,后来发现直播插件不支持OBS,大家看不清楚我的操作,准备用第三方直播) 个人简介: 本人现在有58个小程序,其中个人小程序有10个,企业小程序48个。 1个名字测试小程序(测试名字是否可以注册)2个空小程序(抢注名字用),3个测试小程序(名字测试自然搜索量) 其中工具类11个,答题类13个,视频类(腾讯视频插件)12个,游戏类5个,返利类1个,商城1个,其他类6个(高流量小程序给其他引流) 我不是什么大佬,可以教大家一些小技巧,避免绕弯路。 下图是半月结算单,2月份收益都比较高,正是疫情期间都在家没事儿干,加上文章推广引流,效果还不错 [图片] 个人主页有微信
2020-03-22 - 小程序流量主、广告位类型和广告收益分析
小程序流量主、广告位类型和广告收益分析 ## 本文介绍 最近在小程序的几个微信群,经常有朋友问到以下几个问题 1、小程序怎么盈利 2、小程序流量主是什么以及怎么开通 3、小程序广告有哪些类型,哪种广告类型相对收益最大 4、 ## 小程序如何盈利 目前对个人小程序开发者而言,只有通过开通流量主,并且按照官方规范要求添加广告位,才能获取收益,当然打赏除外。 ## 什么是流量主如何开通 流量主是微信对外提供的一个服务,通过开通流量主,就可以在小程序合适的位置引入广告位,进而实现收益 登录公众号后台( https://mp.weixin.qq.com/ )在左侧菜单中,找到 推广-流量主,点击进去会看到如下截图 [图片] 小程序流量主: 1.开通条件:小程序累计独立访客(UV)1000以上,且无违规记录,即可开通流量主功能。 温馨提示:如满足条件仍无法开通,可能是数据同步问题,建议等待1-2个工作日后再试。 2.申请方法:进入微信公众平台小程序后台,点击左侧面板“流量主”,满足开通门槛的小程序开发者点击“开通”,提交财务资料,待审核通过后成功开通流量主功能,即可创建相应的广告位。 3.广告接入指引: 广告接入可查看: 微信小程序广告接入指引 在开通流量主的过程中,会绑定个人银行卡,以方便进行后续的广告收益结算,目前结算每月两次,具体官方公告可以查阅 [流量主结算周期及开票规则调整说明][2019-12-03发布] https://mp.weixin.qq.com/promotion/readtemplate?t=notice/detail_page&time=1575340587¬ice_id=634169 ## 广告类型有哪些 Banner激励式视频插屏视频广告前贴视频 以下为各广告类型,截图示例, [banner广告] [图片] [插屏广告] [图片] 视频广告 [图片] 由于插屏广告会影响用户体验,所以不建议放太多场景使用。 具体不同类型广告体验,可以扫码 [图片] 首页模块-->>插屏广告使用说明-->>视频广告关于我们-->>banner广告 ## 哪种广告类型收益相对最大 [图片] 在10月30号,将banner广告同一替换为激励式视频广告和视频广告,收益很明显从30元上升到90元、150元 可以看到视频广告相对于banner广告,对于收益增加是有用的。 下图是某小程序12月4号一天的收益数据 [图片] 12月4号一天,不同广告类型,收益分析 总收益 194.74+23.27+147.82=365.83 具体分拆来看 广告类型点击量总收益单个点击收益(元)banner1956194.740.099插屏广告6223.270.375激励式视频广告152147.820.972 通过上图我们对比分析,不难得出以下结论:激励式视频广告单个点击的收益最大、 当然我们不能通过单一维度来了解哪种收益最好,还要综合考虑,比如哪种广告对用户影响最小,毕竟不管哪种方式,广告的接入肯定会带来交互体验上的障碍, 我们必须在交互体验和广告收益这两者之间做好权衡。 ## 系统公告 激励式广告于7月31日支持30秒视频素材,广告流量将逐步放开,MP后台-广告位管理模块可支持选择6-15秒视频或6-30秒视频素材的功能,请流量主根据产品进行调整。程序视频广告已于9月4日正式全量上线,开通后即按广告曝光获得分成收入,进一步提升流量变现收益。小程序视频前贴广告组件已于8月30日正式全量上线,开通后即按广告曝光获得分成收入,进一步提升流量变现收益。## 官方文档 小程序广告组件流量主操作指引https://wximg.qq.com/wxp/pdftool/get.html?id=BJSyDkLqz&pa=14&name=miniprogramAds_supplier_manual应用规范https://wxa.wxs.qq.com/mpweb/delivery/legacy/pdftool/get.html?id=rynYA8o3f&pa=10&name=miniprogramAds_supplier_guidance小程序流量主应用规范https://wximg.qq.com/wxp/pdftool/get.html?id=rynYA8o3f&pa=10&name=miniprogramAds_supplier_guidance处罚标准https://wxa.wxs.qq.com/mpweb/delivery/legacy/pdftool/get.html?id=BkTGkbs2G&pa=1&name=miniprogramAds_supplier_regulation小程序视频广告流量主指引https://wximg.qq.com/wxp/pdftool/get.html?post_id=1317小程序视频前贴广告流量主指引https://wximg.qq.com/wxp/pdftool/get.html?post_id=1318## 总结三点 从纯收益的角度来讲,在各种广告类型中,视频广告(包含激励式视频广告、视频广告、视频前贴广告)要比banner广告要好,而且好很多从用户体验来讲,插屏广告是首次打开带插屏广告的页面强制弹出的,但是广告过后,在页面是不占空间的,这是区分与其他广告的地方,banner广告、激励式视频广告、视频广告、视频前贴广告都是在页面中占固定的空间的,这一点要小程序运营同学权衡。Banner广告是按点击,激励式视频、视频广告、插屏广告都是按照曝光来收取广告费用的,这一点非常重要,难怪我每次手工点击我的视频广告没有见流量的增加[哭脸.jpg]。[感谢 @ 仙森 补充于2019年12月9号] 虽然对个人开发者而言,我们开发小程序的目的是为了收益(当然也有为了情怀而开发),在了解如何收益的情况下,我们还是应该尽量把精力放在小程序本身的开发上面。 感谢 在此特别感谢,小程序运营讨论群的两位小伙伴,微信号中间两位已打码 1、@迭戈 (yang_##chun) 2、@风猫 (cs##26)
2020-12-25 - 已经认证的公众号怎么绑定开放平台?
开发-设置-基本设置,页面的“已绑定的微信开放平台帐号“”提示未绑定帐号,但是找不到入口在哪里绑定。 1、是不是开放平台要独立进行认证? 2、如果可以绑定,请问公众号里哪个页面进行绑定?
2020-02-27 - 传统原生支付用云开发实现(非云支付)
本文的代码已过时,请勿照抄。建议改用云支付。 本文的代码被论坛自动过滤了所有XML的标签,所以照抄是会出错的。需要代码的话,看以前的老版本: https://developers.weixin.qq.com/community/develop/doc/000620ec5acb482103b7bf41d51804?jumpto=comment&commentid=000ea67d7b4da8d6c47acd1e05b8 代码前提:只需要替换两个与自己相关的参数key和mch_id 1、小程序开通微信支付成功,去公众平台(https://mp.weixin.qq.com/); 成功后可以知道自己的mch_id,即商户号。 2、去这里:商户平台(https://pay.weixin.qq.com/),获取key = API密钥,如果是退款的话,还需要下载API证书。 [图片] 以下代码仅包含统一下单,以及小程序端拉起支付的代码。 小程序端: testWxCloudPay: function () { wx.cloud.callFunction({ name: 'getPay', // data: {body:"body",attach:"attach",total_fee:1}, // 可传入相关参数。 success: res => { console.log(res.result) if (!res.result.appId) return wx.requestPayment({ ...res.result, success: res => { console.log(res) } }) } }) }, 云函数getPay: const key = "ABC...XYZ" //换成你的商户key,32位 const mch_id = "1413092000" //换成你的商户号 //以下全部照抄即可 const cloud = require('wx-server-sdk') const rp = require('request-promise') const crypto = require('crypto') cloud.init() function getSign(args) { let sa = [] for (let k in args) sa.push(k + '=' + args[k]) sa.push('key=' + key) return crypto.createHash('md5').update(sa.join('&'), 'utf8').digest('hex').toUpperCase() } function getXml(args) { let sa = [] for (let k in args) sa.push('<' + k + '>' + args[k] + '') sa.push('' + getSign(args) + '') return '' + sa.join('') + '' } exports.main = async(event, context) => { const wxContext = cloud.getWXContext() const appId = appid = wxContext.APPID const openid = wxContext.OPENID const attach = 'attach' const body = 'body' const total_fee = 1 const notify_url = "https://mysite.com/notify" const spbill_create_ip = "118.89.40.200" const nonceStr = nonce_str = Math.random().toString(36).substr(2, 15) const timeStamp = parseInt(Date.now() / 1000) + '' const out_trade_no = "otn" + nonce_str + timeStamp const trade_type = "JSAPI" const xmlArgs = { appid, openid, attach, body, mch_id, nonce_str, notify_url, out_trade_no, spbill_create_ip, total_fee, trade_type } let xml = (await rp({ url: "https://api.mch.weixin.qq.com/pay/unifiedorder", method: 'POST', body: getXml(xmlArgs) })).toString("utf-8") if (xml.indexOf('prepay_id') < 0) return xml let prepay_id = xml.split("")[0] let payArgs = { appId, nonceStr, package: ('prepay_id=' + prepay_id), signType: 'MD5', timeStamp } return { ...payArgs, paySign: getSign(payArgs) } } packge.json: { "name": "getPay", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "zfe", "license": "ISC", "dependencies": { "wx-server-sdk": "latest", "crypto": "^1.0.1", "request-promise": "^4.2.2" } } 附:完整代码片段:如果你觉得在这上面花的时间超过一天了,就去下载代码片段吧。 [图片]
2020-10-20 - 几行代码实现小程序云开发提现功能
先看效果: [图片] 纯云开发实现,下面说使用步骤: 一:开通商户的企业付款到领取功能 说明地址: https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_1 使用条件 1、商户号(或同主体其他非服务商商户号)已入驻90日 2、截止今日回推30天,商户号(或同主体其他非服务商商户号)连续不间断保持有交易 使用条件是第一难,第二难在下面这里 [图片] 在网上找了很多,感觉是云开发这里的一个不完善地方,如果不填ip,会报这种错 [代码]{"errorCode":1,"errorMessage":"user code exception caught","stackTrace":"NO_AUTH"} [代码] [代码]<xml> <return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[此IP地址不允许调用接口,如有需要请登录微信支付商户平台更改配置]]></return_msg> <mch_appid><![CDATA[wx383426ad9ffe1111]]></mch_appid> <mchid><![CDATA[1536511111]]></mchid> <result_code><![CDATA[FAIL]]></result_code> <err_code><![CDATA[NO_AUTH]]></err_code> <err_code_des><![CDATA[此IP地址不允许调用接口,如有需要请登录微信支付商户平台更改配置]]></err_code_des> </xml> [代码] 云开发没有ip这个概念,所以这里有些无从下手,不过这里我采用了个替代方案,参考了社区帖子: https://developers.weixin.qq.com/community/develop/doc/00088cff3a40d87d80f7267b65b800 之后我也亲自验证了,基本上就是这几个,当然肯定不够,但是可以自己在逻辑上进行处理,ip以下: [代码]172.81.207.12 172.81.212.74 172.81.236.99 172.81.235.12 172.81.245.51 212.64.65.131 212.64.84.22 212.64.85.35 212.64.85.139 212.64.87.134 [代码] 接着,可以动手了 二、云开发部分 1、设置云存储 证书配置地址: [图片] 下载后有三个文件,我们只需要p12结尾的那个 [图片] 然后,将这个apiclient_cert.p12文件上传到你的云存储 [图片] 这里处理完了,我们只需要一个东西,就是fileID也就是常说的云存储ID(上图红框内容) 2、配置云函数 新建云函数ref云函数 [图片] 代码如下: [代码]const config = { appid: 'wx383426ad9ffe1111', //小程序Appid envName: 'zf-shcud', // 小程序云开发环境ID mchid: '1111111111', //商户号 partnerKey: '1111111111111111111111', //此处填服务商密钥 pfx: '', //证书初始化 fileID: 'cloud://zf-shcud.11111111111111111/apiclient_cert.p12' //证书云存储id }; const cloud = require('wx-server-sdk') cloud.init({ env: config.envName }) const db = cloud.database(); const tenpay = require('tenpay'); //支付核心模块 exports.main = async(event, context) => { //首先获取证书文件 const res = await cloud.downloadFile({ fileID: config.fileID, }) config.pfx = res.fileContent let pay = new tenpay(config,true) let result = await pay.transfers({ //这部分参数含义参考https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_2 partner_trade_no: 'bookreflect' + Date.now() + event.num, openid: event.userinfo._openid, check_name: 'NO_CHECK', amount: parseInt(event.num) * 100, desc: '二手书小程序提现', }); if (result.result_code == 'SUCCESS') { //如果提现成功后的操作 //以下是进行余额计算 let re=await db.collection('user').doc(event.userinfo._id).update({ data: { parse: event.userinfo.parse - parseInt(event.num) } }); return re } } [代码] 需安装的依赖:wx-server-sdk、tenpay 这里只是实现了简单原始的提现操作,关于提现后,比如防止重复提交,提现限额这些,在开源二手书商城上有完整流程,地址: https://github.com/xuhuai66/used-book-pro 这种办法,不是每次都能成功提现,小概率遇到ip未在白名单情况,还是希望,云开发团队能尽快出一个更好的解决方案吧
2019-09-21 - 云开发支付的代码,有需要的进。
真机测试已通过。你照抄就行,保证可通过。 最新完美版本可供参考: https://developers.weixin.qq.com/community/develop/article/doc/0004c4a50a03107eaa79f03cc56c13 小程序端: wx.cloud.callFunction({ name: 'getPay' , data: { total_fee: parseFloat(0.01).toFixed(2) * 100, attach: 'anything', body: 'whatever' } }) .then( res => { wx.requestPayment({ appId: res.result.appid, timeStamp: res.result.timeStamp, nonceStr: res.result.nonce_str, package: 'prepay_id=' + res.result.prepay_id, signType: 'MD5', paySign: res.result.paySign, success: res => { console.log(res) } }) }) 云函数:getPay getPay目录下共两个文件: 1、index.js 2、package.json index.js代码如下: const key = "YOURKEY1234YOURKEY1234YOURKEY123"//这是商户的key,不是小程序的密钥,32位。 const mch_id = "1413090000" //你的商户号 //将以上的两个参数换成你的,然后以下可以不用改一个字照抄 const rp = require('request-promise') const crypto = require('crypto') function paysign({ ...args }) { let sa = [] for (let k in args) sa.push( k + '=' + args[k]) sa.push( 'key=' + key) return crypto.createHash('md5').update(sa.join('&'), 'utf8').digest('hex').toUpperCase() } exports.main = async (event, context) => { const appid = event.userInfo.appId const openid = event.userInfo.openId const attach = event.attach const body = event.body const total_fee = event.total_fee const notify_url = "https://whatever.com/notify" const spbill_create_ip = "118.89.40.200" const nonce_str = Math.random().toString(36).substr(2, 15) const timeStamp = parseInt(Date.now() / 1000) + '' const out_trade_no = "otn" + nonce_str + timeStamp let formData = "<xml>" formData += "<appid>" + appid + "</appid>" formData += "<attach>" + attach + "</attach>" formData += "<body>" + body + "</body>" formData += "<mch_id>" + mch_id + "</mch_id>" formData += "<nonce_str>" + nonce_str + "</nonce_str>" formData += "<notify_url>" + notify_url + "</notify_url>" formData += "<openid>" + openid + "</openid>" formData += "<out_trade_no>" + out_trade_no + "</out_trade_no>" formData += "<spbill_create_ip>" + spbill_create_ip + "</spbill_create_ip>" formData += "<total_fee>" + total_fee + "</total_fee>" formData += "<trade_type>JSAPI</trade_type>" formData += "<sign>" + paysign({ appid, attach, body, mch_id, nonce_str, notify_url, openid, out_trade_no, spbill_create_ip, total_fee, trade_type: 'JSAPI' }) + "</sign>" formData += "</xml>" let res = await rp({ url: "https://api.mch.weixin.qq.com/pay/unifiedorder", method: 'POST',body: formData}) let xml = res.toString("utf-8") if (xml.indexOf('prepay_id')<0) return xml let prepay_id = xml.split("<prepay_id>")[1].split("</prepay_id>")[0].split('[')[2].split(']')[0] let paySign = paysign({ appId: appid, nonceStr: nonce_str, package: ('prepay_id=' + prepay_id), signType: 'MD5', timeStamp: timeStamp }) return { appid, nonce_str, timeStamp, prepay_id, paySign } } package.json 代码如下: { "name": "getPay", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "youself", "license": "ISC", "dependencies": { "crypto": "^1.0.1", "request-promise": "^4.2.2" } } 最后选择:上传和部署:云端安装依赖。
2019-12-14 - 复制任意微信小程序页面路径
以下以微信小程序“虎牙直播”为例,演示如何复制微信小程序页面的路径。 1.进入小程序的“关于虎牙直播”页面 [图片] 2.点击右上角的“…”进入“更多资料”页面 [图片] [图片] [图片] 3.复制AppID:wx74767bf0b684f7d3 4.进入小程序后台输入appid并搜索,然后点下一步 [图片] 5.鼠标移动到“获取更多页面路径”,在弹出窗口输入当前登陆的小程序的任意开发者微信号,然后点击开启,出现顶部的“开启入口成功”就可以使用手机访问“虎牙直播”任意页面进行复制了 [图片] 6.某个直播间的页面路径:pages/main/liveRoom/index.html?anchorUid=1678113423&source=search[图片] PS:复制出来的页面路径在小程序里使用的时候记得删除 .html 才能正常访问。
2020-01-16