uniapp引入小程序原生插件

这篇具有很好参考价值的文章主要介绍了uniapp引入小程序原生插件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

怎么在uniapp中使用微信小程序原生插件,以收钱吧支付插件为例

1、在manifest.json里的mp-weixin中增加插件配置

    "mp-weixin" : {
        "appid" : "你的小程序appid",
        "setting" : {
            "urlCheck" : false
        },
        "usingComponents" : true,
        // 在下面配置插件
        "plugins" : {
            "sqb-pay" : {
                "version" : "1.3.0",
                "provider" : "插件的appid"
            }
        }
    },

2、在pages.json里需要映入插件的页面增加配置

{
		    "path" : "pages/user/order/order-pay",
		    "style" :                                                                                    
		    {
		        "navigationBarTitleText": "确认支付",
		        "enablePullDownRefresh": false,
                // 微信插件配置
				"mp-weixin": {
				  "usingComponents": {
					"sqb-pay": "plugin://sqb-pay/sqb-pay" 
				  }
				}   
		    }
		    
		}

3、在order-pay.vue页面使用插件即可

......
<sqb-pay :return_url="sqbParam.return_url" :total_amount="sqbParam.total_amount"
			:terminal_sn="sqbParam.terminal_sn" :client_sn="sqbParam.client_sn" @navigateTo="navigateTo"
			:subject="sqbParam.subject" :sign="sqbParam.sign" :notify_url="sqbParam.notify_url">
		<button class="bg-blue text-white mt-30 mx-auto text-xs rounded-xs w-p-60">确认支付</button>
</sqb-pay>
......

<script setup lang="ts">
    interface sqbPay {
		return_url : string,
		total_amount : string,
		terminal_sn : string,
		client_sn : string, // 订单号
		subject : string,
		sign : string,
		notify_url?: string
	}
	let sqbParam = ref<sqbPay>({
		return_url: '',
		total_amount: '',
		terminal_sn: '',
		client_sn: '',
		subject: '',
		sign: ''
	})
    
    // 从后台获取插件的sqbParam参数
    
	function navigateTo(e) {
		wx.redirectTo({
			url: e.detail.url,
			fail(e) {
				console.log('err:', e)
				uni.showToast({
					icon: 'none',
					title: '支付失败'
				})
			},
		})
	}
</script>

附录:收钱吧小程序签名算法实现

javascript

/**
 * 收钱吧签名
 * 签名算法:

1 筛选 获取所有非空的参数,剔除 sign
2 排序 将筛选的参数按照第一个字符的键值ASCII码递增排序(字母升序排序),如果遇到相同字符则按照第二个字符的键值ASCII码递增排序,以此类推。
3 拼接 将排序后的参数与其对应值,组合成“参数=参数值”的格式,并且把这些参数用&字符连接起来,此时生成的字符串为待签名字符串。
 将key的值拼接在字符串后面,调用MD5算法生成sign。将sign转换成大写。
 * @param {any} params 
 * @param {string} key 
 * @return 
 */ 
function getSqbSign(params: any, key:string) {
  // 筛选和排序参数  
  let sortedParams = Object.keys(params)  
    .filter(key => key !== 'sign'&&params[key]) // 剔除sign和空
    .sort((a, b) => {
      return a.localeCompare(b); // 字母升序排序  
    })
    .map(key => `${key}=${params[key]}`); // 组合成“参数=参数值”的格式  
  
  // 生成sign  
  let signString = sortedParams.join('&') + `&key=${key}`; // 拼接key  
  // console.log('----signString:', signString)
  let sign = SparkMD5.hash(signString).toUpperCase(); // MD5算法生成sign并转换为大写  
  return sign;  
}

java文章来源地址https://www.toymoban.com/news/detail-715659.html

/**
     * 获取收钱吧插件的参数
     * @param terminalSn 终端号
     * @param terminalKey 终端密钥
     * @param totalAmount 单位分
     * @param clientSn 订单号
     * @param subject 商品名
     * @return
     */
    public Map<String, String> getSqbPluginParam(String terminalSn, String terminalKey, String totalAmount, String clientSn, String subject){
        Map<String, String> resultMap = new HashMap<>(10);
        resultMap.put("return_url", "/pages/user/order/order?rule=3");
        resultMap.put("total_amount", totalAmount);
        resultMap.put("terminal_sn", terminalSn);
        resultMap.put("client_sn", clientSn);
        resultMap.put("subject", subject);
        resultMap.put("notify_url", "https://xxxxxxxxxx/notify/order");

        // 筛选 获取所有非空的参数,剔除 sign;按字母升序排序;将排序后的参数与其对应值,组合成“参数=参数值”的格式,并且把这些参数用&字符连接起来
        String keyValue = resultMap.keySet().stream()
                .filter(key -> !key.equals("sign")&&!ObjectUtils.isEmpty(resultMap.get(key)))
                .sorted().map(key -> key + "=" + resultMap.get(key))
                .collect(Collectors.joining("&"));
        // 拼接key
        keyValue += ("&key=" + terminalKey);
        // 求md5
        String sign = EncryptUtil.md5(keyValue);
        resultMap.put("sign", sign.toUpperCase());

        return resultMap;
    }

到了这里,关于uniapp引入小程序原生插件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序修改原生组件样式(uni-app)

    微信小程序修改原生组件样式 全局修改,直接将修改的样式写在全局的样式文件中; 特殊情况:修改swiper指示点样式时,需要包裹在swiper的样式选择器下才生效。 直接将下列代码放在全局样式中是不会生效的,需要加上swiper组件的元素选择器或swiper组件的其他样式名也可。

    2024年02月05日
    浏览(77)
  • 解决uni-app小程序原生tabbar 添加阴影问题

    下面是实现的效果  步骤1 创建一个组件  文件名和组件名要一致  步骤2  在组件中实现阴影效果 步骤3 在tabbar 页面使用  直接使用 即可 不用引入  

    2024年02月07日
    浏览(64)
  • uni-app小程序引入iconfont的三种方式详解(无需下载文件到项目)

    官网iconfont的引入方式有三种分别为: Unicode 、 Font class 、 Symbol , 其中已明确说明 Unicode、Font class 这两种引入方式 不支持多色 。 单色如何理解呐?具体请看效果对比图(左图为UI上传的图标样式,右边为我们使用这两种方式引入后不加任何样式的效果) 是不是很丑? 另外

    2024年02月09日
    浏览(84)
  • uni-app小程序使用DCloud(插件市场)流程

    一、DCloud(插件市场) DCloud 是uni-app官方插件市场,里面有官方、团队、个人发布的众多插件,包括 uni-ui、uni-pay 等。而像 uni-ui 这种大型组件库都有官方文档可参考,但一些团队或个人发布的小型插件没有文档,只有下载、导入按钮。本文就以电子 签名插件 jushi-signature 为

    2024年02月05日
    浏览(54)
  • 微信小程序原生框架转Uni-App:你需要知道的一切

    博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客👦🏻 《java 面试题大全》 🍩惟余辈才疏学浅,临摹之作或有不妥之处,还请读者海涵指正。☕🍭 《MYSQL从入门到精通》数据库是开发者必会基础之一~ 🪁 吾期望此文有资助于尔,即使粗浅难及深广,亦备添少许微薄

    2024年02月09日
    浏览(61)
  • 前端uni-app自定义精美全端复制文本插件,支持全端文本复制插件 可设置复制按钮颜色

    随着技术的发展,开发的复杂度也越来越高,传统开发方式将一个系统做成了整块应用,经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改,造成牵一发而动全身。 通过组件化开发,可以有效实现单独开发,单独维护,而且他们之间可以随

    2024年02月16日
    浏览(47)
  • Uni App + Vue3 引入高德小程序插件Js文件失败

      使用uni app模板开发微信小程序过程中引入高德地图小程序插件失败, 由于本人是第一次使用vue开发对vue2和3的模块引入方式并不甚了解,官方文档也并未提及所以踩了坑,特记录一下, 先看代码: 根据官方文档这里引入js插件后即可在onload函数实例化一个AMapWX对象 这里实

    2024年02月10日
    浏览(55)
  • uni-app小程序实现音频播放,uniapp播放录音,uniapp简单实现播放录音

    复制到.vue文件即可预览效果 问题 :开发者工具中.onTimeUpdate方法可能会失效! 官方参考:https://uniapp.dcloud.net.cn/api/media/audio-context.html# 其他博客参考:https://blog.csdn.net/weixin_45328705/article/details/114091301 录音实现参考 :https://blog.csdn.net/weixin_43992507/article/details/129857780

    2024年02月12日
    浏览(84)
  • 前端Uni-app开发微信小程序|微信小程序手机商城

    作者主页:编程指南针 作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库

    2024年02月12日
    浏览(60)
  • 前端Vue uni-app App/小程序/H5 通用tree树形结构图

    随着技术的发展,开发的复杂度也越来越高,传统开发方式将一个系统做成了整块应用,经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改,造成牵一发而动全身。 通过组件化开发,可以有效实现单独开发,单独维护,而且他们之间可以随

    2024年02月16日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包