背景
实际上,我这边是已经做好了一套医院支付类型的小程序了。但是无奈,医院自己本身有一套自己的公众号和小程序,所以在支付的时候如果是按照公众号跳转小程序,或者小程序跳转小程序。那么都会从在体验上的不足。都不能实现丝滑的跳转。
但是经过一轮百度,返现有个小程序插件的东西,可以实现丝滑跳转。但缺点是部分功能将无法使用。例如 wx.startFacialRecognitionVerify 的人脸识别。这东西就不能在插件上实现。
如何新建插件
这个就自己百度了,都是通过微信开发者工具,新建开始
小程序如何访问插件
- 先看看微信开发这工具插件开发模式的初始化目录机构
miniprogram ,这个就是小程序的目录
plugin,就是插件的开发目录
- 在小程序项目的app.json里,配置号需要调用的插件信息
- 在需要跳转的小程序页面,通过navigator的方式就可以调转到插件了
<navigator id="nav" url="plugin://siPlugin/pay?hiFeeNo=MZ201908010027">
进入插件
</navigator>
目录结构如图:
/pay 这里对应插件目录的结构
?hiFeeNo=MZ201908010027 这里即是跳转时,对应附带的参数。
常见问题点
关于getApp()
插件模式下,并没有getApp()方法。
但是可以通过一个全局的js来替代一些全局变量
例如本例中的下图:
关于插件页内路径的跳转
很多时候,我们在微信开发者工具里边,调试着好好的,转到真机调试里边,就出现“page is not found" 不能跳转了。这里定要注意。为了不浪费时间重新检查,请按照以下的方法来配置页面跳转(其实官网已经说了正确的方法,但是在做的时候,难免会有小程序主体开发的惯性思维)
plugin.json
一定要按照官方的方法配置,所有涉及到的插件页面都应该在这里配置号。
并且! 目录页面结构并不是小程序一个文件夹一个页面的形式。插件不能有二级文件夹,所有页面都统一放在pages目录下!
page**.js
url的写法 和小程序的写法不同。
注意一定要有 'plugin-private://小程序APPID/'作为前缀。
不然可能你会在开发者工具能够成功,但是在真机预览一定会失败。
wx.navigateTo({
url: 'plugin-private://小程序appid/pages/payerror?' + that.data.dopayinfo, //
success: function () {
}, //成功后的回调;
fail: function (e) {console.log('跳转支付失败页面失败!')
console.log(e)
}, //失败后的回调;
complete: function () {
wx.hideLoading();
} //结束后的回调(成功,失败都会执行)
})