HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

uniapp 支付宝接口支付时返回[-100]:[payment支付宝:62001] 用户中途取消支付操作

支付宝支付

调用支付宝时一直不成功,总是返回62001 提示用户中途取消 实际上我根本就没有取消,最好经过2个小时的排查,发现是以为调用支付宝时传递的参数有问题,或者说是后端返回的数据格式不是支付宝的格式

调用后台接口返回的数据如图:

返回的数据中 有html的转义字符 & 正是因为这个字符造成的支付失败

所以调用方法把 & 替换成正常的&字符,就能正常调用支付了


//转意符换成普通字符  
function escape2Html(str) {  
    var arrEntities = {  
        'lt': '<',  
        'gt': '>',  
        'nbsp': ' ',  
        'amp': '&',  
        'quot': '"'  
    };  
    return str.replace(/&(lt|gt|nbsp|amp|quot);/ig, function(all, t) {  
        return arrEntities[t];  
    });  
}  

转义后的结果如图:

替换后,可以正常调用支付宝支付了

调用支付宝付款方法

//app支付宝支付调用支付宝  
            appAliPay(orderInfo){  
                uni.requestPayment({  
                    provider:'alipay',  
                    orderInfo: orderInfo, //微信、支付宝订单数据 【注意微信的订单信息,键值应该全部是小写,不能采用驼峰命名】  
                    success:(res)=> {  
                        console.log('success:' + JSON.stringify(res));  
                        this.paySuccess(res);  
                    },  
                    fail: (err)=> {  
                        console.log('fail:' + JSON.stringify(err));  
                        this.appPayFail(err);  
                    }  
                });  
            },  

注意:之前使用的是H5+的支付方式,应该是官方有处理过,所以不存在这个问题,现在改用uniapp后发现有问题的

这个是在支付宝官方说明中找到的答案
网址: https://opendocs.alipay.com/open/204/105296

继续阅读 »

调用支付宝时一直不成功,总是返回62001 提示用户中途取消 实际上我根本就没有取消,最好经过2个小时的排查,发现是以为调用支付宝时传递的参数有问题,或者说是后端返回的数据格式不是支付宝的格式

调用后台接口返回的数据如图:

返回的数据中 有html的转义字符 & 正是因为这个字符造成的支付失败

所以调用方法把 & 替换成正常的&字符,就能正常调用支付了


//转意符换成普通字符  
function escape2Html(str) {  
    var arrEntities = {  
        'lt': '<',  
        'gt': '>',  
        'nbsp': ' ',  
        'amp': '&',  
        'quot': '"'  
    };  
    return str.replace(/&(lt|gt|nbsp|amp|quot);/ig, function(all, t) {  
        return arrEntities[t];  
    });  
}  

转义后的结果如图:

替换后,可以正常调用支付宝支付了

调用支付宝付款方法

//app支付宝支付调用支付宝  
            appAliPay(orderInfo){  
                uni.requestPayment({  
                    provider:'alipay',  
                    orderInfo: orderInfo, //微信、支付宝订单数据 【注意微信的订单信息,键值应该全部是小写,不能采用驼峰命名】  
                    success:(res)=> {  
                        console.log('success:' + JSON.stringify(res));  
                        this.paySuccess(res);  
                    },  
                    fail: (err)=> {  
                        console.log('fail:' + JSON.stringify(err));  
                        this.appPayFail(err);  
                    }  
                });  
            },  

注意:之前使用的是H5+的支付方式,应该是官方有处理过,所以不存在这个问题,现在改用uniapp后发现有问题的

这个是在支付宝官方说明中找到的答案
网址: https://opendocs.alipay.com/open/204/105296

收起阅读 »

【安卓APP】【图片】查看网络动态地址的图片时,长按下载图片

//uni.previewImage 查看动态地址的图片,长按保存。安卓APP端会将一个网页保存下来,而不是一个图片。
//
//解决思路:1.先下载网络图片到手机本地。2.将图片加载到原生图片对象 。3.保存图片。
//
//下列代码,根据实际情况自行修改。

uni.previewImage({
urls: arr,
current: imgindex,
longPressActions: {
itemList: ["保存图片"],
success: (data) => {
//保存图片 到手机
let imgPath = "图片地址";
uni.downloadFile({
url: imgPath, //仅为示例,并非真实的资源
success: (res) => {
if (res.statusCode === 200) {
console.log("下载成功", res);
let bitmap = null;
//原生图片对象
bitmap = new plus.nativeObj.Bitmap();
bitmap.load(
res.tempFilePath,
function () {
let name = aaaaaaaaaaa.jpg; //图片名字
bitmap.save(
name,
{},
function (i) {
uni.saveImageToPhotosAlbum({
filePath: i.target,
success: function () {
bitmap.clear(); //销毁Bitmap图片
uni.showToast({
title: "保存图片成功",
mask: false,
duration: 1500,
});
},
});
},
function (e) {
console.log("保存图片失败:" + JSON.stringify(e));
}
);
},
function (e) {
console.log("bmp1.png load failed! " + JSON.stringify(e));
}
);
}
},
});
},
},
});

继续阅读 »

//uni.previewImage 查看动态地址的图片,长按保存。安卓APP端会将一个网页保存下来,而不是一个图片。
//
//解决思路:1.先下载网络图片到手机本地。2.将图片加载到原生图片对象 。3.保存图片。
//
//下列代码,根据实际情况自行修改。

uni.previewImage({
urls: arr,
current: imgindex,
longPressActions: {
itemList: ["保存图片"],
success: (data) => {
//保存图片 到手机
let imgPath = "图片地址";
uni.downloadFile({
url: imgPath, //仅为示例,并非真实的资源
success: (res) => {
if (res.statusCode === 200) {
console.log("下载成功", res);
let bitmap = null;
//原生图片对象
bitmap = new plus.nativeObj.Bitmap();
bitmap.load(
res.tempFilePath,
function () {
let name = aaaaaaaaaaa.jpg; //图片名字
bitmap.save(
name,
{},
function (i) {
uni.saveImageToPhotosAlbum({
filePath: i.target,
success: function () {
bitmap.clear(); //销毁Bitmap图片
uni.showToast({
title: "保存图片成功",
mask: false,
duration: 1500,
});
},
});
},
function (e) {
console.log("保存图片失败:" + JSON.stringify(e));
}
);
},
function (e) {
console.log("bmp1.png load failed! " + JSON.stringify(e));
}
);
}
},
});
},
},
});

收起阅读 »

HBuilderX: 关于iOS安心打包,MacOSX 10.14及以上系统,证书安装教程

云打包

先打开 钥匙串访问工具,然后点击左侧的“系统”栏目,最后把三个证书一一拖到 右侧,效果如下:

先打开 钥匙串访问工具,然后点击左侧的“系统”栏目,最后把三个证书一一拖到 右侧,效果如下:

字节跳动小程序 video 的静音属性,原生支持,uni-app不支持

video
<video :src="src" :muted="muted"></video>

无法动态控制静音

<video :src="src" :muted="muted"></video>

无法动态控制静音

zoom视频会议sdk原生双端插件 需要的联系qq:37894663

插件开发 插件 zoom

zoom视频会议sdk原生双端插件 需要的联系qq:37894663

zoom视频会议sdk原生双端插件 需要的联系qq:37894663

wui组件库(uni-wui)

自定义组件 ui组件 uniapp插件

前言

uni-wui是使用uni-app开发的微信小程序,H5端的UI组件库,组件高可用,可扩展,可商用

特性

  • 组件高可用,方便扩展,开箱即用
  • 注重业务组件的开发,让你的工作如虎添翼
  • 按需引入,减少打包体积

源码地址

uni-wui组件库地址

小程序演示地址

如果喜欢uni-wui可给个Star,感谢!

插件地址

点我跳转

继续阅读 »

前言

uni-wui是使用uni-app开发的微信小程序,H5端的UI组件库,组件高可用,可扩展,可商用

特性

  • 组件高可用,方便扩展,开箱即用
  • 注重业务组件的开发,让你的工作如虎添翼
  • 按需引入,减少打包体积

源码地址

uni-wui组件库地址

小程序演示地址

如果喜欢uni-wui可给个Star,感谢!

插件地址

点我跳转

收起阅读 »

uniapp离线打包nvue引入直播组件live-pusher报错的解决办法

uniapp LivePusher

报错:TypeError: t[e] is not a function.
先说下我的软件版本,
HBuilderX 3.1.12.20210428
Android Studio 4.1.3


先看这里:https://nativesupport.dcloud.net.cn/AppDocs/usemodule/androidModuleConfig/others?id=livepusher%ef%bc%88%e7%9b%b4%e6%92%ad%e6%8e%a8%e6%b5%81%ef%bc%89

我是看完这个官方文档就搞定了的。。。

其他那些改 src\main\AndroidManifest.xml 、src\main\assets\data\dcloud_properties.xml等等配置文件的,网上都有教程,我就不复制粘贴了

继续阅读 »

报错:TypeError: t[e] is not a function.
先说下我的软件版本,
HBuilderX 3.1.12.20210428
Android Studio 4.1.3


先看这里:https://nativesupport.dcloud.net.cn/AppDocs/usemodule/androidModuleConfig/others?id=livepusher%ef%bc%88%e7%9b%b4%e6%92%ad%e6%8e%a8%e6%b5%81%ef%bc%89

我是看完这个官方文档就搞定了的。。。

其他那些改 src\main\AndroidManifest.xml 、src\main\assets\data\dcloud_properties.xml等等配置文件的,网上都有教程,我就不复制粘贴了

收起阅读 »

免费在线苹果ios签名工具,方便大家使用。

移动APP iOS

支持功能:签名,去锁,分发,修改包名,BID等信息
支持windows/mac平台使用
https://sign.ipasign.cc/

支持功能:签名,去锁,分发,修改包名,BID等信息
支持windows/mac平台使用
https://sign.ipasign.cc/

太原一麻将馆老板“云赌场”赚佣金拉下线非法获利被逮捕

法律科普

麻将馆老板段某利用自身“资源”,在麻友中推广下载赌博 APP, 吸引玩家充币投注,还发展了20人左右的代理玩家,先后从“云赌场”中非法获利7万余元。近日,段某因涉嫌开设赌场罪被小店区检察院批准逮捕。

中年男子段某家住小店区,平日里经营一家麻将馆。2019年8月,网友向他推荐了一款名为“欢喜娱乐”的赌博网站 APP。网友称, 知道段某开着麻将馆,接触赌博的人多,想让其帮忙推广网站,顺便赚点钱。这款 APP 里有炸金花、斗牛等赌博游戏,给段某开通一级代理权限后,网友和段某可以从玩家的交易流水中共抽成70%,其中45%归段某。

去年2月,因客人无法到麻将馆娱乐,段某便在微信朋友圈“大力推广”这款赌博 APP。不少麻友通过他提供的二 维码下载了该 APP, 充值不同额度的金币玩赌博游戏,大约20人还成为他的代理玩家,拉人进来充金币也有现金提成。段某在平台内自建了“随缘俱乐部”房间,最多时有100多人同时在玩。平台里的1元等于1金币,有的玩家充值了近5000元,3天后就快输完了,而段某则从赌博玩家的交易流水中非法获利7万余元。去年底,段某被捉拿归案。

记者 王丹 通讯员 张艳

【来源:太原晚报】,声明:转载此文是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系,我们将及时更正、删除,谢谢。 邮箱地址:pufa@dcloud.io 。
原文链接

继续阅读 »

麻将馆老板段某利用自身“资源”,在麻友中推广下载赌博 APP, 吸引玩家充币投注,还发展了20人左右的代理玩家,先后从“云赌场”中非法获利7万余元。近日,段某因涉嫌开设赌场罪被小店区检察院批准逮捕。

中年男子段某家住小店区,平日里经营一家麻将馆。2019年8月,网友向他推荐了一款名为“欢喜娱乐”的赌博网站 APP。网友称, 知道段某开着麻将馆,接触赌博的人多,想让其帮忙推广网站,顺便赚点钱。这款 APP 里有炸金花、斗牛等赌博游戏,给段某开通一级代理权限后,网友和段某可以从玩家的交易流水中共抽成70%,其中45%归段某。

去年2月,因客人无法到麻将馆娱乐,段某便在微信朋友圈“大力推广”这款赌博 APP。不少麻友通过他提供的二 维码下载了该 APP, 充值不同额度的金币玩赌博游戏,大约20人还成为他的代理玩家,拉人进来充金币也有现金提成。段某在平台内自建了“随缘俱乐部”房间,最多时有100多人同时在玩。平台里的1元等于1金币,有的玩家充值了近5000元,3天后就快输完了,而段某则从赌博玩家的交易流水中非法获利7万余元。去年底,段某被捉拿归案。

记者 王丹 通讯员 张艳

【来源:太原晚报】,声明:转载此文是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系,我们将及时更正、删除,谢谢。 邮箱地址:pufa@dcloud.io 。
原文链接

收起阅读 »

使用uni-app实现小程序动态底部TabBar

动态加载组件

由于微信小程序原生并不支持动态的底部TabBar,但是我们有些场景需要这个功能。那么可以采用变通的方式实现。

1、首先需要知道uniapp或者说微信小程序有什么样的限制

性能问题,在uni-app的vue版本上,自定义tabbar让您不得不在一个webview内模拟出多个页面,这存在严重的性能问题
要使用原生tabbar,在pages.json文件里面必须有tabBar节点,节点里面的pagePath必须在pages节点里面存在,并且路径上不能有参数。

2、针对这些限制做什么样的变通
这里我使用了uView里面的u-tabbar组件。
pages节点里面增加了5个页面

"pages": [{  
            "path": "pages/feitui/tab1/tab1",  
            "style": {  
                "enablePullDownRefresh": true  
            }  
        },{  
            "path": "pages/feitui/tab2/tab2",  
            "style": {  
                "enablePullDownRefresh": true  
            }  
        },  
        {  
            "path": "pages/feitui/tab3/tab3",  
            "style": {  
                "enablePullDownRefresh": true  
            }  
        },  
        {  
            "path": "pages/feitui/tab4/tab4",  
            "style": {  
                "enablePullDownRefresh": true  
            }  
        },  
        {  
            "path": "pages/feitui/tab5/tab5",  
            "style": {  
                "enablePullDownRefresh": true  
            }  
        }]

tabBar节点里面把这5个路径都加进去,如下:

"tabBar": {  
        "color": "#7A7E83",  
        "selectedColor": "#3cc51f",  
        "borderStyle": "black",  
        "backgroundColor": "#ffffff",  
        "list": [{  
            "pagePath": "pages/feitui/tab1/tab1",  
            "text": "tab1"  
        }, {  
            "pagePath": "pages/feitui/tab2/tab2",  
            "text": "tab2"  
        }, {  
            "pagePath": "pages/feitui/tab3/tab3",  
            "text": "tab3"  
        }, {  
            "pagePath": "pages/feitui/tab4/tab4",  
            "text": "tab4"  
        }, {  
            "pagePath": "pages/feitui/tab5/tab5",  
            "text": "tab5"  
        }]  
    }

tab1--tab5这5个页面里都引用content.vue组件,在Content组件里面引用<u-tabbar>组件,并动态的从后端获取tabBar的list数据,通过参数控制是否显示tabbar,显示哪些tabItem 通过tab1--tab5插入不同的tab标识,获取每个tab需要呈现的页面内容。具体代码可参考 飞腿编辑器前端项目模板

3、最终实现效果
通过后台的在线编辑TabBar,前端小程序动态渲染。
后台编辑

前端小程序效果
小程序

继续阅读 »

由于微信小程序原生并不支持动态的底部TabBar,但是我们有些场景需要这个功能。那么可以采用变通的方式实现。

1、首先需要知道uniapp或者说微信小程序有什么样的限制

性能问题,在uni-app的vue版本上,自定义tabbar让您不得不在一个webview内模拟出多个页面,这存在严重的性能问题
要使用原生tabbar,在pages.json文件里面必须有tabBar节点,节点里面的pagePath必须在pages节点里面存在,并且路径上不能有参数。

2、针对这些限制做什么样的变通
这里我使用了uView里面的u-tabbar组件。
pages节点里面增加了5个页面

"pages": [{  
            "path": "pages/feitui/tab1/tab1",  
            "style": {  
                "enablePullDownRefresh": true  
            }  
        },{  
            "path": "pages/feitui/tab2/tab2",  
            "style": {  
                "enablePullDownRefresh": true  
            }  
        },  
        {  
            "path": "pages/feitui/tab3/tab3",  
            "style": {  
                "enablePullDownRefresh": true  
            }  
        },  
        {  
            "path": "pages/feitui/tab4/tab4",  
            "style": {  
                "enablePullDownRefresh": true  
            }  
        },  
        {  
            "path": "pages/feitui/tab5/tab5",  
            "style": {  
                "enablePullDownRefresh": true  
            }  
        }]

tabBar节点里面把这5个路径都加进去,如下:

"tabBar": {  
        "color": "#7A7E83",  
        "selectedColor": "#3cc51f",  
        "borderStyle": "black",  
        "backgroundColor": "#ffffff",  
        "list": [{  
            "pagePath": "pages/feitui/tab1/tab1",  
            "text": "tab1"  
        }, {  
            "pagePath": "pages/feitui/tab2/tab2",  
            "text": "tab2"  
        }, {  
            "pagePath": "pages/feitui/tab3/tab3",  
            "text": "tab3"  
        }, {  
            "pagePath": "pages/feitui/tab4/tab4",  
            "text": "tab4"  
        }, {  
            "pagePath": "pages/feitui/tab5/tab5",  
            "text": "tab5"  
        }]  
    }

tab1--tab5这5个页面里都引用content.vue组件,在Content组件里面引用<u-tabbar>组件,并动态的从后端获取tabBar的list数据,通过参数控制是否显示tabbar,显示哪些tabItem 通过tab1--tab5插入不同的tab标识,获取每个tab需要呈现的页面内容。具体代码可参考 飞腿编辑器前端项目模板

3、最终实现效果
通过后台的在线编辑TabBar,前端小程序动态渲染。
后台编辑

前端小程序效果
小程序

收起阅读 »