当前位置: 首页 > news >正文

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

/*** 获取收钱吧插件的参数* @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("&"));// 拼接keykeyValue += ("&key=" + terminalKey);// 求md5String sign = EncryptUtil.md5(keyValue);resultMap.put("sign", sign.toUpperCase());return resultMap;}

相关文章:

uniapp引入小程序原生插件

怎么在uniapp中使用微信小程序原生插件&#xff0c;以收钱吧支付插件为例 1、在manifest.json里的mp-weixin中增加插件配置 "mp-weixin" : {"appid" : "你的小程序appid","setting" : {"urlCheck" : false},"usingCom…...

自己记录微信小程序开发遇到的问题

在HBuilder X中【运行】--【小程序】--【运行设置】&#xff0c;小程序运行配置&#xff0c;将【微信开发者工具】的安装路径配置进去&#xff0c;首次运行会自动让你填写&#xff1b; 1、hbuildx运行到微信开发者工具报错 Error: Unbalanced delimiter found in string 错误…...

【leetcode 力扣刷题】栈—波兰式///逆波兰式相关知识和题目

波兰式、逆波兰式相关知识和题目 波兰式、逆波兰式介绍常规表达式转换成逆波兰式编程让常规表达式转换成逆波兰式逆波兰式运算过程常规表达式转换成波兰式编程让常规表达式转换成波兰式波兰式运算过程 150. 逆波兰式表达式求值224. 基本计算器227. 基本计算器Ⅱ282. 给表达式添…...

Web 第一步:HTTP 协议(基础)

这里是JavaWeb的开头部分&#xff01;那么先解释一下吧&#xff1a; Web&#xff1a;全球广域网&#xff0c;也称为万维网&#xff08;www&#xff09;&#xff0c;能够通过浏览器访问的网站。 JavaWeb&#xff1a;是用Java技术来解决相关 Web 互联网领域的技术栈。 &#xf…...

【Vue】快速入门案例与工作流程的讲解

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《Vue快速入门》。&#x1f…...

LuatOS-SOC接口文档(air780E)--camera - codec - 多媒体-编解码

常量 常量 类型 解释 codec.MP3 number MP3格式 codec.WAV number WAV格式 codec.AMR number AMR-NB格式&#xff0c;一般意义上的AMR codec.AMR_WB number AMR-WB格式 codec.create(type, isDecoder) 创建编解码用的codec 参数 传入值类型 解释 int 多媒…...

《动手学深度学习 Pytorch版》 6.6 卷积神经网络

import torch from torch import nn from d2l import torch as d2l6.6.1 LeNet LetNet-5 由两个部分组成&#xff1a; - 卷积编码器&#xff1a;由两个卷积核组成。 - 全连接层稠密块&#xff1a;由三个全连接层组成。模型结构如下流程图&#xff08;每个卷积块由一个卷积层、…...

【微信小程序】项目初始化

| var() CSS 函数可以插入一个自定义属性&#xff08;有时也被称为“CSS 变量”&#xff09;的值&#xff0c;用来代替非自定义 属性中值的任何部分。 1.初始化样式与颜色 view,text{box-sizing: border-box; } page{--themColor:#ad905c;--globalColor:#18191b;--focusColor…...

C#,《小白学程序》第二十六课:大数乘法(BigInteger Multiply)的Toom-Cook 3算法及源程序

凑数的&#xff0c;仅供参考。 1 文本格式 /// <summary> /// 《小白学程序》第二十六课&#xff1a;大数&#xff08;BigInteger&#xff09;的Toom-Cook 3乘法 /// Toom-Cook 3-Way Multiplication /// </summary> /// <param name"a"></par…...

destoon自定义一个archiver内容文档

在archiver目录建立以下代码&#xff1a; <?php define(DT_REWRITE, true); require ../common.inc.php; $EXT[archiver_enable] or dheader(DT_PATH); //$DT_BOT or dheader(DT_PATH); $N $M $T array(); $mid or $mid 5; $vmid $list 0; foreach($MODULE as $k>…...

5-1 Dataset和DataLoader

Pytorch通常使用Dataset和DataLoader这两个工具类来构建数据管道。 Dataset定义了数据集的内容&#xff0c;它相当于一个类似列表的数据结构&#xff0c;具有确定的长度&#xff0c;能够用索引获取数据集中的元素。 而DataLoader定义了按batch加载数据集的方法&#xff0c;它是…...

IDEA创建完Maven工程后,右下角一直显示正在下载Maven插件

原因&#xff1a; 这是由于新建的Maven工程&#xff0c;IDEA会用它内置的默认的Maven版本&#xff0c;使用国外的网站下载Maven所需的插件&#xff0c;速度很慢 。 解决方式&#xff1a; 每次创建 Project 后都需要设置 Maven 家目录位置&#xff08;就是我们自己下载的Mav…...

最新清理删除Mac电脑内存空间方法教程

Mac电脑使用的时间越久&#xff0c;系统的运行就会变的越卡顿&#xff0c;这是Mac os会出现的正常现象&#xff0c;卡顿的原因主要是系统缓存文件占用了较多的磁盘空间&#xff0c;或者Mac的内存空间已满。如果你的Mac运行速度变慢&#xff0c;很有可能是因为磁盘内存被过度占用…...

【调试经验】MySQL - fatal error: mysql/mysql.h: 没有那个文件或目录

机器环境&#xff1a; Ubuntu 22.04.3 LTS 报错问题 在编译一个项目时出现了一段SQL报错&#xff1a; CGImysql/sql_connection_pool.cpp:1:10: fatal error: mysql/mysql.h: 没有那个文件或目录 1 | #include <mysql/mysql.h> | ^~~~~~~~~~~~~~~ c…...

腾讯mini项目-【指标监控服务重构】2023-08-12

今日已办 Watermill Handler 将 4 个阶段的逻辑处理定义为 Handler 测试发现&#xff0c;添加的 handler 会被覆盖掉&#xff0c;故考虑添加为 middleware 且 4 个阶段的处理逻辑针对不同 topic 是相同的。 参考https://watermill.io/docs/messages-router/实现不同topic&am…...

kubeadm部署k8sv1.24使用cri-docker做为CRI

目的 测试使用cri-docker做为containerd和docker的中间层垫片。 规划 IP系统主机名10.0.6.5ubuntu 22.04.3 jammymaster01.kktb.org10.0.6.6ubuntu 22.04.3 jammymaster02.kktb.org10.0.6.7ubuntu 22.04.3 jammymaster03.kktb.org 配置 步骤&#xff1a; 系统优化 禁用sw…...

在c#中使用CancellationToken取消任务

目录 &#x1f680;介绍&#xff1a; &#x1f424;简单举例 &#x1f680;IsCancellationRequested &#x1f680;ThrowIfCancellationRequested &#x1f424;在控制器中使用 &#x1f680;通过异步方法的参数使用cancellationToken &#x1f680;api结合ThrowIfCancel…...

【项目经验】:elementui多选表格默认选中

一.需求 在页面刚打开就默认选中指定项。 二.方法Table Methods toggleRowSelection用于多选表格&#xff0c;切换某一行的选中状态&#xff0c;如果使用了第二个参数&#xff0c;则是设置这一行选中与否&#xff08;selected 为 true 则选中&#xff09;row, selected 详细…...

外星人入侵游戏-(创新版)

&#x1f308;write in front&#x1f308; &#x1f9f8;大家好&#xff0c;我是Aileen&#x1f9f8;.希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流. &#x1f194;本文由Aileen_0v0&#x1f9f8; 原创 CSDN首发&#x1f412; 如…...

HTML 学习笔记(基础)

它是超文本标记语言&#xff0c;由一大堆约定俗成的标签组成&#xff0c;而其标签里一般又有一些属性值可以设置。 W3C标准&#xff1a;网页主要三大部分 结构&#xff1a;HTML表现&#xff1a;CSS行为&#xff1a;JavaScript <!DOCTYPE html> <html lang"zh-…...

构建个人技能图谱:从GitHub项目到结构化能力管理实践

1. 项目概述&#xff1a;一个技能图谱的构建与价值 最近在整理自己的技术栈时&#xff0c;发现了一个挺有意思的GitHub项目&#xff0c;标题是“headlike-oradexon12/skills”。乍一看&#xff0c;这像是一个个人技能仓库&#xff0c;但深入探究后&#xff0c;我发现它远不止是…...

PP 蜂窝板生产线智能控制系统架构与 PLC 程序设计思路

PP 蜂窝板生产线智能控制系统架构与 PLC 程序设计思路摘要&#xff1a;针对 PP 蜂窝板产线多段速度同步、温度压力闭环、真空度稳定与定长裁切精度要求&#xff0c;本文介绍基于 PLCHMI 的智能控制系统整体架构&#xff0c;分模块阐述挤出温控、真空定型、牵引同步、在线测厚与…...

在OpenClaw中快速接入Taotoken实现AI助手功能

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在OpenClaw中快速接入Taotoken实现AI助手功能 OpenClaw是一款功能强大的AI助手工具&#xff0c;能够帮助开发者进行代码生成、问题…...

基于RAG与代码专用嵌入模型构建本地智能代码库问答系统

1. 项目概述与核心价值最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“smart-codebase”。光看名字&#xff0c;你可能觉得这又是一个关于代码智能化的工具&#xff0c;但仔细研究其设计和实现思路&#xff0c;你会发现它瞄准的是一个非常具体且高频的痛点&#xff1a;如…...

手把手教你调试STM32F103的UART4 DMA:从CubeMX配置到逻辑分析仪抓包分析

STM32F103 UART4 DMA调试实战&#xff1a;从CubeMX配置到逻辑分析仪波形解析 在嵌入式开发中&#xff0c;UART通信是最基础也最常用的外设之一。当通信数据量大或实时性要求高时&#xff0c;直接使用中断方式处理每个字节会显著增加CPU负担。DMA&#xff08;直接内存访问&#…...

全志T113-S3 SPI屏幕驱动踩坑实录:内核5.4下适配ILI9341的完整流程与代码修改

全志T113-S3 SPI屏幕驱动深度解析&#xff1a;内核5.4适配ILI9341的实战指南 在嵌入式开发领域&#xff0c;显示设备的驱动适配一直是工程师面临的核心挑战之一。全志T113-S3作为一款性价比突出的处理器&#xff0c;广泛应用于各类嵌入式场景&#xff0c;而ILI9341驱动的SPI屏幕…...

多尺度地理加权回归(MGWR)终极指南:从入门到实战的完整教程

多尺度地理加权回归(MGWR)终极指南&#xff1a;从入门到实战的完整教程 【免费下载链接】mgwr Multiscale Geographically Weighted Regression (MGWR) 项目地址: https://gitcode.com/gh_mirrors/mg/mgwr 面对复杂多变的空间数据&#xff0c;传统的地理加权回归(GWR)常…...

基于MicroPython的嵌入式射击计时器开发实战:从状态机到人机交互

1. 项目概述&#xff1a;一个嵌入式射击计时器的诞生在竞技射击、速射训练或者日常的射击练习中&#xff0c;一个精准、可靠且响应迅速的计时器是评估表现的核心工具。市面上的专业计时器往往价格不菲&#xff0c;且功能固定&#xff0c;难以根据个人训练习惯进行深度定制。作为…...

【NotebookLM海洋学研究辅助实战指南】:20年海洋数据科学家亲授AI笔记法,3步构建专属科研知识图谱

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;NotebookLM海洋学研究辅助 NotebookLM 是 Google 推出的基于用户上传文档进行深度语义理解与推理的 AI 工具&#xff0c;特别适用于海洋学这类多源异构、长周期、高专业性的科研场景。研究人员可将 PDF…...

基于Playwright的Instagram自动化技能包:原理、实现与智能体集成

1. 项目概述与核心价值最近在折腾个人智能助理&#xff0c;想让它能帮我处理一些社交媒体上的琐事&#xff0c;比如自动查看Instagram上的新动态、给特定帖子点赞或者保存一些有趣的图片。在网上搜了一圈&#xff0c;发现了一个叫adamanz/instagram-skill的开源项目&#xff0c…...