HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

淘客APP开发功能点

5+App开发

淘客APP开发功能点
1.多平台对接
APP需要对接主流电商平台,淘宝、天猫、京东、拼多多、唯品会等数据接口,平台切换简单方便。
2.多用户商城
APP平台化,做成多商户,淘客+商城新模式运营,多,更容易引流。
3.社区团购
依托真实社区,以小区为单位以为载体的一种区域化、小众化、本地化、网络化的团购,依托社区和团长社交关系实现生鲜商品流通、生活服务,集中化管理运营的新零售模式。
4.+合伙人模式
三级(法律允许的多层级)+运营商模式+VIP会员制,多逻辑自由组合,横向纵向双向拓展,轻松实现代理级别新模式运营。
5.营销多样化
通过生成,通过邀请好友,一件分享朋友圈、、知乎、头条、小红书等社交媒体,支持电商直播,支持618、双十一等重大活动宣传海报生成,为运营提前筹备。
6.商品一键
商品实时从第三方平台自动无需手动操作,数据更新快,操作简单,产品上架容易。
7.快速分享挣红包
通过分享挣红包等方式,鼓励消费者分享商品至各社交平台,激活消费者,降低成本,提升推广速度和裂变效果。
8.多维数据分析
产品数据,财务数据,用户数据,平台盈利等多维度数据查询分析让您的决策更加有效。

继续阅读 »

淘客APP开发功能点
1.多平台对接
APP需要对接主流电商平台,淘宝、天猫、京东、拼多多、唯品会等数据接口,平台切换简单方便。
2.多用户商城
APP平台化,做成多商户,淘客+商城新模式运营,多,更容易引流。
3.社区团购
依托真实社区,以小区为单位以为载体的一种区域化、小众化、本地化、网络化的团购,依托社区和团长社交关系实现生鲜商品流通、生活服务,集中化管理运营的新零售模式。
4.+合伙人模式
三级(法律允许的多层级)+运营商模式+VIP会员制,多逻辑自由组合,横向纵向双向拓展,轻松实现代理级别新模式运营。
5.营销多样化
通过生成,通过邀请好友,一件分享朋友圈、、知乎、头条、小红书等社交媒体,支持电商直播,支持618、双十一等重大活动宣传海报生成,为运营提前筹备。
6.商品一键
商品实时从第三方平台自动无需手动操作,数据更新快,操作简单,产品上架容易。
7.快速分享挣红包
通过分享挣红包等方式,鼓励消费者分享商品至各社交平台,激活消费者,降低成本,提升推广速度和裂变效果。
8.多维数据分析
产品数据,财务数据,用户数据,平台盈利等多维度数据查询分析让您的决策更加有效。

收起阅读 »

免费API 订单播报 云音箱 自定义播报内容不止于支付 4G云喇叭

部分API接口预览,完整文档看语雀
https://www.yuque.com/docs/share/a2617233-7d39-4bda-8b77-f398420bd5bc?# 《收款云音箱云喇叭API开发接口文档(2021-05-11)》

1)接口地址:
https://speaker.17laimai.cn
2)协议和端口号:
HTTP 80,HTTPS 443
3)请求方式:GET 或 POST
4)提交数据格式:
id=SPEAKERID&uid=USERID&price=PRICEVALUE&token=TOKEN&version=1
5)返回数据格式:JSON

!

继续阅读 »

部分API接口预览,完整文档看语雀
https://www.yuque.com/docs/share/a2617233-7d39-4bda-8b77-f398420bd5bc?# 《收款云音箱云喇叭API开发接口文档(2021-05-11)》

1)接口地址:
https://speaker.17laimai.cn
2)协议和端口号:
HTTP 80,HTTPS 443
3)请求方式:GET 或 POST
4)提交数据格式:
id=SPEAKERID&uid=USERID&price=PRICEVALUE&token=TOKEN&version=1
5)返回数据格式:JSON

!

收起阅读 »

分享一个安卓APP调微信支付的坑

微信支付 App打包

记一个uni.requestPayment 的坑,正常我们使用小程序是直接在回调里调用,但是APP支付一直调用失败
排查了很多原因一直是报这个错
{"errMsg":"requestPayment:fail service not found"}

后面参考unipay的项目,套多了一层Promise,竟然就可以了
今天搞了一天,希望能帮到大家,少走弯路
最后附上项目代码

// #ifdef MP-WEIXIN  
                NET.request(API.gotoPay, submitResult, 'POST').then(res => {  
                    uni.requestPayment({  
                        privider: 'wxpay',  
                        timeStamp: res.data.timeStamp,  
                        nonceStr: res.data.nonceStr,  
                        package: res.data.package,  
                        signType: res.data.signType,  
                        paySign: res.data.paySign,  
                        success: function(payRes) {  
                            uni.showToast({  
                                title: '支付成功'  
                            })  
                            _this.type = 0  
                            _this.page = 1  
                            _this.list = []  
                            _this.getListData()  
                        },  
                        fail: function(err) {  
                            uni.showToast({  
                                icon: 'none',  
                                title: '支付失败'  
                            })  
                        }  
                    })  
                }).catch(err => {  
                    uni.hideLoading()  
                    uni.showToast({  
                        title: '支付失败',  
                        icon: 'none'  
                    })  
                })  
                // #endif  
                // #ifdef APP-PLUS  
                new Promise((resolve, reject) => {  
                    return NET.request(API.gotoAppPay, submitResult, 'POST').then(res => {  
                        const orderInfo = {  
                            "appid": res.data.appId, // 微信开放平台 - 应用 - AppId,注意和微信小程序、公众号 AppId 可能不一致  
                            "noncestr": res.data.nonceStr, // 随机字符串  
                            "package": res.data.package, // 固定值  
                            "partnerid": res.data.partnerId, // 微信支付商户号  
                            "prepayid": res.data.prepayId, // 统一下单订单号   
                            "timestamp": res.data.timeStamp, // 时间戳(单位:秒)  
                            "sign": res.data.sign // 签名,这里用的 MD5 签名  
                        }  
                        return new Promise((resolve, reject) => {  
                            uni.requestPayment({  
                                provider: 'wxpay',  
                                orderInfo: orderInfo,  
                                success: function(payRes) {  
                                    resolve()  
                                },  
                                fail: function(err) {  
                                    reject()  
                                },  
                                complete: function() {  
                                    uni.hideLoading()  
                                }  
                            })  
                        }).then(() => {  
                            uni.showToast({  
                                title: '支付成功'  
                            })  
                        }).catch((err) => {  
                            uni.showModal({  
                                content: err.message || '支付失败',  
                            })  
                        })  
                    })  
                })  
                // #endif
继续阅读 »

记一个uni.requestPayment 的坑,正常我们使用小程序是直接在回调里调用,但是APP支付一直调用失败
排查了很多原因一直是报这个错
{"errMsg":"requestPayment:fail service not found"}

后面参考unipay的项目,套多了一层Promise,竟然就可以了
今天搞了一天,希望能帮到大家,少走弯路
最后附上项目代码

// #ifdef MP-WEIXIN  
                NET.request(API.gotoPay, submitResult, 'POST').then(res => {  
                    uni.requestPayment({  
                        privider: 'wxpay',  
                        timeStamp: res.data.timeStamp,  
                        nonceStr: res.data.nonceStr,  
                        package: res.data.package,  
                        signType: res.data.signType,  
                        paySign: res.data.paySign,  
                        success: function(payRes) {  
                            uni.showToast({  
                                title: '支付成功'  
                            })  
                            _this.type = 0  
                            _this.page = 1  
                            _this.list = []  
                            _this.getListData()  
                        },  
                        fail: function(err) {  
                            uni.showToast({  
                                icon: 'none',  
                                title: '支付失败'  
                            })  
                        }  
                    })  
                }).catch(err => {  
                    uni.hideLoading()  
                    uni.showToast({  
                        title: '支付失败',  
                        icon: 'none'  
                    })  
                })  
                // #endif  
                // #ifdef APP-PLUS  
                new Promise((resolve, reject) => {  
                    return NET.request(API.gotoAppPay, submitResult, 'POST').then(res => {  
                        const orderInfo = {  
                            "appid": res.data.appId, // 微信开放平台 - 应用 - AppId,注意和微信小程序、公众号 AppId 可能不一致  
                            "noncestr": res.data.nonceStr, // 随机字符串  
                            "package": res.data.package, // 固定值  
                            "partnerid": res.data.partnerId, // 微信支付商户号  
                            "prepayid": res.data.prepayId, // 统一下单订单号   
                            "timestamp": res.data.timeStamp, // 时间戳(单位:秒)  
                            "sign": res.data.sign // 签名,这里用的 MD5 签名  
                        }  
                        return new Promise((resolve, reject) => {  
                            uni.requestPayment({  
                                provider: 'wxpay',  
                                orderInfo: orderInfo,  
                                success: function(payRes) {  
                                    resolve()  
                                },  
                                fail: function(err) {  
                                    reject()  
                                },  
                                complete: function() {  
                                    uni.hideLoading()  
                                }  
                            })  
                        }).then(() => {  
                            uni.showToast({  
                                title: '支付成功'  
                            })  
                        }).catch((err) => {  
                            uni.showModal({  
                                content: err.message || '支付失败',  
                            })  
                        })  
                    })  
                })  
                // #endif
收起阅读 »

'PDRCore.h' file not found

常见问题

我将最新的IOS SDK下载解压之后,然后将HBuilder-Hello项目拷贝到其他目录,然后通过xcode打开运行的时候就会报:'PDRCore.h' file not found。

我将最新的IOS SDK下载解压之后,然后将HBuilder-Hello项目拷贝到其他目录,然后通过xcode打开运行的时候就会报:'PDRCore.h' file not found。

社区团购生鲜商城软件开发

微信小程序

社区团购是目前生鲜电商优的商业模式。
简单讲,社区团购的整个交易链条有三个角色,平台、团长和消费者。
平台提供的商品多为生鲜类,消费者挑选自己需要的商品在线下单。一般当日下单,隔日提供商品,
而商品后一公里的服务由在客户附近的「团长」完成。团长多为小区周围的便利店店主或者小区里的宝妈等。
团长解决了后一公里的配送和仓储,又因为偏「个人」的属性大大降低了交易的信任成本,同时优秀的团长还部分解决了平台 c 端用户获取和复购的问题。
国内社区团购的生意并非今天才开始兴起。
2018 年,国内批社区团购的创业公司开始在不同的省份跑圈地,而资本也差不多是在那个时间里开始下注。当时头部平台的标准都是月交易额过亿,这场在初创公司之间的小战役,只打了一年的时间。
后,以十荟团收购你我您而阶段性结束。
进入 2020 年,一场突如其来的疫情打乱了所有人的准备。疫情期间的特殊场景,让电商生态进一步渗透。
而相较于已经成熟的传统电商品类,很多用户是真的在 2020 年次尝试在线买菜。一次被动的,但较大规模用户习惯的刺激,使得社区团购这一目前生鲜电商优的商业模式再次得到了快速发展。

继续阅读 »

社区团购是目前生鲜电商优的商业模式。
简单讲,社区团购的整个交易链条有三个角色,平台、团长和消费者。
平台提供的商品多为生鲜类,消费者挑选自己需要的商品在线下单。一般当日下单,隔日提供商品,
而商品后一公里的服务由在客户附近的「团长」完成。团长多为小区周围的便利店店主或者小区里的宝妈等。
团长解决了后一公里的配送和仓储,又因为偏「个人」的属性大大降低了交易的信任成本,同时优秀的团长还部分解决了平台 c 端用户获取和复购的问题。
国内社区团购的生意并非今天才开始兴起。
2018 年,国内批社区团购的创业公司开始在不同的省份跑圈地,而资本也差不多是在那个时间里开始下注。当时头部平台的标准都是月交易额过亿,这场在初创公司之间的小战役,只打了一年的时间。
后,以十荟团收购你我您而阶段性结束。
进入 2020 年,一场突如其来的疫情打乱了所有人的准备。疫情期间的特殊场景,让电商生态进一步渗透。
而相较于已经成熟的传统电商品类,很多用户是真的在 2020 年次尝试在线买菜。一次被动的,但较大规模用户习惯的刺激,使得社区团购这一目前生鲜电商优的商业模式再次得到了快速发展。

收起阅读 »

uni-app 启动页方案

启动页

在pages.json 里面 配置条件编译 首页
在启动页面 判断是否登录 (这种方式不影响h5打包 而且app 不会一闪 启动页可以随意编辑)

在pages.json 里面 配置条件编译 首页
在启动页面 判断是否登录 (这种方式不影响h5打包 而且app 不会一闪 启动页可以随意编辑)

uni.request 没有返回全部 response Headers

RequestHeader

出现这个情况是在跨域请求中才会有的。
只需要在后端响应头中添加一个属性 Access-Control-Expose-Headers: [属性名] 即可获取到你要想的属性
我这里使用的 php 想要获取到自定义 token,如下

前端正常获取

值得一提,这个其实在 uniapp 文档中有提过一句,只是当时没仔细看,导致自己摸索大半天。还要不是跨域的情况下不需要这样配置。

继续阅读 »

出现这个情况是在跨域请求中才会有的。
只需要在后端响应头中添加一个属性 Access-Control-Expose-Headers: [属性名] 即可获取到你要想的属性
我这里使用的 php 想要获取到自定义 token,如下

前端正常获取

值得一提,这个其实在 uniapp 文档中有提过一句,只是当时没仔细看,导致自己摸索大半天。还要不是跨域的情况下不需要这样配置。

收起阅读 »

云函数,云数据库,云存储应该全部走云服务商的内网,不然相比传统毫无优势

uniCloud

现在都走外网所以慢。
这个不论规模大小,阿里云应该都能实现的。
默认走内网吧,实在找不到什么理由默认走外网哦。

现在都走外网所以慢。
这个不论规模大小,阿里云应该都能实现的。
默认走内网吧,实在找不到什么理由默认走外网哦。

想做一款小程序,小程序与APP相比有什么优缺点?

微信小程序

微信小程序的优势小程序的特点小程序的开发周期小程序适合什么样的用户怎样运营自己的小程序能给自己带来什么?

小程序有哪些优势?

对于用户来说,小程序与APP相比,用户不用下载,想使用的时候直接打开就可以了,不用的时候直接关掉,即用即走,不占没存,不需要安装卸载。
小程序主要的样式代码都封装在微信小程序里面,打开速度相对h5来说更加的快速,并且已经很接近原生APP。
微信小程序可以添加到手机桌面,看上去效果和APP是差不多的,用户在使用时可以直接在桌面上找到,以及直接消除,可以说非常的方便。当然这点仅限于安卓手机。
运行速度和APP差不多,可以实现APP90%的功能,要比h5强太多,开发成本和h5差不多,要比APP节省一部分开发成本。
能够调用通讯录、蓝牙等深度系统权限,应用体验比H5页面更流畅。
小程序有哪些缺点?

首当其先的就是小程序的推送能力,小程序目前只能通过分享将其分享至好友列表的好友,不能转发到朋友圈,这对于一些需要借助朋友圈人脉网络裂变式扩散的需求,就显得不太好了。
小程序不支持随意跳转外链,每个外链都需要到后台“开发设置”里添加业务域名,所以间接地影响到了小程序的开放性,这样就限制了其他支付方式以及功能的接入,这也决定了基于小程序,难以构建起信息整合、分发的一站式平台。
微信小程序只有2M大小,这就导致无法开发一些大型的小程序。所以目前你会看到很多小程序很小很简单。如果追求品质、细节的复杂应用,建议在APP上进行。
小程序需要像APP一样上架,相比于h5的即做即发要麻烦点,并且小程序每次提交版本都需要微信团队的审核,更新频繁的话确实是很麻烦。
所以,选择开发小程序或者APP要根据自己的需求进行,取其长而避其短,透过外表看本质你才能更进一步知道你做小程序或者是APP的目的,想怎样推广引流,想怎样运营,需要避开一些小程序无法实现的,或是不容易实现的,根据这些来判断自己是否要做小程序。

继续阅读 »

微信小程序的优势小程序的特点小程序的开发周期小程序适合什么样的用户怎样运营自己的小程序能给自己带来什么?

小程序有哪些优势?

对于用户来说,小程序与APP相比,用户不用下载,想使用的时候直接打开就可以了,不用的时候直接关掉,即用即走,不占没存,不需要安装卸载。
小程序主要的样式代码都封装在微信小程序里面,打开速度相对h5来说更加的快速,并且已经很接近原生APP。
微信小程序可以添加到手机桌面,看上去效果和APP是差不多的,用户在使用时可以直接在桌面上找到,以及直接消除,可以说非常的方便。当然这点仅限于安卓手机。
运行速度和APP差不多,可以实现APP90%的功能,要比h5强太多,开发成本和h5差不多,要比APP节省一部分开发成本。
能够调用通讯录、蓝牙等深度系统权限,应用体验比H5页面更流畅。
小程序有哪些缺点?

首当其先的就是小程序的推送能力,小程序目前只能通过分享将其分享至好友列表的好友,不能转发到朋友圈,这对于一些需要借助朋友圈人脉网络裂变式扩散的需求,就显得不太好了。
小程序不支持随意跳转外链,每个外链都需要到后台“开发设置”里添加业务域名,所以间接地影响到了小程序的开放性,这样就限制了其他支付方式以及功能的接入,这也决定了基于小程序,难以构建起信息整合、分发的一站式平台。
微信小程序只有2M大小,这就导致无法开发一些大型的小程序。所以目前你会看到很多小程序很小很简单。如果追求品质、细节的复杂应用,建议在APP上进行。
小程序需要像APP一样上架,相比于h5的即做即发要麻烦点,并且小程序每次提交版本都需要微信团队的审核,更新频繁的话确实是很麻烦。
所以,选择开发小程序或者APP要根据自己的需求进行,取其长而避其短,透过外表看本质你才能更进一步知道你做小程序或者是APP的目的,想怎样推广引流,想怎样运营,需要避开一些小程序无法实现的,或是不容易实现的,根据这些来判断自己是否要做小程序。

收起阅读 »

拼拼有礼商城模式定制开发

小程序

多人拼团一人中奖、三人拼团一人中奖、五人拼团一人中奖系统、十人拼团三人中奖模式、三十人拼购3人中奖、百人拼团N人中团的软件、小程序、公众号、H5手机网页版版本、APP版本的均可制作、开发流程?
现在拼团是短时间内通过价集中人气吸引购买的营销活动,通常以较少的商品数量和较低的价格作为噱头,限定开始购买的时间后,会在以秒为单位的时间内被抢购一空。这一营销功能在第三方商城平台上的应用也已非常普遍了。与拼团一样,拼团也能在活动期间聚集大量人气,为拼团拼团小程序商城引流。
丰富的营销活动,、团购、限时抢购,天天都有新玩法。
一键转发,图文分享,拉新拓客,快速起量,抓住更多流量,先人一步抢占市场。
舒适的用户体验,性能快速流畅,不卡顿,用户不流失。
快速实现企业规模扩张,脱颖而出,得到资本市场的青睐!
会员下单,团长收益立即可见,总部结算,自由。
订单到货自动通知,一键取货快捷操作。
团长销售排名,经营数据,清晰展现,随时掌握团长动态。
团长分级,差异化佣金管理,多劳多得,深度绑定,互利双赢!

继续阅读 »

多人拼团一人中奖、三人拼团一人中奖、五人拼团一人中奖系统、十人拼团三人中奖模式、三十人拼购3人中奖、百人拼团N人中团的软件、小程序、公众号、H5手机网页版版本、APP版本的均可制作、开发流程?
现在拼团是短时间内通过价集中人气吸引购买的营销活动,通常以较少的商品数量和较低的价格作为噱头,限定开始购买的时间后,会在以秒为单位的时间内被抢购一空。这一营销功能在第三方商城平台上的应用也已非常普遍了。与拼团一样,拼团也能在活动期间聚集大量人气,为拼团拼团小程序商城引流。
丰富的营销活动,、团购、限时抢购,天天都有新玩法。
一键转发,图文分享,拉新拓客,快速起量,抓住更多流量,先人一步抢占市场。
舒适的用户体验,性能快速流畅,不卡顿,用户不流失。
快速实现企业规模扩张,脱颖而出,得到资本市场的青睐!
会员下单,团长收益立即可见,总部结算,自由。
订单到货自动通知,一键取货快捷操作。
团长销售排名,经营数据,清晰展现,随时掌握团长动态。
团长分级,差异化佣金管理,多劳多得,深度绑定,互利双赢!

收起阅读 »

uniapp + 纯nuve开发的一个app, 推荐给大家




句馆是一款基于文艺生活为兴趣匹配交友的社区,本社区以经典句签、短视频、动态分享、匹配交友、兴趣圈子等为核心功能。简洁化的设计风格,是复杂社会难能可贵的心灵净土。句子虽短,总能入心,我们致力于打造纯净化交友社区,在句馆,遇见有趣的灵魂。

【句签】汇聚海量美句,收录数万作者,感悟生活,品读经典

【视频】情感、读书、影视等各大领域达人入驻,指尖精彩触手可及

【动态】用心生活,记录美好,你的每个精彩动态都会遇到一次心动

【联系句馆】
官方邮箱:kf@juguanapp.com
官方网站:www.juguanapp.com

各大应用市场均已上架 搜索 句馆
应用宝下载地址:https://a.app.qq.com/o/simple.jsp?pkgname=vip.juguan
下载地址

继续阅读 »




句馆是一款基于文艺生活为兴趣匹配交友的社区,本社区以经典句签、短视频、动态分享、匹配交友、兴趣圈子等为核心功能。简洁化的设计风格,是复杂社会难能可贵的心灵净土。句子虽短,总能入心,我们致力于打造纯净化交友社区,在句馆,遇见有趣的灵魂。

【句签】汇聚海量美句,收录数万作者,感悟生活,品读经典

【视频】情感、读书、影视等各大领域达人入驻,指尖精彩触手可及

【动态】用心生活,记录美好,你的每个精彩动态都会遇到一次心动

【联系句馆】
官方邮箱:kf@juguanapp.com
官方网站:www.juguanapp.com

各大应用市场均已上架 搜索 句馆
应用宝下载地址:https://a.app.qq.com/o/simple.jsp?pkgname=vip.juguan
下载地址

收起阅读 »

解决打不开内置浏览器的问题(提示:[WARNING:] error : "无法加载库XX\builtincef3browser.dll:找不到指定的程序。")

内置浏览器

上个月在官网中提了这个问题,虽然官方及时回复,但没解决问题。空下来网上搜了一些,又尝试了一番,有两个解决办法:
1、在网上找到的方法:只需要将 bin目录下的 libcef.dll、cef.pak、icudtl.dat、natives_blob.bin、snapshot_blob.bin 文件剪切(或复制、软链接)到 Hbuilder.exe 同目录下即可解决。
2、如果你和我一样是完美主义患者,不想动bin下的文件(因为升级时很有可能重新下载),那也简单,只需在运行 HBuilderX.exe 前将环境变量PATH中加入 bin 目录的绝对路径即可,具体操作如下:
a、新建一个批处理 run.bat,并编辑。
b、加入:
set PATH=HBuilderX的安装路径\bin;%PATH%;
start "" HBuilderX.exe的路径
比如我的:
set PATH=%~dp0HBuilderX\bin;%PATH%;
start "" HBuilderX\HBuilderX.exe
这样就可以解决了。
看来官方在运行HBuilderX.exe时并没有把bin添加进环境变量中,希望官方能解决一下这个问题(Qt中也就一句代码的事)。

继续阅读 »

上个月在官网中提了这个问题,虽然官方及时回复,但没解决问题。空下来网上搜了一些,又尝试了一番,有两个解决办法:
1、在网上找到的方法:只需要将 bin目录下的 libcef.dll、cef.pak、icudtl.dat、natives_blob.bin、snapshot_blob.bin 文件剪切(或复制、软链接)到 Hbuilder.exe 同目录下即可解决。
2、如果你和我一样是完美主义患者,不想动bin下的文件(因为升级时很有可能重新下载),那也简单,只需在运行 HBuilderX.exe 前将环境变量PATH中加入 bin 目录的绝对路径即可,具体操作如下:
a、新建一个批处理 run.bat,并编辑。
b、加入:
set PATH=HBuilderX的安装路径\bin;%PATH%;
start "" HBuilderX.exe的路径
比如我的:
set PATH=%~dp0HBuilderX\bin;%PATH%;
start "" HBuilderX\HBuilderX.exe
这样就可以解决了。
看来官方在运行HBuilderX.exe时并没有把bin添加进环境变量中,希望官方能解决一下这个问题(Qt中也就一句代码的事)。

收起阅读 »