微信小程序插件开发「建议收藏」 -金沙1005

微信小程序插件开发「建议收藏」微信小程序插件开发,以支付插件为例

小程序插件

插件是对一组 js 接口、自定义组件 或页面的封装,用于嵌入到小程序中使用。插件不能独立运行,必须嵌入在其他小程序中才能被用户使用;而第三方小程序在使用插件时,也无法看到插件的代码。因此,插件适合用来封装自己的功能或服务,提供给第三方小程序进行展示和使用。

本文以支付插件为例,教你从0开发一个属于自己的插件。

开发前准备

1. 申请开通插件功能

开通入口: 小程序管理后台 -> 功能 -> 小程序插件
在这里插入图片描述
填写插件基本信息
在这里插入图片描述

2. 设置插件基本信息

基本设置页面
在这里插入图片描述
另外需要注意,我们开发的是支付插件,所以在基本设置的地方,我们要申请开通支付能力。
在这里插入图片描述

申请开通支付能力审核略严格,做好被拒的准备,修改措辞继续申请,总会过的。

开发插件

1. 创建插件项目

用维信开发者工具创建一个新项目,开发模式选择插件。宿主appid就是你的小程序的appid,可在小程序管理后台 -> 设置 -> 基本设置 -> 账号信息中查看,也可以在你的小程序项目中的project.config.json中查看。插件appid与宿主appid一致(这里官方文档写的很迷惑,其实填一样的就行)
在这里插入图片描述
插件项目创建好后,项目中包含三个目录:

  • plugin 目录:插件代码目录。
  • miniprogram 目录:放置一个小程序,用于调试插件。(仅可用于调试)
  • doc 目录:用于放置插件开发文档。

在这里插入图片描述

2. 配置插件配置文件

向使用者小程序开放的所有自定义组件、页面和 js 接口都必须在插件配置文件 plugin.json 列出,格式如下:

{ 
   
  "publiccomponents": { 
   
    "hello-component": "components/hello-component"
  },
  "pages": { 
   
    "hello-page": "pages/hello-page"
  },
  "main": "index.js"
}
微信小程序插件开发「建议收藏」

为防止网络爬虫,请关注公众号回复”口令”

激活idea 激活clion
datagrip dataspell
dotcover dotmemory
dottrace goland
phpstorm pycharm
resharper reshac
rider rubymine
webstorm 全家桶

这个配置文件将向使用者小程序开放一个自定义组件 hello-component,一个页面 hello-page 和 index.js 下导出的所有 js 接口。

3. 插件开发

在插件开发中,只有 可以直接调用;另外还有部分能力(如 获取用户信息 和 发起支付 等)可以通过 插件功能页 的方式使用。我们的支付功能就要配合插件功能页。

3.1 插件项目代码
  1. 在plugin目录下,修改plugin.json中声明:
{ 
   
    "publiccomponents": { 
   
        "zl-pay": "components/pay/index"
    },
    "main": "index.js"
}
  1. components文件夹下新增pay文件夹,在该文件夹下创建index.js, index.json, index.wxml, index.wxss四个文件。
// index.wxml
<view class="g-box">
  <view class="g-header">
      <view class="g-payable">
        <text class="g-paysign">text>{
  
  {intpart}}<text class="g-small-span">.{
  
  {dotpart}}text>
        <view class="ordersn">订单商品: xxxxview>
        <view class="ordersn">订单编号: {
  
  {ordersn}}view>
      view>
  view>
  <view class="g-confirm" bindtap='handlepay'>确认支付view>
view>
// plugin/components/pay/index.js
component({ 

/** * 组件的属性列表 */
properties: { 

payamount: { 

type: number,
value: 0,
observer(newval) { 

const intpart = newval.tofixed(2).tostring().split(".")[0]
const dotpart = newval.tofixed(2).tostring().split(".")[1]
this.setdata({ 
intpart, dotpart})
}
},
orderid: { 

type: number,
value: null
},
ordersn: { 

type: string,
value: ''
},
tokentype: { 

type: string,
value: null
},
accesstoken: { 

type: string,
value: null
}
},
/** * 组件的初始数据 */
data: { 

fee: 0,             // 支付金额,单位为分
currencytype: 'cny', // 货币符号,页面显示货币简写 ¥
version: 'develop', // 测试环境'develop' 上线时,version 应改为 "release",并确保插件所有者小程序已经发布
},
/** * 组件的方法列表 */
methods: { 

handlepay() { 

// 这里是调支付需要的参数,可通过插件调用者传进来。视自身情况而写
const { 
 payamount, currencytype, version, orderid, ordersn, tokentype, accesstoken, ordertype } = this.data
wx.requestpluginpayment({ 

fee: payamount * 100,  // *100是以为fee的单位是分
paymentargs: { 
payamount, orderid, ordersn, tokentype, accesstoken, ordertype},
currencytype,
version,
success: (r) => { 

this.triggerevent('success', r)
},
fail: (e) => { 

this.triggerevent('error', e)
}
})
}
}
})

剩下两个是样式文件和插件配置文件,就不写出了。

另外需要注意如果你有用到一些图片等静态资源,需要将该部分放到plugin目录下,而不是根目录下。

3.2 宿主项目代码

支付插件需要配置功能页函数,这部分是在宿主小程序中完成的:
注意:功能页函数不应 require 其他非 functional-pages 目录中的文件,其他非 functional-pages 目录中的文件也不应 require 这个目录中的文件。这样的 require 调用在未来将不被支持。

  1. 在宿主小程序的根目录下创建functional-pages文件夹,并且在该文件下新建request-payment.js文件,书写你的支付相关的代码
    在这里插入图片描述
  2. 在宿主小程序的app.json中增加配置:
 "functionalpages": { 

"independent": true
},

这样我们就完成了插件的开发工作

4. 插件调试

本地调试可以在插件小程序的miniprogram引用插件(使用者使用也是同样的步骤),并测试:

  1. 要在 app.json 中声明需要使用的插件
{ 

"pages": [
"pages/index/index"
],
"plugins": { 

"hello-plugin": { 

"version": "dev",
"provider": "wx*********34"
}
},
"sitemaplocation": "sitemap.json"
}

plugins 定义段中可以包含多个插件声明,每个插件声明以一个使用者自定义的插件引用名作为标识,并指明插件的 appid 和需要使用的版本号。

  1. 在使用插件的页面的json文件中引入插件。这里是//miniprogram/pages/index.json
// miniprogram/pages/index/index.json
{ 

"usingcomponents": { 

"zl-pay": "plugin://hello-plugin/zl-pay"
}
}
  1. 在页面中使用插件
<zl-pay bindsuccess="onsuccess" binderror="onerror" payamount="{ 
{payamount}}" orderid='{ 
{orderid}}' ordersn='{ 
{ordersn}}' tokentype='{ 
{tokentype}}' accesstoken='{ 
{accesstoken}}' ordertype='move' />
  1. 在开发者工具的插件项目中上传插件,此时,在上传成功的通知信息中将包含这次上传获得的插件开发版 id (一个英文、数字组成的随机字符串);
  2. 点击开发者工具右下角的通知按钮,可以打开通知栏,看到新生成的 id ;
  3. 在需要使用开发版本插件的小程序项目中,将插件 version 设置为 “version”: “dev-[开发版 id]” 的形式,如 “version”: “dev-abcdef0123456789abcdef0123456789” 即可。

5. 预览、上传和发布

插件可以预览和上传,但插件没有体验版。
插件会同时有多个线上版本,由使用插件的小程序决定具体使用的版本号。

手机预览和提审插件时,会使用一个特殊的小程序来套用项目中 miniprogram 文件夹下的小程序,从而预览插件。

js555888金沙老品牌的版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由思创斯整理,转载请注明出处:https://ispacesoft.com/128166.html

(1)

相关推荐

  • 微信小程序上传图片到阿里云微信小程序上传图片到阿里云

    2022年11月18日
  • 小程序获取当前位置,回到当前位置,地图定位,导航效果因为小程序更新了获取地理位置api接口,需要先在app.json中配置一下permission字段,不然会报微信小程序getlocation需要在app.json中声明permission字段app.json:(不知道具体位置可以看这里,这里有整个app.json的配置)”permission”:{…

  • 微信小程序微信授权登录[通俗易懂]https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.htmlhttps://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.pluginlogin.html微信小程序授权登录流程:1、登录**wx.pluginlogin(objectargs)**该接口仅在小程序插件中可调用,调用接口获得插件用户标志凭证(cod.

  • 微信小程序 bindtap与catchtap的事件使用和区别1、什么是事件(1)事件是视图层到逻辑层的通讯方式。  (2)事件可以将用户的行为反馈到逻辑层进行处理。  (3)事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数。  (4)事件对象可以携带额外信息,如id,dataset,touches2、如何使用事件  (1)简单来说就是将事件绑定到组件上面,bindtap和catchtap都属于点击事件,绑定了之后点击组件可以触发这个函数。  (2)函数tapname会接受一个参数e…

  • 爬取微信小程序源码后显示二进制_微信小程序 源码爬取微信小程序源码想知道爬取微信小程序有多简单吗?一张图、三个步骤,拿到你想要的任何微信小程序源码。我就这么短,但是很爽是不是,都看到这里了,点赞关注走一走吧,谢谢大家!…

  • 微信小程序授权登录界面_qq小程序怎么授权登录

    微信小程序授权登录界面_qq小程序怎么授权登录注意:首先微信小程序是不能一进入小程序就让用户授权登录的,一进入小程序就让用户授权登录,是审核不通过的;要想弹出微信的微信授权提示框,必须用一个按钮来触发,可用授权登录这个按钮来让微信授权这个弹窗显示,首先,我们先来看一张微信小程序的授权登录流程图是不是一看这张逻辑图,一下子就觉得逻辑清晰了许多呢如果还是不理解的话也没关系,下面我们通过代码来实现一下微信小程序的授权登录微信授权登录的具体实现步骤:第一步,在用户进入小程序的时候,我们需要先判断一下用户是否授权过此小程序注:可以通过[wx.g

  • 微信小程序开发实战答案_小程序技术方案《微信小程序开发实战》课后题

    2022年12月29日
  • 个人博客上已经同步更新了文章,有目录索引,阅读起来比较方便,欢迎大家移步个人博客上读阅~个人博客地址:http://zwd596257180.gitee.io/blog/2019/04/15/wechat_applet_login/微信小程序之授权登录一、前言由于微信官方修改了getuserin…

发表回复

您的电子邮箱地址不会被公开。

联系金沙1005

关注“java架构师必看”公众号

回复4,添加站长微信。

附言:ispacesoft.com网而来。

关注微信
网站地图