- 小程序直播从开通到开播全过程——开发篇
本文因为社区编辑器markdown功能暂有问题,格式上比较混乱,大家将就看吧: 目前小程序支持的直播方式有两种,一种是纯原生方案(小程序提供推流拉流服务器,主播端和收播端页面都已提供好,你直接使用即可),一种是自己搭建推流服务器(只是使用小程序端提供的live-pusher和live-player组件而已,里面的直播页面和功能都自己独立开发!),这里说的是第一种方案: 一、准备工作 1、一个已经申请开通和正常使用的实实在在的小程序 PS:如果开通了直播功能,但是没有审核上架成功过,直播间分享出去的二维码点击会提示页面不存在!!!原因很简单,因为你新开发的直播页面正式版的小程序上并没有新加进去,必须要提审上架到正式版才能生效! 二、小程序直播准入门槛 微信小程序直播功能准入要求(官方文档链接>>) 一、类目要求: 1. 小程序开发者为国内非个人主体开发者; 2. 小程序开发者为下述类目品类,类目具体信息可参考《微信小程序开放的服务类目》: 1)电商平台:电商平台 2)商家自营:百货、食品、初级食用农产品、酒/盐、图书报刊/音像/影视/游戏/动漫、汽车/其他交通 工具的配件、服装/鞋/箱包、玩具/母婴用品(不含食品)、家电/数码/手机、美妆/洗护、珠宝/饰品/眼镜 /钟表、运动/户外/乐器、鲜花/园艺/工艺品、家居/家饰/家纺、汽车内饰/外饰、办公/文具、机械/电子 器件、电话卡销售、预付卡销售、宠物/农资、五金/建材/化工/矿产品; 3)教育:培训机构、教育信息服务、学历教育(学校)、驾校培训、教育平台、素质教育、婴幼儿教 育、在线教育、教育装备、出国移民、出国留学、特殊人群教育、在线视频课程; 4)金融业:证券/期货投资咨询、保险; 5)出行与交通:航空、地铁、水运、城市交通卡、打车(网约车)、顺风车(拼车)、出租车、路况、 路桥收费、加油/充电桩、城市共享交通、高速服务、火车、公交、长途客运、停车、代驾、租车; 6)房地产:房地产、物业管理、房地产经营、装修/建材; 7)生活服务:丽人、宠物(非医药类)、宠物医院/兽医、环保回收/废品回收、摄影/扩印、婚庆服务、 搬家公司、百货/超市/便利店、家政、营业性演出票务、生活缴费; 8)IT科技:硬件与设备、基础电信运营商、电信业务代理商、软件服务提供商、多方通信; 9)餐饮:餐饮服务场所/餐饮服务管理企业、点餐平台、外卖平台、点评与推荐、菜谱、餐厅排队; 10)旅游:旅游线路、旅游攻略、旅游退税、酒店服务、公寓/民宿、门票、签证、出境WiFi、景区服 务; 11)汽车:养车/修车、汽车资讯、汽车报价/比价、车展服务、汽车经销商/4S店、汽车厂商、汽车预售 服务; 12)体育:体育场馆服务、体育赛事、体育培训、在线健身 二、运营要求: 1、主体下小程序近半年没有严重违规 2、小程序近90天存在支付行为 以上2个运营条件和类目同时满足的前提下,下面3个条件满足其一即可 3、主体下公众号累计粉丝数大于100 4、主体下小程序近7日dau大于100 5、主体在微信生态内近一年广告投放实际消耗金额大于1w 以上准入要求于 2020 年 02 月 24 日进行公示生效。为营造良好健康的微信生态,腾讯公司有权对《微信 小程序直播功能准入要求》不时予以调整并公布,请予以关注。 腾讯公司 tip:如果你的小程序刚刚满足上面门槛,请T+2后刷新再试试。 三、进入小程序后台直播,创建直播间 [图片] 如果你的小程序满足了第二点。小程序后台会有一个直播的入口(没有的话自己找找原因) 点击进入后->创建直播间 按提示操作(要输入主播人的微信号,对方初次使用要活体检测+实名认证)即可成功创建直播间。(注意点:开播时间最早不能早于当前时间10分钟后) 创建成功后,会有一个开播码。注意这个开播码是给主播用的,主播开播的入口小程序码。主播可以扫码进入直播间开播。 [图片] 四、小程序端开发 完成上面3步算是完成主播端的配置了,接下来是收播端(观看直播的小程序端)的开发了。这个是要小程序开发者完成的。所以下面操作都在小程序开发端完成。下面就简单介绍开发逻辑和顺序,具体的要用到的API和接口都不细说,在后面相关链接里面可以点击官方链接查看!(小程序直播 | 微信开放文档)https://developers.weixin.qq.com/miniprogram/dev/framework/liveplayer/live-player-plugin.html) (1)引入直播插件(直接按官方介绍文档操作) 正常引入后开发者工具会弹出这个窗口,如果不弹出请认真,静下心来按照官方文档检查自己的引入代码: [图片] (2)开发后端(如果你没有小程序端自建直播列表和直播间入口的需求2、3、4都可以跳过,届时你的小程序直播间可以用分享方式进入) 后端目前官方只提供了2个接口。一个是获取直播间列表,一个是获取直播间直播完后的相关回放信息,其中第一个接口必须先完成。就是获取到直播间列表,列表里面有带返回直播间的roomid,小程序端必须需要接收到这方面的返回才能接下来的开发。 (3)进入直播页面 引入直播插件后并对接第二步的后端接口后,你可以直接编码进入直播页面了。像进入普通页面一样,可以通过wxml里面的navigator url="xxxx"的方式和js里的wx.navigateTo跳转页面代码进入直播页面。但是他这个url比较特殊,是下面这样的格式: url: `plugin-private://${provider}/pages/live-player-plugin?room_id=${roomId}&custom_params=${encodeURIComponent(JSON.stringify(customParams))}` provider:插件appid(1)小步里面获取到的 rommId:直播间id(2)小步里面获取列表后里面的roomId customParams:自定义的进入页面参数。(根据需要自己定义的传入直播间收播页面的参数) 进入直播间收播页面后的开发量为0,因为这个是由直播间插件接管并完成相关功能。 (4)几个注意点: 4.1、后端获取直播间列表接口几个跟官方文档介绍不一致的地方 [图片] 4.2、 livePlayer.getLiveStatus获取直播间状态这个API官方介绍:首次获取立马返回直播状态,往后间隔1分钟或更慢的频率去轮询获取直播状态。实际使用过程中建议也这么干,如果需要轮询直播间状态,建议间隔时间1分钟以上,如果少于这个值,基本上就是卡在这里后面的代码都不执行了。还有,有时候即使超过1分钟后再轮询,也会偶发性出现获取不到卡住的情况。解决方法,大家可以看看开发者工具里面的本地Storage相关的值,然后后面怎么做你懂的。。 4.3订阅组件subscribe的样式问题。不多说,你懂的,你加上去就能看到效果 4.4后端接口每日调用次数限制的问题。要做好相关缓存到本地的架构设计。 4.5运营上一定要注意,按要求直播。别整那些没用的,很容易被禁播的。 (5)回放功能开发 1.0.4版本后支持0开发的回放功能了。参考后面新增的专门介绍回放功能的使用教程。 五、跑路 这里的跑路是指代码写累了,带上口罩和吉娃娃去公园跑一圈路回来继续码。 最新:1.0.4版本后的回放功能说明,回放功能是这样的 1、后台开启该直播间的回放功能 [图片] 2、收播端还是原来的直播入口进行回放,小程序端是 plugin-private://${liveplayId}/pages/live-player-plugin?room_id=${roomId}&custom_params=${encodeURIComponent(JSON.stringify(customParams))}` 这里的页面链接,链接到回放页面。获取分享方式,分享出去的直播页面,点击后进入回放。 [图片] 还有一个口,点击原来的分享链接后的直播完成页面,也有一个查看回放的入口,如上图。 Tip:如果刚刚直播完可能需要稍等生成回放视频后再次进入相关页面才能看到回放。 相关链接: 小程序直播 | 微信开放文档(开发必看,而且要熟读,基本有所有你要的开发资料) https://developers.weixin.qq.com/miniprogram/dev/framework/liveplayer/live-player-plugin.html 微信小程序直播功能准入要求 | 微信开放文档 https://developers.weixin.qq.com/miniprogram/product/live/access-requirement.html “小程序直播”接入指引 | 微信开放社区 https://developers.weixin.qq.com/community/develop/doc/0008ce654c4450244c1a7e5de5b801?highLine=%25E7%259B%25B4%25E6%2592%25AD%2520%25E6%25B1%25BD%25E8%25BD%25A6 相关知识科普: 小程序直播单日直播上限是50场,同时直播上限50场,单场的直播时长上限是12小时。
2020-06-23 - java项目部署到linux服务器,微信小程序后台springboot项目部署到腾讯云服务器(图文详解)
前面给大家讲了一个点餐系统的开发,包括java点餐后台和微信点餐小程序。可是都是教大家如何在本地把项目跑起来。今天就来教大家如何把这个点餐系统部署到服务器,实现商用。 传送门 点餐系统的开发,java后台+微信小程序:https://blog.csdn.net/qiushi_1990/article/details/97749686 本节知识点 1,使用springboot开发java项目 2,小程序后台的开发 3,小程序后台部署到服务器 4,java项目部署到服务器 5,springboot项目部署到服务器 准备工作 1,需要购买一台腾讯云服务器 2,需要开发一个springboot后台项目 3,需要购买一个域名,并做备案。 4,需要配置你的服务器环境 jdk,mysql(下面会做讲解) 我们默认你上面的准备工作都做好了,下面我们就来开始学习把后台项目部署到服务器,让所有人都可以访问到你的服务器。 一,首先创建一个springboot(java项目) 实现一个简单的后台数据接口 [图片] 如果上面这些简单的创建一个项目的步骤你不是很懂,可以看下我录制的java零基础视频:https://edu.csdn.net/course/detail/23443 本地运行项目 [图片] 运行成功的标示,在run里看到控制台日志显示项目端口是 8080 [图片] 浏览器里访问本地项目,查看访问效果。可以看到我们成功的访问到了后台数据。 [图片] 二,项目打包 上面给大家演示的是在idea开发者工具里启动的项目,我们正常部署服务器的时候,肯定不会有开发者工具的,所以我们接下来要先学会项目打包,然后在本地通过命令行的方式运行后台项目。 1,项目打包 [图片] 2,打包成功 [图片] 3,修改jar的名字(也可以不改名字,我是觉得这个jar名字太长,所以改一个短的) [图片] 我这里改名为qcl80.jar 建议大家也改成这个名字,因为后面运行脚本里用的就是qcl80这个名字,大家和我保持一致,省得出问题。 [图片] 三,命令行运行jar包 命令行里输入 java -jar qcl80.jar [图片] 注意:如果你这里提示java命令不存在,你需要配置下java的环境变量。这里不做讲解,自己百度下 ‘java 环境变量’ 就可以找到一大堆教程。 四,服务器环境的登录 我们前面三步,都是在自己的本地电脑启动的后台项目,这样我们只能在自己的电脑浏览器访问到,别人是访问不到的,如果想让别人访问,就需要把我的qcl80.jar这个文件传到服务器上,并且在服务器上通过命令行启动这个java项目,这样别人才可以访问到 所以我们接下来要讲服务器环境的搭建。 1,首先我们要买一台云服务器(推荐阿里云或者腾讯云) 2,买完服务器后我们登录服务器后台,这里以腾讯云为例。 [图片] 3,点击登录 [图片] 重置密码方式 [图片] 4,输入实力的账号和密码,登录linux服务器 [图片] 5,登录成功 [图片] 大家不要看到一堆命令行,就头疼,我接下来会教大家如何一步步配置服务器环境的。大家只需要跟着我的步骤,一步步来就可以了。 五,linux服务器安装jdk 1,采用yum安装jdk1.8,非常简单 [代码]yum search java|grep jdk 查看yum库中jdk的版本 [代码] [图片] [代码]yum -y install java-1.8.0-openjdk* 安装jdk8 [代码] [图片] 耐心的等待jdk的安装,大概2分钟左右,出现下面标志,即代表安装成功 [图片] 2,检查jdk是否安装成功 命令行里输入 java -version 出现下面标示,可以看到我们的jdk版本 1.8.0_222 [图片] 六,上传jar包到服务器 我们第五步已经在linux服务器上成功的安装了jdk,接下来就是要想办法把qcl80.jar传到服务器了。可能有同学要问了,你部署服务器,不要在linux服务器里安装tomcat吗,其实我们用springboot开发出来的jar包,已经有内置的tomcat了。所以我们不用再部署tomcat了,只需要把qcl80.jar这个文件上传到服务器,然后用java命令启动即可。 我们上传文件到Linux服务器用FileZilla 你只需要去百度下你电脑对应系统的安装包,安装即可。具体怎么安装这里就不教大家了。 下面教下大家如何使用FileZilla上传文件到服务器。 1,打开FileZilla软件, 链接服务器 [图片] 2,去服务器根目录看看 [图片] [图片] 3,上传文件到home文件里,如果在父亲根目录没有home文件,可以自己新建。 [图片] 到这里我们就成功的上传qcl80.jar到服务器了。下面就教大家如何在服务器里启动我们的项目。 七,在服务器里启动java后台项目 1,首先重复上面第四步登录服务器。然后在服务器里输入 [代码]cd.. #用来返回服务器根目录 ls #显示当前根目录有那些文件 [代码] [图片] [代码]cd home #进入home文件 ls #显示home文件里都有那些子文件,可以看到我们的qcl80.jar [代码] [图片] 2,启动java项目 [代码]java -jar qcl80.jar [代码] [图片] 3,项目启动成功,出现下面的标示,即代表项目启动成功 [图片] 4,访问我们服务器的项目 [图片] 通过上图可以看到,我们通过公网ip+8080端口,可以成功的访问到我们服务器的数据了。 我们再用手机浏览器试试 [图片] 可以看到我们在手机浏览器里也可以访问到后台数据了。你把上面的这个网址发给你朋友,你朋友应该也可以访问到数据了。 到这里我们就成功的把一个java项目部署到服务器,并成功的可以让任何人访问了,但是有个问题,你用公网ip做域名,很容易被封的,基本上能成功访问几次以后,就会被拒绝访问了 所以我们接下来还要讲解如何通过域名访问我们的服务器 我会把这些录制成视频来给大家做讲解, 讲解视频地址:https://study.163.com/course/courseMain.htm?courseId=1209428915 八,服务器绑定域名 我们在做域名绑定之前,需要你先自己去注册一个域名,比如我注册的域名是:“www.saibanmall.com”,我这里还是以腾讯云为例 1,登录腾讯云后台,找到自己的域名列表,点击解析 [图片] 2,添加解析规则 [图片] 3,绑定自己服务器的公网ip到解析规则 [图片] 4,我们主要设置下面两个解析规则 [图片] 这样把我们服务器公网ip和域名绑定以后,就可以通过域名访问我们的服务器了,效果如下。 [图片] 再来看下手机浏览器访问的效果 [图片] 还有我们小程序访问的效果。 [图片] 到这里我们就成功的部署好我的后台服务器了,但是还有几个问题 1,小程序上线的话需要https请求,所以我们后面还会讲我们的服务器如何支持https 2,我们通过java -jar qcl80.jar部署的java项目,不能后台运行。所以我们后面还会讲如何让我们的java项目常驻后台运行。 关于服务器的部署我后面也会录制视频出来,敬请关注。 有问题可以加我微信:2501902696
2019-09-01 - 小程序框架对比 ( WePY / mpvue / Taro )
摘要: 对比小程序框架。 原文:小程序第三方框架对比 ( wepy / mpvue / taro ) 公众号:前端小苑 Fundebug经授权转载,版权归原作者所有。 [图片] 众所周知如今市面上端的形态多种多样,手机Web、ReactNative、微信小程序, 支付宝小程序, 快应用等,每一端都是巨大的流量入口,当业务要求同时在不同的端都要求有所表现的时候,针对不同的端去编写多套代码的成本显然非常高,这时候只编写一套代码就能够适配到多端的能力就显得极为需要。但面对目前市面上成熟的小程序第三方框架如何针对自己的需求进行选择也是一个麻烦事,本文针对当前市面上的三大转译框架进行一个综合对比,希望能对大家的技术选择有所帮助,如有哪里不妥的地方希望大家指正。 小程序开发有哪些痛点? 频繁调用 setData及 setData过程中页面跳闪 组件化支持能力太弱(几乎没有) 不能使用 less、scss 等预编译器 request 并发次数限制 为什么使用第三方框架? 只要熟悉vue或react即可快速上手,学习成本低 一套代码可在多端编译运行(微信,支付宝,h5,RN) 支付宝小程序暂不完善 组件化开发,完美解决组件隔离,组件嵌套,组件通信等问题 支持使用第三方 npm 资源 使小程序可支持 Promise,解决回调烦恼 可使用 Generator Function / Class / Async Function 等特性,提升开发效率 对小程序本身的优化,如生命周期的补充,性能的优化等等 支持样式编译器: Scss/Less,模板编译器,代码编译器:Babel/Typescript。 小程序框架对比:WePY / mpvue / Taro 在这里我通过对目前已开源的三种常用小程序框架做一个综合对比, 还有一个叫nanchi的基于react的小程序转译框架,由于没来的及研究暂不做比较。 WePY 腾讯团队开源的一款类vue语法规范的小程序框架,借鉴了Vue的语法风格和功能特性,支持了Vue的诸多特征,比如父子组件、组件之间的通信、computed计算属性、wathcer监听器、props传值、slot槽分发,Mixin混入等。WePY发布的第一个版本是2016年12月份,也就是小程序刚刚推出的时候,到目前为止,WePY已经发布了52个版本, 最新版本为1.7.2; mpvue 美团团队开源的一款使用 Vue.js 开发微信小程序的前端框架。使用此框架,开发者将得到完整的 Vue.js 开发体验,同时为 H5 和小程序提供了代码复用的能力。mpvue在发布后的几天间获得2.7k的star,上升速度飞起,截至目前为止已经有13.7k的star; Taro 京东凹凸实验室开源的一款使用 React.js 开发微信小程序的前端框架。它采用与 React 一致的组件化思想,组件生命周期与 React 保持一致,同时支持使用 JSX 语法,让代码具有更丰富的表现力,使用 Taro 进行开发可以获得和 React 一致的开发体验,同时因为使用了react的原因所以除了能编译h5, 小程序外还可以编译为ReactNative; [图片] [图片] 生命周期 同为vue规范的mpvue和wepy的生命周期和各种方法不尽相同。 WePY wepy生命周期基本与原生小程序相同,再此基础上糅合了一些vue的特性; 对于WePY中的methods属性,因为与Vue中的使用习惯不一致,非常容易造成误解,这里需要特别强调一下:WePY中的methods属性只能声明页面wxml标签的bind、catch事件,不能声明自定义方法,这与Vue中的用法是不一致的。 [图片] [图片] 简单示例Taro与React生命周期完全相同 [图片] 列表渲染 在列表渲染上三者也分别有不同的应用方法 wepy当需要循环渲染WePY组件时(类似于通过wx:for循环渲染原生的wxml标签),必须使用wepy定义的辅助标签。 [图片] mpvue使用v-for与vue一致,只是需要注意一点,嵌套列表渲染,必须指定不同的索引! [图片] taro的列表循环用法基本与react相同,有一点需要注意,在 React 中,JSX 是会编译成普通的 JS 的执行,每一个 JSX 元素,其实会通过 createElement 函数创建成一个 JavaScript 对象(React Element),因此实际上你可以这样写代码 React 也是完全能渲染的: [图片] 但是 Taro 中,JSX 会编译成微信小程序模板字符串,因此你不能把 map 函数生成的模板当做一个数组来处理。当你需要这么做时,应该先处理需要循环的数组,再用处理好的数组来调用 map 函数。例如上例应该写成: [图片] 事件处理 mpvue目前全支持小程序的事件处理器,引入了 Vue.js 的虚拟 DOM ,在前文模版中绑定的事件会被挂在到 vnode 上,同时 compiler 在 wxml 上绑定了小程序的事件,并做了相应的映射,所以在真实点击的时候通过 runtime 中 handleProxy 事件类型分发到 vnode 的事件上,同 Vue 在 WEB 的机制一样,可以做到无损支持。同时还顺便支持了自定义事件和 $emit 机制。 事件映射表,左侧为 WEB 事件,右侧为 小程序 对应事件 [图片] 踩坑注意(官方文档): 列表中没有的原生事件也可以使用例如 bindregionchange 事件直接在 dom 上将bind改为@ @regionchange,同时这个事件也非常特殊,它的 event type 有 begin 和 end 两个,导致我们无法在handleProxy 中区分到底是什么事件,所以你在监听此类事件的时候同时监听事件名和事件类型既 <map @regionchange=“functionName” @end=“functionName” @begin=“functionName”> 小程序能力所致,bind 和 catch 事件同时绑定时候,只会触发 bind ,catch 不会被触发,要避免踩坑 事件修饰符 .stop 的使用会阻止冒泡,但是同时绑定了一个非冒泡事件,会导致该元素上的 catchEventName 失效! .prevent 可以直接干掉,因为小程序里没有什么默认事件,比如submit并不会跳转页面 .capture 支持 1.0.9 .self 没有可以判断的标识 .once也不能做,因为小程序没有 removeEventListener, 虽然可以直接在 handleProxy 中处理,但非常的不优雅,违背了原意,暂不考虑 其他 键值修饰符 等在小程序中压根没键盘,所以… wepy事件绑定区别于vue,根据原生小程序事件提供了语法优化 [图片] Taro 元素的事件处理和 DOM 元素的很相似。但是有一点语法上的不同: Taro 事件绑定属性的命名采用驼峰式写法,而不是小写。 如果采用 JSX 的语法你需要传入一个函数作为事件处理函数,而不是一个字符串 (DOM 元素的写法)。 例如,传统的微信****小程序模板: [图片] Taro 中稍稍有点不同: [图片] 在 Taro 中另一个不同是你不能使用 catchEvent 的方式阻止事件冒泡。你必须明确的使用 stopPropagation。例如,阻止事件冒泡你可以这样写: [图片] request请求 wepy对wx.request做了接受参数的修改,值得一提的是它提供了针对全局的intercapter拦截器。 [图片] 拦截器 [图片] taro对request进行了二次封装,可以使用Taro.request(OBJECT)发起网络请求,支持 Promise 化使用。 [图片] [图片] [图片] mpvue没有对request做特殊优化,与原生相同,可以自己根据需要进行封装 状态管理 wepy 可引用Redux和Mbox,目前wepy的脚手架内已经集成了redux,选择需要即可; mpVue使用vuex; taro使用Redux; 如何选择适合自己的项目 如果只需要做一个微信小程序则根据自己的擅长框架选择mpvue或taro 如果是当前老项目想像向程序迁移同时老项目又是使用vue开发,建议使用mpvue或wepy 如果是老项目使用react开发且需要部分迁移小程序,建议使用taro 如果是新项目且新项目需要同时支持微信小程序和支付宝小程序, 建议使用原生开发,因为目前框架的转译支付宝小程序支持并不是很好,且出了问题不好定位修改, 但如果是小demo不涉及太多逻辑的项目都可以使用框架作为尝鲜; 但如果是涉及太多交互逻辑的则不建议使用框架转译,由于支付宝小程序在视图层基本与小程序一致所以建议手动更改替换部分方法和全局替换一些属性或文件名,如wxml替换为axml这种, 手动转换时间比大概是四比一; 当然如果人手足够一端开发一个是最好的… 时刻前端新鲜技术推送,定期前端精品文章分享,欢迎关注公众号前端小苑。
2019-06-21 - 阿里云服务无法校验业务域名的一种解决方式
发生错误场景: [图片] 解决方法:需要服务器名称指示不要打钩(见下图) [图片] 我是阿里云的服务器,目前我以这种方案解决这个问题。。大家可以参考试试
2019-07-04 - 10行代码实现微信小程序支付功能,使用小程序云开发实现小程序支付功能(含源码)
前面给大家讲过一个借助小程序云开发实现微信支付的,但是那个操作稍微有点繁琐,并且还会经常出现问题,今天就给大家讲一个简单的,并且借助官方支付api实现小程序支付功能。 传送门 借助小程序云开发实现小程序支付功能 老规矩,先看本节效果图 [图片] 我们实现这个支付功能完全是借助小程序云开发实现的,不用搭建自己的服务器,不用买域名,不用备案域名,不用支持https。只需要一个简单的云函数,就可以轻松的实现微信小程序支付功能。 核心代码就下面这些 [图片] 一,创建一个云开发小程序 关于如何创建云开发小程序,这里我就不再做具体讲解。不知道怎么创建云开发小程序的同学,可以去翻看我之前的文章,或者看下我录制的视频:https://edu.csdn.net/course/play/9604/204528 创建云开发小程序有几点注意的 1,一定不要忘记在app.js里初始化云开发环境。 [图片] 2,创建完云函数后,一定要记得上传 二, 创建支付的云函数 1,创建云函数pay [图片] [图片] 三,引入三方依赖tenpay 我们这里引入三方依赖的目的,是创建我们支付时需要的一些参数。我们安装依赖是使用里npm 而npm必须安装node,关于如何安装node,我这里不做讲解,百度一下,网上一大堆。 1,首先右键pay,然后选择在终端中打开 [图片] 2,我们使用npm来安装这个依赖。 在命令行里执行 npm i tenpay [图片] 安装完成后,我们的pay云函数会多出一个package.json 文件 [图片] 到这里我们的tenpay依赖就安装好了。 四,编写云函数pay [图片] 完整代码如下 [代码]//云开发实现支付 const cloud = require('wx-server-sdk') cloud.init() //1,引入支付的三方依赖 const tenpay = require('tenpay'); //2,配置支付信息 const config = { appid: '你的小程序appid', mchid: '你的微信商户号', partnerKey: '微信支付安全密钥', notify_url: '支付回调网址,这里可以先随意填一个网址', spbill_create_ip: '127.0.0.1' //这里填这个就可以 }; exports.main = async(event, context) => { const wxContext = cloud.getWXContext() let { orderid, money } = event; //3,初始化支付 const api = tenpay.init(config); let result = await api.getPayParams({ out_trade_no: orderid, body: '商品简单描述', total_fee: money, //订单金额(分), openid: wxContext.OPENID //付款用户的openid }); return result; } [代码] 一定要注意把appid,mchid,partnerKey换成你自己的。 到这里我们获取小程序支付所需参数的云函数代码就编写完成了。 不要忘记上传这个云函数。 [图片] 出现下图就代表上传成功 [图片] 五,写一个简单的页面,用来提交订单,调用pay云函数。 [图片] 这个页面很简单, 1,自己随便编写一个订单号(这个订单号要大于6位) 2,自己随便填写一个订单价(单位是分) 3,点击按钮,调用pay云函数。获取支付所需参数。 下图是官方支付api所需要的一些必须参数。 [图片] 下图是我们调用pay云函数获取的参数,和上图所需要的是不是一样。 [图片] 六,调用wx.requestPayment实现支付 下图是官方的示例代码 [图片] 这里不在做具体讲解了,把完整代码给大家贴出来 [代码]// pages/pay/pay.js Page({ //提交订单 formSubmit: function(e) { let that = this; let formData = e.detail.value console.log('form发生了submit事件,携带数据为:', formData) wx.cloud.callFunction({ name: "pay", data: { orderid: "" + formData.orderid, money: formData.money }, success(res) { console.log("提交成功", res.result) that.pay(res.result) }, fail(res) { console.log("提交失败", res) } }) }, //实现小程序支付 pay(payData) { //官方标准的支付方法 wx.requestPayment({ timeStamp: payData.timeStamp, nonceStr: payData.nonceStr, package: payData.package, //统一下单接口返回的 prepay_id 格式如:prepay_id=*** signType: 'MD5', paySign: payData.paySign, //签名 success(res) { console.log("支付成功", res) }, fail(res) { console.log("支付失败", res) }, complete(res) { console.log("支付完成", res) } }) } }) [代码] 到这里,云开发实现小程序支付的功能就完整实现了。 实现效果 1,调起支付键盘 [图片] 2,支付完成 [图片] 3,log日志,可以看出不同支付状态的回调 [图片] 上图是支付成功的回调,我们可以在支付成功回调时,改变订单支付状态。 下图是支付失败的回调, [图片] 下图是支付完成的状态。 [图片] 到这里我们就轻松的实现了微信小程序的支付功能了。是不是很简单啊。 如果感觉图文不是很好理解,我后面会录制视频讲解。 视频讲解 https://edu.csdn.net/course/detail/25701 源码地址: https://github.com/qiushi123/xiaochengxu_demos [图片] 014云开发实现小程序支付,就是我们的源码,如果你导入源码或者学习过程中有任何问题,都可以加我微信2501902696(备注小程序)
2019-08-14 - 已上线的域名和备案转移会影响小程序的访问么?
由于公司原因,要把开发配置里设置的域名和备案的主体转移到另外一家公司去,这样会影响到现在上线的小程序的访问么?
2019-06-19 - 网站域名变更的备案主体,会影响小程序的正常运行吗?
www.51huizhu.com,这个是我们的官网,之前已经备案过了,对应的主体是网博科技,现在成立了新公司叫慧助智能,目前正在做此官网的备案主体变更为慧助智能,变更后会不会影响小程序的正常运行和使用呢? ---------------------------------------------------------------------------------------------------------------------- [图片] 好的,谢谢,那另外,我想把小程序的主体也变更为“慧助智能”,是在上图里进行操作把?粉丝也会自动迁移把?迁移会不会非常麻烦?周期要多久?需要特别注意的事项是什么呢?
2019-05-10 - 小程序更换域名 - 备案有问题的域名
问题描述: 现在已经发布上线的小程序的域名,由于一些变更原因,导致备案有问题。需要更换小程序。但是问题是,如果我更换了小程序,在审核期间,是否现在线上的小程序会受影响呢? 因为现在用的域名有问题,导致合法域名设置哪里,无法添加新的合法域名,必须删除备案有问题的域名,删除之后,在我的小程序发布审核期间,是不是线上的小程序会受到影响。 我的疑问: 备案有问题的域名,在合法域名设置里,影响到新域名的添加,必须删除有问题的域名才能添加新的合法域名,那么我删除了有问题的备案域名之后,线上已经发布的小程序在我新的小程序发布申请期间是不是会有问题?
2018-07-22 - 小程序需要https域名,不会配置HTTPS?给我5分钟,手把手教你
本文针对不会配置HTTPS或者小白开发着,请开发者社区的大佬们自动忽略。非广告,心得分享,勿喷,谢谢。 👇 推荐一个小程序商城,全开源,码云GVP项目,有兴趣的可以了解一下:【点击下载】 👇 👇 正文开始 01、关于 FreeSSL.cn FreeSSL.cn 是一个免费提供 HTTPS 证书申请、HTTPS 证书管理和 HTTPS 证书到期提醒服务的网站,旨在推进 HTTPS 证书的普及与应用,简化证书申请的流程。 当然了,我看重的不是免费(微笑~),而是 FreeSSL 使用起来非常人性化。我是一个计算机常识非常薄弱的程序员(羞愧一下),但通过 FreeSSL,我竟然可以独自完成 Tomcat 的 HTTPS 配置! 很多年以前,公司要做华夏银行的接口对接,需要 HTTPS 访问,大概花了 3000 块买的证书,最后证书还有问题,HTTPS 也没搞定。总之,坑的很! FreeSSL.cn 有很大的不同,申请非常便捷,优点很多,值得推荐一波。毕竟再也不用邮件、电话各种联系了(也许时代进步了)。 100% 永久免费;这要感谢 Let’s Encrypt 与 TrustAsia 提供的免费 SSL 证书。 在 HTTPS 证书到期前,FreeSSL.cn 会及时地提醒更换证书,免费的服务。 私钥不在网络中传播,确保 HTTPS 证书的安全。 02、使用 FreeSSL 申请证书 第一步,填写域名,点击「创建免费的 SSL 证书」 [图片] 第二步,填写邮箱,点击「创建」 [图片] 1)证书类型默认为 RSA RSA 和 ECC 有什么区别呢?可以通过下面几段文字了解一下。 HTTPS 通过 TLS 层和证书机制提供了内容加密、身份认证和数据完整性三大功能,可以有效防止数据被监听或篡改,还能抵御 MITM(中间人)攻击。TLS 在实施加密过程中,需要用到非对称密钥交换和对称内容加密两大算法。 对称内容加密强度非常高,加解密速度也很快,只是无法安全地生成和保管密钥。在 TLS 协议中,应用数据都是经过对称加密后传输的,传输中所使用的对称密钥,则是在握手阶段通过非对称密钥交换而来。常见的 AES-GCM、ChaCha20-Poly1305,都是对称加密算法。 非对称密钥交换能在不安全的数据通道中,产生只有通信双方才知道的对称加密密钥。目前最常用的密钥交换算法有 RSA 和 ECDHE:RSA 历史悠久,支持度好,但不支持 PFS(Perfect Forward Secrecy);而 ECDHE 是使用了 ECC(椭圆曲线)的 DH(Diffie-Hellman)算法,计算速度快,支持 PFS。 2)验证类型默认为 DNS DNS 和文件验证有什么区别呢?我们再来一起了解下。 首先,我们需要明白一点,CA(Certificate Authority,证书颁发机构) 需要验证我们是否拥有该域名,这样才给我们颁发证书。 文件验证(HTTP):CA 将通过访问特定 URL 地址来验证我们是否拥有域名的所有权。因此,我们需要下载给定的验证文件,并上传到您的服务器。 DNS 验证:CA 将通过查询 DNS 的 TXT 记录来确定我们对该域名的所有权。我们只需要在域名管理平台将生成的 TXT 记录名与记录值添加到该域名下,等待大约 1 分钟即可验证成功。 所以,如果对服务器操作方便的话,可以选择文件验证;如果对域名的服务器操作比较方便的话,可以选择 DNS 验证。如果两个都方便的话,请随意选啦。 3)CSR生成默认为离线生成 离线生成、浏览器生成 和 我有 CSR 又有什么区别呢?来,我们继续了解一下。 离线生成 推荐!!!:私钥在本地加密存储,更安全;公钥自动合成,支持常见证书格式转换,方便部署;支持部分 WebServer 的一键部署,非常便捷。 离线生成的时候,需要先安装 KeyManager,可以提供安全便捷的 SSL 证书申请和管理。下载地址如下: https://keymanager.org/ Windows 的话,安装的时候要选择“以管理员身份运行”。 浏览器生成:在浏览器支持 Web Cryptography 的情况下,会使用浏览器根据用户的信息生成 CSR 文件。 Web Cryptography,网络密码学,用于在 Web 应用程序中执行基本加密操作的 JavaScript API。很多浏览器并不支持 我有 CSR:可以粘贴自己的 CSR,然后创建。 第三步,选择离线生成,打开 KeyManager 填写密码后点击「开始」,稍等片刻。 第四步,返回浏览器,点击「下一步」,出现如下界面。 [图片] 第五步,下载文件,并上传至服务器指定目录下。 第六步,点击「验证」,通过后,出现以下界面。 [图片] 第七步,点击「保存到KeyManager」,可以看到证书状态变成了已颁发。 03、为 Tomcat 配置 jks 格式证书 第一步,导出证书。假如服务器选择的 Tomcat,需要导出 Java keystone (简拼为 jks)格式的证书。 [图片] 注意:私钥的密码在配置 Tomcat 的时候用到。 [图片] 第二步,上传证书至服务器。 第三步,配置 Tomcat 的 server.xml。 [代码] <Connector port="81" protocol="HTTP/1.1" maxThreads="250" maxHttpHeaderSize="8192" acceptCount="100" connectionTimeout="60000" keepAliveTimeout="200000" redirectPort="8443" useBodyEncodingForURI="true" URIEncoding="UTF-8" compression="on" compressionMinSize="2048" noCompressionUserAgents="gozilla, traviata" compressableMimeType="text/html,text/xml,application/xml,application/json,text/javascript,application/javascript,text/css,text/plain,text/json,image/png,image/gif"/> <Connector protocol="org.apache.coyote.http11.Http11NioProtocol" port="443" maxThreads="200" scheme="https" secure="true" SSLEnabled="true" keystoreFile="/home/backup/qingmiaokeji.cn.jks" keystorePass="Chenmo" clientAuth="false" sslProtocol="TLS" useBodyEncodingForURI="true" URIEncoding="UTF-8" compression="on" compressionMinSize="2048" noCompressionUserAgents="gozilla, traviata" compressableMimeType="text/html,text/xml,application/xml,application/json,text/javascript,application/javascript,text/css,text/plain,text/json,image/png,image/gif" /> [代码] 其中 keystorePass 为导出证书时私钥的加密密码。 第四步,重启 Tomcat,并在浏览器地址栏中输入 https://你的域名/ 进行测试。 注意到没,浏览器地址栏前面有一个绿色的安全锁,这说明 HTTPS 配置成功了!好了,为自己鼓个掌! 04、最后 你有没有订个五分钟的时间沙漏?如果超过五分钟 HTTPS 还没有配置成功,你过来揍我!反正你又打不来我!我在CRMEB等你! 👇 👇 👇 最后亿遍,再次发一下我的项目:全开源啊!公众号+小程序啊!商城系统啊!免费啊!了解一下啊→→→点我点我!
2019-05-10 - 小程序拉起微信付款码
hi 亲爱的微信小伙伴,咨询下,我们希望在小程序内实现拉起付款码的功能,即:用户点击“微信支付”然后直接拉起用户的微信付款码,请问对应的文档及申请流程是怎样的呢? 因为现在很多小程序也已经有这个功能了,比如:好邻居、多点、罗森点点、钱大妈等等(你们可以打开对应的小程序看下),目前我们也有类似的业务,但是我们在开发文档中没有找到类似的API,请问有什么办法呢? [图片] [图片]
2019-07-03 - 使用wx.setStorage实现小程序类Redis操作,可设置数据有效期
[代码]/**[代码][代码] [代码][代码]* 设置[代码][代码] [代码][代码]* k 键key[代码][代码] [代码][代码]* v 值value[代码][代码] [代码][代码]* t 秒[代码][代码] [代码][代码]*/[代码][代码]function[代码] [代码]putLS(k, v, t) {[代码][代码] [代码][代码]try[代码] [代码]{[代码][代码] [代码][代码]wx.setStorageSync(k, v)[代码][代码] [代码][代码]var[代码] [代码]seconds = parseInt(t)[代码][代码] [代码][代码]if[代码] [代码](seconds > 0) {[代码][代码] [代码][代码]var[代码] [代码]newtime = Date.parse([代码][代码]new[代码] [代码]Date())[代码][代码] [代码][代码]newtime = newtime / 1000 + seconds;[代码][代码] [代码][代码]wx.setStorageSync(k + [代码][代码]'xz'[代码][代码], newtime + [代码][代码]""[代码][代码])[代码][代码] [代码][代码]} [代码][代码]else[代码] [代码]{[代码][代码] [代码][代码]wx.removeStorageSync(k + [代码][代码]'xz'[代码][代码])[代码][代码] [代码][代码]}[代码][代码] [代码][代码]} [代码][代码]catch[代码] [代码](e) {[代码][代码] [代码][代码]// console.log(e);[代码][代码] [代码][代码]}[代码][代码]}[代码][代码]/**[代码][代码] [代码][代码]* 获取[代码][代码] [代码][代码]* k 键key[代码][代码] [代码][代码]*/[代码][代码]function[代码] [代码]getLS(k) {[代码][代码] [代码][代码]try[代码] [代码]{[代码][代码] [代码][代码]var[代码] [代码]deadtime = parseInt(wx.getStorageSync(k + [代码][代码]'xz'[代码][代码]))[代码][代码] [代码][代码]if[代码] [代码](deadtime) {[代码][代码] [代码][代码]if[代码] [代码](parseInt(deadtime) < Date.parse([代码][代码]new[代码] [代码]Date()) / 1000) {[代码][代码] [代码][代码]//wx.removeStorageSync(k);[代码][代码] [代码][代码]remLS(k)[代码][代码] [代码][代码]console.log([代码][代码]"过期了"[代码][代码])[代码][代码] [代码][代码]return[代码] [代码]false[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码][代码] [代码][代码]var[代码] [代码]res = wx.getStorageSync(k)[代码][代码] [代码][代码]if[代码][代码](res){[代码][代码] [代码][代码]return[代码] [代码]res[代码][代码] [代码][代码]}[代码][代码]else[代码][代码]{[代码][代码] [代码][代码]return[代码] [代码]false[代码][代码] [代码][代码]}[代码][代码] [代码][代码]} [代码][代码]catch[代码] [代码](e) {[代码][代码] [代码][代码]// console.log(e);[代码][代码] [代码][代码]}[代码][代码]}[代码][代码] [代码] [代码]/**[代码][代码] [代码][代码]* 删除[代码][代码] [代码][代码]*/[代码][代码]function[代码] [代码]remLS(k) {[代码][代码] [代码][代码]try[代码] [代码]{[代码][代码] [代码][代码]wx.removeStorageSync(k);[代码][代码] [代码][代码]wx.removeStorageSync(k + [代码][代码]'xz'[代码][代码]);[代码][代码] [代码][代码]} [代码][代码]catch[代码] [代码](e) {[代码][代码] [代码][代码]// console.log(e);[代码][代码] [代码][代码]}[代码][代码]}[代码] [代码]/**[代码][代码] [代码][代码]* 清除所有key[代码][代码] [代码][代码]*/[代码][代码]function[代码] [代码]remAllLS() {[代码][代码] [代码][代码]try[代码] [代码]{[代码][代码] [代码][代码]wx.clearStorageSync();[代码][代码] [代码][代码]} [代码][代码]catch[代码] [代码](e) {[代码][代码] [代码][代码]// console.log(e);[代码][代码] [代码][代码]}[代码][代码]}[代码]module.exports = { putLS, getLS, remLS, remAllLS } [代码][代码]
2019-06-22 - 利用canvas实现倒计时功能
wxml代码: <view class=“page-body”> <view class=“page-body-wrapper”> <canvas canvas-id=“canvas” class=“canvas”></canvas> </view> </view> js代码: onReady: function () { this.totalTime = 30 this.interval = setInterval(this.drawText,1000) }, drawText: function (){ var context = wx.createCanvasContext(“canvas”) var _totalTime = this.totalTime function text(t) { context.setFontSize(20) context.fillText(t, 100, 100) } text(_totalTime) _totalTime = _totalTime - 1 this.totalTime = _totalTime context.draw(false, dd=>{ if (this.totalTime < 0) { this.totalTime = 30 } }) },
2019-05-17 - 搜索Widget面向开发者开放测试
搜索Widget,是微信搜索提供的可编程模板,开发者可以通过API的方式接入小程序数据,以适当的模板为用户提供服务和内容。 1. 模板介绍 模板分为标准模板和自定义模板: 标准模板:搜索样式固定,如“购物单商品”、“功能直达”,现已面向开发者开放接入,接入完成后即可发布。 自定义模板:支持自定义搜索样式,开发者可以开发、调试自定义模板,调试完成后暂不可对微信用户发布,具体发布时间待定。 [图片] 标准模板:购物单商品 [图片] 标准模板:功能直达 [图片] 自定义模板:机票预订服务 2. 接入条件 用于接入搜索Widget的小程序不属于社交、医疗、资讯、游戏、电商平台等类目。 3. 接入流程 登录小程序绑定的同主体公众号后台,添加“搜索开放平台”插件,进入“功能组件-搜索Widget”查看开通流程。详情可参考《搜索Widget接入指南》。
2018-11-02 - 「微信开发者·代码管理」功能上线
各位开发者: 大家好。 近期我们上线了微信开发者·代码管理 的功能,这是为开发者提供的一项基于 Git 的代码管理服务。方便微信开发者进行代码推送、拉取、版本管理和多人协作,并且可以简单的将仓库设置为私有或者公开。 系统会为每个小程序自动创建一个专属项目组,用户无需单独开通。后续登录过微信开发者·代码管理的小程序开发者会自动成为该项目组成员。 微信开发者·代码管理的登录用户必须同时满足以下两个条件: 1.该用户必须为微信开发者,即微信小程序、订阅号以及服务号的开发者; 2.该用户必须为实名认证的用户。 微信开发者·代码管理的登录方式包括: 1.通过微信开发者工具版本管理中的“代码管理”或工具栏中的“微信开发者·代码管理”快速进入。 2.通过浏览器微信扫码登录:https://git.weixin.qq.com 。 具有登录权限的用户,可在小程序专属项目组中创建远程仓库或创建其他非小程序专属项目组。 在微信开发者工具版本管理中添加远程仓库时,系统会自动拉取该小程序专属项目组下已创建远程仓库列表。用户可点击选择相应仓库,系统会自动填充该仓库的 URL 和名称,方便用户添加。 [图片] 详细内容可参考 文档。 微信团队 2019.01.28
2019-01-28 - 十分钟理解 Git 原理
历史 2002 年,Linus(Linux 作者)决定使用 BitKeeper 作为 Linux 内核主要的版本控制系统。Linus 曾考虑过采用现成软件作为版本控制系统,但这些软件都存在一些问题,比如:性能不佳。 2005 年,Andrew(Samba 作者)写了一个简单程序,可以连接 BitKeeper 的存储库,BitKeeper 作者反对这种逆向工程的行为,因此收回了无偿使用 BitKeeper 的许可。Linux 内核开发团队与其磋商无果后,Linus 决定自行开发版本控制系统替代 BitKeeper,然后用了十天的时间编写出 Git。 Git(英国俚语“混帐”)名字来源于 Linus 的自嘲: I’m an egotistical bastard, and I name all my projects after myself. First Linux, now Git. 基本原理 因为 Git 是一个分布式版本控制系统,因此 Git 的操作大部分都是在本地的,除非明确说明,下面的原理或命令都是本地操作。 每个 Git 项目的根目录下有一个 [代码].git[代码] 目录,它是 Git 默默进行版本控制时读写的“数据库”。有几个概念需要提一下: 工作区:代码所在目录; 暂存区: [代码].git/index[代码] 文件; 本地仓库: [代码].git[代码] 目录; 一个典型的工作流程如下图,绿色部分为工作区(Working Directory),对它进行任何修改(包括:新建文件、删除文件、文件重命名等)都和单纯的修改文件一样,不会涉及到版本控制。 只有当你把工作区的修改提交(commit)到仓库([代码].git[代码] 目录)中,Git 才会真正的进行版本控制。 [图片] 暂存区是一个包含文件索引的目录树([代码].git/index[代码] 文件),记录了文件的元数据(文件名、文件长度、修改时间等),而文件内容则存放在 [代码].git/objects[代码] 目录下。 用 Git 进行版本控制,实际上就是在工作区、暂存区、仓库三个地方进行文件信息的记录。 [图片] Git 将提交(commit)、文件、目录统统视为对象。对象以 [代码]SHA1[代码] 值作为指纹,与其他对象相区分。Git 命令操作的最小单位是对象。 Git 会将文件的副本存放在 [代码].git[代码] 文件夹下,每个文件都根据文件内容进行操作。以下图为例: [代码]98ca9[代码] 对象是一次提交,它记录了本次提交的元信息以及 [代码]92ec2[代码] 树对象; [代码]92ec2[代码] 树对象记录了文件名和对象的印射关系; 本次提交修改的三个文件一一对应了一个对象; [图片] Git 项目的文件始终在四种状态之间迁移,如下图所示: [图片] 如果是新文件,典型的操作流程如下: 创建一个新文件 [代码]foo.txt[代码],此时它处于未跟踪(Untracked)的状态,未被 Git 进行版本控制; [图片] 通过 [代码]add[代码] 命令将它纳入 Git 管理,此时 [代码]foo.txt[代码] 变为已暂存(Staged)状态; [图片] 提交此次操作,[代码]foo.txt[代码] 转变为未修改(Unmodified)状态; [图片] 如果是修改文件,典型的操作流程如下: 修改 [代码]foo.txt[代码] 文件,它转变为已修改(Modified)状态; [图片] 通过 [代码]add[代码] 命令将它的修改记录到暂存区,为已暂存(Staged)状态; [图片] 提交此次操作,[代码]foo.txt[代码] 转变为未修改(Unmodified)状态; [图片] 如果是删除文件,典型的操作流程如下: 删除 [代码]foo.txt[代码] 文件,它转变为已修改(Modified)状态; [图片] 通过 [代码]add[代码] 命令将操作记录到暂存区,为已暂存(Staged)状态; [图片] 提交此次操作,[代码]foo.txt[代码] 转变为未修改(Unmodified)状态(文件历史版本依然在 [代码].git[代码] 中被记录着); [图片] 常用命令 下面列举一下常用的 Git 命令,方便速查。更详细的速查可以看 快速回忆你用过的 Git。 查看信息 [代码]# 列出处于未跟踪、已修改或已暂存状态的文件 git status # 查看提交日志 git log # 查看已暂存文件和最后一次提交相比的详细修改 git diff --staged [代码] 状态变更 [代码]# 暂存或添加 git add . # 提交 git commit -m "commit description" [代码] 远程仓库(Remote Repository) [代码]# 下载到本地 git clone http://git.code.oa.com/<USER>/<PROJECT>.git # 更新代码 git pull # 将本地仓库的 commit 提交到远程仓库 git push origin master # 显示远程仓库信息,比如:url(不涉及网络通信) git remote -v [代码]
2019-03-19 - 微信商户单笔收款限额控制
我们有个商户使用信用卡支付的时候突然报“超过该商户单笔收款限额,请降低金额重试”的错误,麻烦问一下微信商户限额是怎么控制的,单笔、日累计、月累计的借记卡、贷记卡消费限额分别多少?
2019-01-09 - 普通商户和服务商
普通商户和服务商有什么区别?
2018-12-19 - 商户号该产品权限处罚中
微信唤起支付提示:商户号该产品权限处罚中,请前往商户平台> 产品中心检查后重试. 相关违规和申诉已经处理完了。 [图片] [图片] [图片]
2019-03-05 - 如何平滑更换小程序的支付商户
一直都没有找到专业的解答,捣鼓了几次也没有配置成功,请官方看看。 小程序上线后,主体是X公司,使用的某服务商下的子商户A进行支付,子商户A的主体也是X公司 目标:现在想将小程序的支付商户改为同服务商下的B进行支付,子商户B已经完成一切认证手续,主体是Y公司。 已经做的操作: 1、在子商户B上,已经对小程序进行了授权,并通过,在产品中心--开发配置(APPID授权管理)--已绑定授权APPID管理,可以看到小程序了。 2、在小程序上,微信支付--商户号管理--已绑定商户号,也是显示的B公司。 在系统中将子商户B的ID替换原来子商户A的ID,进行支付时,系统提示: {return_msg=sub_mch_id与sub_appid不匹配, return_code=FAIL} 现在完全是乱套的。 在服务商下的特约商户配置,->B子商户下新加小程序,提示如下,是不是微信支付收款商户必须要和小程序是同一个主体? [图片] 而在小程序的“微信支付”,商户中,已经显示了B子商户的信息,没有原来A子商户的信息 [图片]
2019-03-05 - 已超出单笔支付限额 请降低额度后再试
已超出单笔支付限额 请降低额度后再试
2019-03-01 - 已超出单笔支付限额,请降低额度后再试
商户号:1496634732 能不能提供个详细介绍。 [图片]
2019-02-28 - 小程序12月份没有任何订单却被通知“涉嫌异常交易”
因为没有订单,申述也无法提供完整的举证信息,这种的需要如何解决? [图片] [图片] [图片]
2019-02-11 - 驾校答题小程序实战全过程-1.数据库设计
1. 项目要求 小程序端开发 WEB管理后台开发 2. 项目功能 主栏目分为科目一答题练习、科目四答题练习、满分学习、注销恢复、资格证,包含小车、客车、摩托车等,功能包含视频讲解、章节练习、模拟考试、错题、收藏等等。 支持支付、分享、提成、提现等 3. 项目选型 小程序选择 Serverless架构,以最高效率开发 这里使用以下技术产品 小程序端: Bmob后端云+iview VUE + Bmob后端云 Bmob后端云,自带了支付,生成二维码等接口,这里集成可以快速上线。VUE 有丰富的后台模板,可以更快的做出管理后台。 4.开发过程 第一步:清晰了解需求 参考、分析行业有关产品:驾校一点通与驾考宝典。 第二步:数据库设计 思路:数据库参考其他驾考类小程序,优先把核心字段建立出来,尽量考虑周全, 不够后面再补。 这里注意的是,Serverless架构,主要适合做一些中小型应用,如果应用数据量很大, 尽量提前考虑分表。 数据表: 题目表 题目类别表(题形) 错题表 收藏表 成绩表 用户表 用户表(Bmob系统自带 )了 数据库文档 由于使用Bmob后端云数据库,默认每条记录都带id、创建时间与更新时间,此数据表说明不带这2个字段。 题目表(question) 名称 类型 描述 title string 题目名称 choseList Array 选择列表 [{“item”:“选选一”},{“item”:“选选二”,“isChose”:true}] type int 类型 1.单选 2.多选 3.判断 pic string 图片地址 video string 视频地址 help string 帮助描述 bSubjects int 所属科目 1.科目一 2.科目四 bModels int 所属车型 1.小车 2.货车 3.客车 4.摩托车 bType string 所属类别 关联类别表 题目类别表(questionType) 名称 类型 描述 bSubjects string 所属科目 1.科目一 2.科目四 title sting 类别名称 错题表 名称 类型 描述 id string 题目id uid string 用户id 收藏表 名称 类型 描述 id string 题目id uid string 用户id 成绩表 名称 类型 描述 time string 用时 score int 成绩 设计好数据表之后,做准备工作 拿到小程序的 AppID填写到Bmob控制台,应用设置-》应用配置 把上面所有想好建立好的数据表添加到数据库 小程序开发工具新建一个空白项目,复制BmobSDK,到utils目录 引入SDK,初始化。 引入SDK,初始化。文档在这里: https://bmob.github.io/hydrogen-js-sdk/#/?id=%E5%88%9D%E5%A7%8B%E5%8C%96 最终效果如下: 效果一:所写代码➕预览 [图片] 效果二:数据表变化 [图片] 这样我们就实现了,整个小程序开发的第一步,自动注册登陆,获取openid。 后面将继续讲解该小程序的答题功能、顺序练习、模拟考试、题目采集、语音读题等功能开发,敬请关注
2019-03-21 - 一家分店月净利润达50W,近50%由小程序贡献!这家火锅店是如何做到的?
火锅之战升级,红海竞争中的品牌究竟该如何突围?小程序能否成为这场突围之战的利器?我们或许能从以下这个品牌中找到答案。 作者丨Range [图片] 近两年,餐饮业以巨大的市场规模、相对低的进入门槛和渗透率,吸引了众多跨界餐饮创业者涌入,而火锅作为其中第一大类品,入局的玩家数量更甚。 据美团点评全国火锅店发展情况数据显示,2018年前两季度火锅店数量持续增长,到8月已经达到近40万家门店,火锅行业竞争愈发激烈。 在这种激烈的市场竞争中,一个先前名不见经传的火锅品牌「麻辣风云」脱颖而出。它凭着优质的服务、以及出色的运营策略,成功圈了一批忠实顾客,并且做出门店小程序订单占比超40%的不俗成绩。 要知道,网红茶饮品牌「喜茶」的小程序订单占比也只是35%左右。 为此,晓程序速报(ID:xcxsubao)专访了「麻辣风云」的小程序负责人曹总,以下是本次专访内容。 小程序订单占比超40% Q:您现在负责的麻辣风云小程序门店主要分布在哪些城市? A:我目前负责6家门店,都在广东省,3家在珠海,3家在中山。 Q:能否介绍一下麻辣风云门店的数据情况? A:这几家门店各有差异,但数据情况都还不错。每家门店的月净利润在50万左右,会员充值占比达20%,小程序订单占比更是超40%。 [图片] 跨界进军餐饮 Q:小程序订单占比之高,得益于麻辣风云在小程序的及早布局,当时您是出于怎样的考量? A:我之前是做收银系统的,主攻行业是餐饮业。自己当时为了做这个,还专门去餐饮店打工数月,就是为了更好的了解餐饮业现状和痛点。 以前顾客到门店消费,需要到服务台买单结账,而且人一多还得排老长的队。小程序的出现,能够很好地改善顾客的消费体验,这是一个契机。 [图片] Q:餐饮行业巨大且分散,为什么当初会选择火锅这一品类? A:火锅制品工序简单,味道不会有差,容易批量化产出,所以特别适合做小程序。顾客到店后可以直接在小程序上进行点餐、加餐等操作。 不过,火锅作为餐饮的第一大品类,竞争十分激烈。如今一家火锅品牌,不仅面对川渝火锅、北派火锅、粤系火锅等不同地域火锅的竞争,还同时面临着串串锅、打边炉等其他新型火锅的竞争。 就拿珠海靠北口岸的位置来说,和麻辣风云竞争的品牌就有5、6家。它们还不是一般的小品牌竞争,大家都是连锁品牌。 [图片] 玩法多变的优惠活动 Q:在这种激烈的火锅市场竞争中,麻辣风云用了哪些措施成功站稳脚跟? A:说到做火锅,最基本的就是大家的锅底,这方面大家都不会有大问题。可能顾客去哪家去吃,口味都不会差到哪里去,所以我们会通过提高服务、升级装修,让顾客到店有更好的消费体验,以此来吸引以及留住顾客。 什么叫好的消费体验?以前顾客需要到服务台买单结账,现在不用了,坐在那里通过小程序里面就可以直接付。虽然现在其他火锅店也开始陆续接入,不过我们是在门店小程序里做了一些活动的。 [图片] 首先是返现,顾客通过小程序付款会返现消费额的10%。比如说顾客吃一百块钱,给他送十块钱的消费额,那么下次顾客来周边或者想吃个火锅,想到这里还有几十块钱的优惠,很有可能会考虑二次消费,这是第一种方案。 第二种,充值免单。当顾客充值当餐消费的三倍金额以上,就可以免掉当餐的消费,并且这个方案是和第一种是可以叠加的。 目前这两个方案效果还是不错的。 Q:除了积分返现、充值免单,您还做哪些其他活动去吸引用户? A: 麻辣风云每个月设置了三天会员日,分别是3号、13号、23号。会员日的优惠力度是比较大的,当天消费会有6.8折的会员折扣,并且我们前面提到的当面付的积分,3倍充值免单等活动,在会员日也是可以同享的,因此会员日来充值的顾客也是比较多的。 [图片] 不仅如此,麻辣风云在一些节日也会做活动。比如上周的3.8妇女节,我们就做了这样的优惠活动:当天有女士陪同到店消费,即可获赠精品肥牛一份。 本来我们一开始是想用小程序和顾客互动,互动完就可以领精品肥牛,后来我们觉得这个门槛太高了,所以最后还是决定:只要当天你到店消费了,我们就免费送一份肥牛。 “小程序+餐饮”的难点 Q:麻辣风云一开始通过小程序来辅助餐饮运营,有遇到哪些困难? A:一开始困难还挺大的。小程序刚开始的时候还不是很成熟,和微信公众号一样,大家对这个产品都很陌生,都不知道是一个什么东西,能够带来什么效益。所以我们当时只能自己去摸索,然后引导消费者去认知和使用它,这个过程是相当耗成本的。 我们之前就遇过一个商家,也是做火锅的。他们当时也跟风做了个小程序,不过小程序内没什么功能,只能点餐,商家也没有做用户引导或其他活动。小程序搁那一年,现在好像都快下线了。 [图片] Q:说到小程序点餐功能,麻辣风云的门店小程序还有储值金、预约等多种功能,能否分享下目前顾客使用比较频繁的一些功能? A:目前顾客使用最多的功能,还是当面付,其次就是会员充值这块。但是预约这个功能用的就比较少,我们也在分析这个原因,一直在想办法提高这个功能的使用率。 尽管当面付、会员充值功能的使用情况都还不错。但我们面临着一个用户拉新的问题,因为现在麻辣风云服务的都是周边区域,来充值会员的基本都是一些老用户。只要我们的服务、品质各方面做得好,老用户是不会跑的,可怎样才能通过拉到新用户,这个也是我们目前在考虑的问题。 [图片] 麻辣风云的2019 Q:麻辣风云接下来有哪些规划? A:小程序会是2019年的重点业务线。一方面,麻辣风云会改善优化前面提到的一些问题,如用户拉新、小程序部分功能未被充分利用等;另一方面,会新增几家连锁门店,增强麻辣风云的品牌影响力,进而打造本地商圈。 Q:对于其他也想通过小程序去入局餐饮行业的中小商家,您有哪些建议? A:我觉得要结合自身情况,趁早入局,尽快把小程序这个工具利用起来,让顾客形成一种消费习惯。另外要抓好餐饮店的运营管理,包括设置内部激励机制、定期做营销活动等等。 本运营案例来源:晓程序速报 微信公众号 【ID:xcxsubao】 [图片]
2019-03-12 - 微信收款「商业版」与「个人版」有什么区别?看完这篇你就懂!
前几天,我们曾推出一篇文章,介绍了「收款小账本」小程序新上线的“朋友会员”功能,并认为这个功能的推出,能让一般的中小商家都拥有会员营销能力。 大家在讨论的同时,也有很多小伙伴来问我们,咨询这个“朋友会员”跟微信收款商业版(原名微信买单)里面的会员功能有什么不同?「收款小账本」和微信收款商业版这两款同为收款工具的产品又该如何选择? 今天,我们就认真梳理对比一下。 降低门槛是唯一目的 首先,让我们了解一下这两款产品的产生背景。 为门店而生的“微信收款商业版” 当初,在移动支付巨头们的猛攻之下,在线支付已经飞入了寻常百姓家,哪怕是小摊贩、小饭馆都可以挂上一张个人二维码来收款。 [图片] 但这里的问题是,对于有门店的商家而言,如果放店主的个人二维码,店员每次收款都需要找店主核对,十分麻烦,并且跟店主对账也不方便。 所以微信支付开放了一些接口让商家接入,通过这个接口就能生成一个门店专属的收款码,实现一定的经营功能,但当时打通这些接口比较复杂,需要技术开发能力,对于小商家而言是不可承受之重。 因此,2016年,微信支付推出“微信买单”这个工具,商家直接上传相关证件,包括营业执照、法人身份证、组织机构代码证(三证合一的商户可直接上传营业执照)、结算银行账户这四项,就可以直接申请接入微信支付系统,免去了技术开发的困扰。 此后,“微信买单”的功能不断完善,并改名为“微信收款商业版”,更加通俗易懂。 为小商户打造的“收款小账本” “商业版”虽好,但对于许多小商家而言,依旧嫌麻烦,只用个人二维码收款,上述痛点仍然存在。 2018年2月,为了惠及更多的个体商户和小本买卖经营者,微信支付放出大招,推出“中小商家智慧助力计划”,主要产品之一就是「收款小账本」,这款小程序让小商户零门槛拥有一套智慧收银系统。 只要打开自己的微信支付,在“二维码收款”功能中就能找到,或者直接搜索「收款小账本」,使用特别方便。 [图片] 「收款小账本」以个人收款码为基础,并附加上诸多经营功能,比如收款语音播报、经营报表、添加店员等等,可谓麻雀虽小,五脏俱全。 除了经营功能,「收款小账本」还逐渐推出了一些营销功能,比如我们前几天提到的“朋友会员”。 可以说,从两款产品的诞生背景来看,就已经有明显的区别: 微信收款商业版针对于线下门店,以门店为核心,提供丰富的经营与营销功能。 收款小账本针对于用个人二维码收款的小商贩,以个人为核心,提供基础的经营与营销功能。 而两款产品的目的,都是为了降低中小商家接入微信支付的门槛,实现智慧化经营。 「商业版」功能丰富,「小账本」五脏俱全 那么,从具体的功能来看,二者有何区别? 微信收款商业版的主要功能有: 收款记录、支持信用卡付款、自动提现、多门店/多店员管理、官方营销活动、手机扫码付款、免费官方物料、收款语音播报、经营报表分析、商品货架、积分会员。 收款小账本的主要功能有: 收款语音提醒、添加店员接收通知、免费官方物料、收款记录、经营报表、朋友会员(内测)。 功能对比如下: [图片] 对比之后发现,基本上所有「收款小账本」的功能都被“商业版”涵盖了,并且商业版有许多「小账本」没有的功能,我们一一介绍一下: 信用卡支付:顾客扫描商业版的收款码,就可以使用信用卡支付,个人二维码不行。 [图片] 自动提现:商业版默认资金是自动提现到绑定的结算账户上,一般是1到3个工作日到账。 多门店/多店员管理:拥有多个门店的经营者,可以使用这一功能,为每个门店生成单独的收款码,但都结算到同一账户。还可以为每个门店分配店长/店员,方便管理,老板能够在手机上查看每个门店的收款详情。 [图片] 官方营销活动:商户可以在「微信收款商业版」小程序内创建满减、折扣两个营销活动,并且官方也会经常推出摇一摇免单等活动,官方活动的补贴由官方垫付,商户免费申请使用。 [图片] 手机扫码付款:手机一秒变成POS机,店员可扫描顾客付款码,避免顾客输错付款金额的问题。 商品货架:通过这个功能,门店可以创建自己专属的商品货架,其实就是一个小程序版的线上商城,满足了线上下单的基本需求,可以不用再单独开发小程序。 [图片] 说完了不同点,谈谈相同点,有一个大家关心的问题是,二者都有会员功能,如何选择?让我们看看两种会员功能的具体内容。 商业版以积分制为核心 微信收款商业版的会员功能主要与积分结合,顾客每次消费完,在结算页就可以点击成为会员,之后每次消费都能积累积分,积分直接抵扣现金。 [图片] 这里有一个技巧,一般新加入的会员都会赠送一定积分,这个额度以及消费金额与积分的兑换比都可以手动设定,因此,每个门店就可以根据经营情况动态调整。 比如,想要拉来更多新会员,就将赠送的积分调高,想要促进老会员复购,就把兑换比率抬高,原来是1000积分抵1元,可以调整为500积分抵1元。 [图片] 个人版成为会员心理门槛比较高 而「收款小账本」的“朋友会员”,需要顾客手动扫码,添加店主为好友,之后再消费就能获得折扣,此后店主可以通过朋友圈或者群来进行营销。 但这种方式,顾客需要操作的步骤更多,同时也涉及到一定隐私问题,加入会员的心理门槛比较高。详情可查阅→(点我阅读) [图片] 因此,微信收款商业版的会员功能接入更简单,也更灵活,适合客流量比较大的门店,新客转为会员的概率也比较高;而收款小账本的会员功能,更适合已经有一些老客、熟客的小商贩。 最后,说一下大家最关心的费用问题。 申请微信支付商户并开通微信收款商业版是免费的,但在自动结算时会收取手续费,行业不同,费率也不同,一般是0.6%,即一天收入1000元,需要缴纳6元手续费,实际到账994元。 而收款小账本的使用则是完全免费的,收到的钱直接进入微信钱包。 综上所述,通过背景、功能、费用的对比可以看出:微信收款商业版适合有门店,客流量大,有一定规模的商户;而收款小账本适合规模较小,有固定回头客,灵活性比较强的个体小商贩。 大家对这两款产品还有哪些疑惑,可以在下方留言跟我们讨论。
2019-03-12