HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

小程序支付流程JSAPI

微信支付

整个支付流程, 前端发起请求后端处理 用了整整两天,
各种坑,各种看文档难以理解,
头大
分享下步骤流程心得吧,
第一次接触可能会和我一样有踩坑的,
第一步
uniapp发起支付请求,其实这里第一步只是传一个金额和openid或者用户ID给后端
后端收到请求后 带着金额以及用户的openid 向腾讯【统一下单接口】发起第一次请求,
请求成功后腾讯会返给你一个临时订单号也就是prepay_id
当拿到prepay_id以后第一步就已经完成了,
第二步
给uni.requestPayment中的数据进行二次签名验证 !!! 这个梗卡了我两天,无力吐槽,
进行二次签名和第一次唯一不同的就是第二次多了个prepay_id,
此时前端的支付程序已经掉起,如果第二次签名验证没有问题的话就会弹出来支付的界面了.
下面上图
1.带着金额和用户信息发起请求(前提要先判断登录没登录,要获取openid)

2.后端处理(PHP)发起统一下单请求获取prepay_id

3.拿到统一下单接口后进行二次签名验证(我选择的是在后端处理后返给前端)

4.前端拿到二次签名后的数据调起支付界面

5.输入支付密码支付完成!

具体就这么多吧
流程,前端带金额和用户信息发起请求>后端确认>拿金额和openid向腾讯发起请求>得到临时单号prepay_id>进行二次签名验证>返给前端>前端调起支付>输入密码支付>完成
代码部分
我的QQ5249812有问题可以互相探讨
腾讯微信支付接口签名校验工具:
https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=20_1

继续阅读 »

整个支付流程, 前端发起请求后端处理 用了整整两天,
各种坑,各种看文档难以理解,
头大
分享下步骤流程心得吧,
第一次接触可能会和我一样有踩坑的,
第一步
uniapp发起支付请求,其实这里第一步只是传一个金额和openid或者用户ID给后端
后端收到请求后 带着金额以及用户的openid 向腾讯【统一下单接口】发起第一次请求,
请求成功后腾讯会返给你一个临时订单号也就是prepay_id
当拿到prepay_id以后第一步就已经完成了,
第二步
给uni.requestPayment中的数据进行二次签名验证 !!! 这个梗卡了我两天,无力吐槽,
进行二次签名和第一次唯一不同的就是第二次多了个prepay_id,
此时前端的支付程序已经掉起,如果第二次签名验证没有问题的话就会弹出来支付的界面了.
下面上图
1.带着金额和用户信息发起请求(前提要先判断登录没登录,要获取openid)

2.后端处理(PHP)发起统一下单请求获取prepay_id

3.拿到统一下单接口后进行二次签名验证(我选择的是在后端处理后返给前端)

4.前端拿到二次签名后的数据调起支付界面

5.输入支付密码支付完成!

具体就这么多吧
流程,前端带金额和用户信息发起请求>后端确认>拿金额和openid向腾讯发起请求>得到临时单号prepay_id>进行二次签名验证>返给前端>前端调起支付>输入密码支付>完成
代码部分
我的QQ5249812有问题可以互相探讨
腾讯微信支付接口签名校验工具:
https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=20_1

收起阅读 »

打包h5 后 在微信内打开 webview 无法跳转问题

bug反馈

官方实例也有这个问题 希望及时修复

https://uniapp.dcloud.io/h5/pages/component/web-view/web-view

官方实例也有这个问题 希望及时修复

https://uniapp.dcloud.io/h5/pages/component/web-view/web-view

UNIAPP引入aspnetcore.signalR 在Android编译报错!

UNIAPP引入aspnetcore.signalR 在Android编译报错!

在H5端正常,但是在Android手机报错!


17:49:56.649  DONE  Build complete. Watching for changes...  
17:49:56.651 项目 'rctea.uni-app' 编译成功.  
17:49:56.680 正在同步手机端程序文件...  
17:50:03.095 同步手机端程序文件完成  
17:50:03.116 正在重启...  
17:50:06.532 50:05.749 32235 32263 E console : [ERROR] reportJSException >>>> exception function:createInstance, exception:Exception: TypeError: undefined is not an object (evaluating 'modules[moduleId].call')  
17:50:06.553 50:05.749 32235 32263 E console : __webpack_require__@(global function):34105:34  
17:50:06.576 50:05.749 32235 32263 E console : (global function):36976:46  
17:50:06.598 50:05.749 32235 32263 E console : __webpack_require__@(global function):34105:39  
17:50:06.619 50:05.749 32235 32263 E console : (global function):36833:97  
17:50:06.640 50:05.749 32235 32263 E console : __webpack_require__@(global function):34105:39  
17:50:06.661 50:05.749 32235 32263 E console : (global function):35492:103  
17:50:06.682 50:05.749 32235 32263 E console : __webpack_require__@(global function):34105:39  
17:50:06.703 50:05.749 32235 32263 E console : (global function):34180:88  
17:50:06.724 50:05.749 32235 32263 E console : __webpack_require__@(global function):34105:39  
17:50:06.745 50:05.749 32235 32263 E console : webpackUniversalModuleDefinition@(global function):34083:27  
17:50:06.766 50:05.749 32235 32263 E console : (global function):34085:3  
17:50:06.787 50:05.749 32235 32263 E console : F:\Dev\RCTEA-APP-v1.0\rctea.uni-app\common\im\signalr.js@(global function):38194:34  
17:50:06.808 50:05.749 32235 32263 E console : __webpack_require__@(global function):14538:35  
17:50:06.909 50:05.749 32235 32263 E console : (global function):14295:58  
17:50:06.909 50:05.749 32235 32263 E console : ./node_modules/babel-loader/lib/index.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js?!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/vue-loader/lib/index.js?!F:\Dev\RCTEA-APP-v1.0\rctea.uni-app\App.vue?vue
继续阅读 »

UNIAPP引入aspnetcore.signalR 在Android编译报错!

在H5端正常,但是在Android手机报错!


17:49:56.649  DONE  Build complete. Watching for changes...  
17:49:56.651 项目 'rctea.uni-app' 编译成功.  
17:49:56.680 正在同步手机端程序文件...  
17:50:03.095 同步手机端程序文件完成  
17:50:03.116 正在重启...  
17:50:06.532 50:05.749 32235 32263 E console : [ERROR] reportJSException >>>> exception function:createInstance, exception:Exception: TypeError: undefined is not an object (evaluating 'modules[moduleId].call')  
17:50:06.553 50:05.749 32235 32263 E console : __webpack_require__@(global function):34105:34  
17:50:06.576 50:05.749 32235 32263 E console : (global function):36976:46  
17:50:06.598 50:05.749 32235 32263 E console : __webpack_require__@(global function):34105:39  
17:50:06.619 50:05.749 32235 32263 E console : (global function):36833:97  
17:50:06.640 50:05.749 32235 32263 E console : __webpack_require__@(global function):34105:39  
17:50:06.661 50:05.749 32235 32263 E console : (global function):35492:103  
17:50:06.682 50:05.749 32235 32263 E console : __webpack_require__@(global function):34105:39  
17:50:06.703 50:05.749 32235 32263 E console : (global function):34180:88  
17:50:06.724 50:05.749 32235 32263 E console : __webpack_require__@(global function):34105:39  
17:50:06.745 50:05.749 32235 32263 E console : webpackUniversalModuleDefinition@(global function):34083:27  
17:50:06.766 50:05.749 32235 32263 E console : (global function):34085:3  
17:50:06.787 50:05.749 32235 32263 E console : F:\Dev\RCTEA-APP-v1.0\rctea.uni-app\common\im\signalr.js@(global function):38194:34  
17:50:06.808 50:05.749 32235 32263 E console : __webpack_require__@(global function):14538:35  
17:50:06.909 50:05.749 32235 32263 E console : (global function):14295:58  
17:50:06.909 50:05.749 32235 32263 E console : ./node_modules/babel-loader/lib/index.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js?!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/vue-loader/lib/index.js?!F:\Dev\RCTEA-APP-v1.0\rctea.uni-app\App.vue?vue
收起阅读 »

【bug】uni.login 接口需要点击两次才有回调

详细问题描述

只有文章能发,把bug 放这里吧
[内容]

android 使用微信开放平台登陆,点击按钮调用 uni.login() ,第一次点击未执行任何回调,点第二次才有sucess回调;
经过调试发现新用户第一次调用 uni.login() 会返回 fail 返回 {"code":-2,"errMsg":"login:fail:用户取消"},以后就能正常使用了
。我看官方的 hello uni-app demo也有这个问题;

这么明显的问题难道大家没遇到?

请问该如何解决?

[步骤]
点击登陆按钮,执行微信登陆授权

[结果]

点第一次出来微信授权界面同意后没执行任何回调(sucess,complete),需要再点一次登陆按钮才有回调过来。

第一次调用 uni.login() 会返回 fail 返回 {"code":-2,"errMsg":"login:fail:用户取消"}
[期望]

点一次就能正常回调

IDE运行环境说明

[HBuilder 或 HBuilderX。如果你用其他工具开发uni-app,也需要在此说明]

[IDE版本号]
HBuilderX 2.0.5.20190710-alpha

[windows版本号]
win10

[mac版本号]

uni-app运行环境说明

vivo android 手机

[可重现代码片段]


uni.login({  
                  provider: 'weixin',  
                  success: function (loginRes) {  
                      uni.showToast({  
                        title: JSON.stringify(loginRes)  
                      });  
                    console.log(loginRes.authResult);  
                  }  
                });

联系方式

继续阅读 »

详细问题描述

只有文章能发,把bug 放这里吧
[内容]

android 使用微信开放平台登陆,点击按钮调用 uni.login() ,第一次点击未执行任何回调,点第二次才有sucess回调;
经过调试发现新用户第一次调用 uni.login() 会返回 fail 返回 {"code":-2,"errMsg":"login:fail:用户取消"},以后就能正常使用了
。我看官方的 hello uni-app demo也有这个问题;

这么明显的问题难道大家没遇到?

请问该如何解决?

[步骤]
点击登陆按钮,执行微信登陆授权

[结果]

点第一次出来微信授权界面同意后没执行任何回调(sucess,complete),需要再点一次登陆按钮才有回调过来。

第一次调用 uni.login() 会返回 fail 返回 {"code":-2,"errMsg":"login:fail:用户取消"}
[期望]

点一次就能正常回调

IDE运行环境说明

[HBuilder 或 HBuilderX。如果你用其他工具开发uni-app,也需要在此说明]

[IDE版本号]
HBuilderX 2.0.5.20190710-alpha

[windows版本号]
win10

[mac版本号]

uni-app运行环境说明

vivo android 手机

[可重现代码片段]


uni.login({  
                  provider: 'weixin',  
                  success: function (loginRes) {  
                      uni.showToast({  
                        title: JSON.stringify(loginRes)  
                      });  
                    console.log(loginRes.authResult);  
                  }  
                });

联系方式

收起阅读 »

videoplayer 打包后安卓正常,ios调起失败

Vue HBuilder X iOS打包 VideoPlayer

我的是vue单页应用,要播放rtmp流视频,调用了h5 plus 的videoplayer控件

安卓云打包正常,ios打包后plus。navtiveUI.toast能调用,就视频控件不行

现在不知道是打包问题还是代码问题

更新:

let isVideoPlayer = plus.video.getVideoPlayerById('video');  
if (isVideoPlayer) {  
  this.video.show()  
  return  
}

原来是我在创建视频控件之前检查了当前是否已创建video这个api,

然后安卓上返回null正常,ios返回的是对象,所以就不会在创建视频控件了

注意创建videoplayer的时候,不要设置静音 muted:true,不然在手机上会表现为系统声音为静音了

还有问题就是rtmp流视频,在安卓上不卡,ios上会卡顿,暂时还没找到解决办法

继续阅读 »

我的是vue单页应用,要播放rtmp流视频,调用了h5 plus 的videoplayer控件

安卓云打包正常,ios打包后plus。navtiveUI.toast能调用,就视频控件不行

现在不知道是打包问题还是代码问题

更新:

let isVideoPlayer = plus.video.getVideoPlayerById('video');  
if (isVideoPlayer) {  
  this.video.show()  
  return  
}

原来是我在创建视频控件之前检查了当前是否已创建video这个api,

然后安卓上返回null正常,ios返回的是对象,所以就不会在创建视频控件了

注意创建videoplayer的时候,不要设置静音 muted:true,不然在手机上会表现为系统声音为静音了

还有问题就是rtmp流视频,在安卓上不卡,ios上会卡顿,暂时还没找到解决办法

收起阅读 »

关于离线推送的问题

第三方离线推送基本是不可能的没建议使用厂商的推送sdk

目前第三方推送都无法保证关闭应用过后还可以收到推送消息,这个是手机定制ROM对信鸽service的限制问题,信鸽的一切活动都需要建立在信鸽的service能够正常联网运行,service被终止后,由系统、安全软件和用户操作限定是否能够再次启动
QQ,微信是系统级别的应用白名单,相关的service不会因为关闭应用而退出,所以用户感知推出应用过后还可以收到消息,其实相关的service 还是能够在后台存活的
Android端在应用退出,信鸽service和信鸽的服务器断开连接后,这个时候给这个设备下发的消息,会变成离线消息,离线消息最多保存72小时,每个设备最多保存两条,如果有多条离线消息。在关闭应用期间推送的消息,如开启应用无法收到,请检查是否调用了反注册接口:XGPushManager.unregisterPush(this);

继续阅读 »

第三方离线推送基本是不可能的没建议使用厂商的推送sdk

目前第三方推送都无法保证关闭应用过后还可以收到推送消息,这个是手机定制ROM对信鸽service的限制问题,信鸽的一切活动都需要建立在信鸽的service能够正常联网运行,service被终止后,由系统、安全软件和用户操作限定是否能够再次启动
QQ,微信是系统级别的应用白名单,相关的service不会因为关闭应用而退出,所以用户感知推出应用过后还可以收到消息,其实相关的service 还是能够在后台存活的
Android端在应用退出,信鸽service和信鸽的服务器断开连接后,这个时候给这个设备下发的消息,会变成离线消息,离线消息最多保存72小时,每个设备最多保存两条,如果有多条离线消息。在关闭应用期间推送的消息,如开启应用无法收到,请检查是否调用了反注册接口:XGPushManager.unregisterPush(this);

收起阅读 »

分享一个查看APK信息的工具

uniapp

比如申请微信开放平台 安卓端需要输入签名。
比如申请地图 IOS 需要包名 和签名这些。可以利用下面的软件去查看 蛮方便的,是京东的一个。

下载地址

继续阅读 »

比如申请微信开放平台 安卓端需要输入签名。
比如申请地图 IOS 需要包名 和签名这些。可以利用下面的软件去查看 蛮方便的,是京东的一个。

下载地址

收起阅读 »

推荐使用rpx替代upx的公告

rpx upx

upx在2018年就推出了,其初衷是为了让微信的rpx机制可以跨全端使用。

在普通css写法里,upx会被编译器编译。但动态绑定时,upx无法被准确编译,此时官方提出了使用uni.upx2px()方法,用来动态计算。

后来其他几家小程序平台陆续都兼容了rpx机制,rpx不再是微信的专用单位,而成为了这个行业的通用单位。

最近官方收到很多开发小程序的用户投诉upx不能像rpx那样直接支持动态绑定,还得再使用uni.upx2px方法。

官方反思了策略,既然微信不可能支持upx的动态绑定,不如我们在App端和H5端来支持rpx的动态绑定。这样rpx就可以全端通用,且支持动态绑定,不再需要uni.upx2px方法。

从HBuilderX 2.0.5起,已经支持rpx的正常着色和px2rpx的ide代码提示转换功能。

官方也修改了uni-app文档中关于尺寸单位的介绍,不再推荐upx的使用,而推荐rpx。

这个策略调整,不影响开发者的已有代码正常运行。

开发者仍然可以使用upx和uni.upx2px,也可以改用rpx,都可以。没有必要批量调整老代码。但新开发还是应该使用rpx。

顺便提醒另一个事情,很多开发者对响应式单位依赖太严重了,比如组件高度或字体大小也使用upx/rpx。

注意只有当你需要某元素的单位要根据屏幕宽度(小范围)大小变化时,才需要rpx这类动态宽度单位。

一般情况下高度和字体大小是不应该根据屏幕宽度(等比)变化的。

继续阅读 »

upx在2018年就推出了,其初衷是为了让微信的rpx机制可以跨全端使用。

在普通css写法里,upx会被编译器编译。但动态绑定时,upx无法被准确编译,此时官方提出了使用uni.upx2px()方法,用来动态计算。

后来其他几家小程序平台陆续都兼容了rpx机制,rpx不再是微信的专用单位,而成为了这个行业的通用单位。

最近官方收到很多开发小程序的用户投诉upx不能像rpx那样直接支持动态绑定,还得再使用uni.upx2px方法。

官方反思了策略,既然微信不可能支持upx的动态绑定,不如我们在App端和H5端来支持rpx的动态绑定。这样rpx就可以全端通用,且支持动态绑定,不再需要uni.upx2px方法。

从HBuilderX 2.0.5起,已经支持rpx的正常着色和px2rpx的ide代码提示转换功能。

官方也修改了uni-app文档中关于尺寸单位的介绍,不再推荐upx的使用,而推荐rpx。

这个策略调整,不影响开发者的已有代码正常运行。

开发者仍然可以使用upx和uni.upx2px,也可以改用rpx,都可以。没有必要批量调整老代码。但新开发还是应该使用rpx。

顺便提醒另一个事情,很多开发者对响应式单位依赖太严重了,比如组件高度或字体大小也使用upx/rpx。

注意只有当你需要某元素的单位要根据屏幕宽度(小范围)大小变化时,才需要rpx这类动态宽度单位。

一般情况下高度和字体大小是不应该根据屏幕宽度(等比)变化的。

收起阅读 »

上架电视应用商店(小米为例)

问题:

解决方案:

distribute 》 android 》permissions 加上这段代码哈
"<uses-feature android:name=\"android.hardware.type.television\" android:required=\"true\"/>"

继续阅读 »

问题:

解决方案:

distribute 》 android 》permissions 加上这段代码哈
"<uses-feature android:name=\"android.hardware.type.television\" android:required=\"true\"/>"

收起阅读 »

同样的代码。平板扫描闪退,但是app没有闪退

闪退

扫描的dom元素 ,一定要添加,宽和高

扫描的dom元素 ,一定要添加,宽和高

web-view组件如何自定义标题 官方默认的是加在页面的title

web-view组件可以自定义标题吗,我不想用加载页面的title?
加载的页面为第三方页面,不方便改人家的title。我这边能自定义title吗?

web-view组件可以自定义标题吗,我不想用加载页面的title?
加载的页面为第三方页面,不方便改人家的title。我这边能自定义title吗?