轻流
·
2026-07-31 10:22:59
阅读147次
免费试用
❓每次打款前,你都要核对三四遍卡号金额,生怕输错账户,打错款目❓繁杂的付款工作占用大部分的工作时间,财务产出的整体价值不高❓依靠人工手动从银端获取回款,不仅耗时长,而且效率低用轻流,这些烦恼都可以统统甩开!通过轻流丰富的 Open API 接口和强大的 Q-Linker、Webhook数据传输能力,直接在轻流系统内就可以实现支付宝收款/退款、银行卡转账并查询流水和电子回单啦!(⚠️银企直联目前仅支持中国银行)口说无凭,一起来看看实现效果吧👇🌟实现步骤教程目录:
⚠️Tips: 因步骤十分详尽所以较长,耐心些,按步骤操作就可以实现视频中的同款效果(如果你还不是轻流用户,快点击👉注册👈,体验试用吧~) 




其余参数根据文档要求来进行获取 
其中【生成支付链接】与【确认支付状态】为代码块,【生成支付二维码】为Q-Linker字段 
qf_field.{商户订单号$$17B54DD0A$$},为表单中商户订单号字段qf_field.{订单总金额(单位为元)$$17B54DD0B$$},为表单中订单总金额(单位为元)字段qf_field.{订单标题$$17B44C092$$},为表单中订单标题字段应用私钥:只需要替换成具体调用的应用私钥
生成支付链接:const axios = require('axios');const crypto = require('crypto');const { format } = require('date-fns');const currentDate = new Date();const formattedDate = format(currentDate, 'yyyy-MM-dd HH:mm:ss');// 原始数据const data = {"timestamp":formattedDate,"method": "alipay.trade.precreate","app_id": "2021003155650***","sign_type": "RSA2","version": "1.0","charset": "UTF-8"};const table = qf_field.{商品列表信息$$17B54DD0C$$};const goodsDetail = table.map(item => {const newItem = {"quantity": item.field_169208787,"goods_name": item.field_169208786,"goods_id": item.field_169208785,"price": item.field_169208788};return newItem;});//将新的 goods_detail 赋值给 data 中的 biz_contentdata.biz_content =`{"out_trade_no": qf_field.{商户订单号$$17B54DD0A$$},"total_amount":qf_field.{订单总金额(单位为元)$$17B54DD0B$$},"subject":qf_field.{订单标题$$17B44C092$$},"goods_detail":${JSON.stringify(goodsDetail)}}`;// 第一步:剔除sign字段const { sign, ...dataWithoutSign } = data;// 第二步:剔除值为空的参数const filteredData = Object.fromEntries(Object.entries(dataWithoutSign).filter(([key, value]) => value !== ''));// 第三步:按键的ASCII码值递增排序const sortedParams = Object.keys(filteredData).sort();// 第四步:将排序后的参数与其对应的值按照"参数=参数值"的格式组合起来const concatenatedParams = sortedParams.map(key => `${key}=${filteredData[key]}`).join('&');// 第五步:生成待签名字符串const signString = concatenatedParams;// 使用私钥对待签名字符串进行加密const privateKey = `-----BEGIN PRIVATE KEY-----MI****DANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAA...............-----END PRIVATE KEY-----`;const signer = crypto.createSign('RSA-SHA256');signer.update(signString, 'utf8');const signature = signer.sign(privateKey);const sig=signature.toString('base64');const encodedSig = encodeURIComponent(sig);let config = {method: 'get',maxBodyLength: Infinity,url: `https://openapi.alipay.com/gateway.do?timestamp=${formattedDate}&method=${data.method}&app_id=${data.app_id}&sign_type=${data.sign_type}&sign=${encodedSig}&version=${data.version}&charset=${data.charset}&biz_content=${data.biz_content}`};axios(config).then(function (res) {qf_output={'data':res.data}}); 1.1.2. 代码测试
1.1.3. 解析配置
1.1.4. 字段接收配置
1.2. 生成支付二维码该字段为Q_Linker,调用接口将支付链接转为支付二维码(具体接口文档:生成二维码)
1.2.1. Q-Linker 配置


1.3. 确认支付状态1.3.1. 代码注释具体调用接口文档:alipay.trade.query(统一收单交易查询)app_id:需要替换成具体调用的应用IDqf_field.{商户订单号$$17B54DD0A$$},为表单中商户订单号字段应用私钥:只需要替换成具体调用的应用私钥
确认支付状态:const axios = require('axios');const crypto = require('crypto');const { format } = require('date-fns');const currentDate = new Date();const formattedDate = format(currentDate, 'yyyy-MM-dd HH:mm:ss');// 原始数据const data = {"timestamp":formattedDate,"method": "alipay.trade.query","app_id": "2021003155650***","sign_type": "RSA2","version": "1.0","charset": "UTF-8"};data.biz_content =`{"out_trade_no": qf_field.{商户订单号$$17B54DD0A$$}}`;// 第一步:剔除sign字段const { sign, ...dataWithoutSign } = data; // 第二步:剔除值为空的参数const filteredData = Object.fromEntries(Object.entries(dataWithoutSign).filter(([key, value]) => value !== ''));// 第三步:按键的ASCII码值递增排序const sortedParams = Object.keys(filteredData).sort();// 第四步:将排序后的参数与其对应的值按照"参数=参数值"的格式组合起来const concatenatedParams = sortedParams.map(key => `${key}=${filteredData[key]}`).join('&');// 第五步:生成待签名字符串const signString = concatenatedParams;// 使用私钥对待签名字符串进行加密const privateKey = `-----BEGIN PRIVATE KEY-----MII****BgkqhkiG9w0BAQEFAASCBKcwggSjAgEAA......................-----END PRIVATE KEY-----`;const signer = crypto.createSign('RSA-SHA256');signer.update(signString, 'utf8');const signature = signer.sign(privateKey);const sig=signature.toString('base64');const encodedSig = encodeURIComponent(sig);let config = {method: 'get',maxBodyLength: Infinity,url: `https://openapi.alipay.com/gateway.do?timestamp=${formattedDate}&method=${data.method}&app_id=${data.app_id}&sign_type=${data.sign_type}&sign=${encodedSig}&version=${data.version}&charset=${data.charset}&biz_content=${data.biz_content}`};axios(config).then(function (res) {qf_output={'data':res.data}});1.3.2. 代码测试
1.3.3. 解析配置
1.3.4. 字段接收配置

1.4. 流程配置
1.4.1. 申请人节点配置
1.4.2. 确认支付信息并扫码支付


1.4.3. 告知用户
1.4.4. webhook节点具体接口文档:单条数据流程回退接口 
可以调用接口来进行获取:获取单条数据的流程日志 
2. 支付宝申请订单退款
2.1. 商户订单号
2.2. 订单总金额
2.3. 退款2.3.1. 代码注释具体调用接口文档:alipay.trade.refund(统一收单交易退款接口)⚠️注意:交易超过约定时间(签约时设置的可退款时间)的订单无法进行退款。app_id:需要替换成具体调用的应用IDqf_field.{商户订单号$$17B598970$$}:表单中商户订单号字段qf_field.{退款金额$$17B598089$$}:表单中退款金额字段qf_field.{退款原因说明$$17B59808A$$}:表单中退款原因说明字段应用私钥:只需要替换成具体调用的应用私钥
退款:const axios = require('axios');const crypto = require('crypto');const { format } = require('date-fns');const currentDate = new Date();const formattedDate = format(currentDate, 'yyyy-MM-dd HH:mm:ss');// 原始数据const data = {"timestamp":formattedDate,"method": "alipay.trade.refund","app_id": "2021003155650***","sign_type": "RSA2","version": "1.0","charset": "UTF-8"};data.biz_content =`{"out_trade_no":qf_field.{商户订单号$$17B598970$$},"refund_amount":qf_field.{退款金额$$17B598089$$},"refund_reason":qf_field.{退款原因说明$$17B59808A$$}}`;// 第一步:剔除sign字段const { sign, ...dataWithoutSign } = data; // 第二步:剔除值为空的参数const filteredData = Object.fromEntries(Object.entries(dataWithoutSign).filter(([key, value]) => value !== ''));// 第三步:按键的ASCII码值递增排序const sortedParams = Object.keys(filteredData).sort();// 第四步:将排序后的参数与其对应的值按照"参数=参数值"的格式组合起来const concatenatedParams = sortedParams.map(key => `${key}=${filteredData[key]}`).join('&');// 第五步:生成待签名字符串const signString = concatenatedParams;// 使用私钥对待签名字符串进行加密const privateKey = `-----BEGIN PRIVATE KEY-----MII*****NBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAA……………………-----END PRIVATE KEY-----`;const signer = crypto.createSign('RSA-SHA256');signer.update(signString, 'utf8');const signature = signer.sign(privateKey);const sig=signature.toString('base64');const encodedSig = encodeURIComponent(sig);let config = {method: 'get',maxBodyLength: Infinity,url: `https://openapi.alipay.com/gateway.do?timestamp=${formattedDate}&method=${data.method}&app_id=${data.app_id}&sign_type=${data.sign_type}&sign=${encodedSig}&version=${data.version}&charset=${data.charset}&biz_content=${data.biz_content}`};axios(config).then(function (res) {qf_output={'data':res.data}});2.3.2. 解析配置
2.3.3. 字段接收配置

[caption id="attachment_14535" align="aligncenter" width="1728"]
转账时序图[/caption]
查询流水时序图[/caption]
电子回单查询时序图[/caption]


支付宝扫码支付 教程
1、准备工作
- 点击登录👉支付宝开放平台👈
- 进入后台,创建网页应用

- 绑定产品——【当面付】,并进行开通

- 接口加签方式设置
2、获取调用接口所需具体公共参数
以扫码付接口为例:alipay.trade.precreate(统一收单线下交易预创建)
- appid:应用ID

3、表单设计
1. 支付宝订单预创建并支付

1.1. 生成支付链接
1.1.1. 代码注释
具体调用接口文档:alipay.trade.precreate(统一收单线下交易预创建)⚠️注意:所生成的二维码有效时间为2小时app_id:需要替换成具体调用的应用IDqf_field.{商品列表信息$$17B54DD0C$$},为表单中商品列表信息表格字段其中以 field_169208787 为例,表示商品列表信息表格中商品数量子字段 IDfield_id 获取方式 《如何在代码块中分辨表格的不同列》
生成支付链接:const axios = require('axios');const crypto = require('crypto');const { format } = require('date-fns');const currentDate = new Date();const formattedDate = format(currentDate, 'yyyy-MM-dd HH:mm:ss');// 原始数据const data = {"timestamp":formattedDate,"method": "alipay.trade.precreate","app_id": "2021003155650***","sign_type": "RSA2","version": "1.0","charset": "UTF-8"};const table = qf_field.{商品列表信息$$17B54DD0C$$};const goodsDetail = table.map(item => {const newItem = {"quantity": item.field_169208787,"goods_name": item.field_169208786,"goods_id": item.field_169208785,"price": item.field_169208788};return newItem;});//将新的 goods_detail 赋值给 data 中的 biz_contentdata.biz_content =`{"out_trade_no": qf_field.{商户订单号$$17B54DD0A$$},"total_amount":qf_field.{订单总金额(单位为元)$$17B54DD0B$$},"subject":qf_field.{订单标题$$17B44C092$$},"goods_detail":${JSON.stringify(goodsDetail)}}`;// 第一步:剔除sign字段const { sign, ...dataWithoutSign } = data;// 第二步:剔除值为空的参数const filteredData = Object.fromEntries(Object.entries(dataWithoutSign).filter(([key, value]) => value !== ''));// 第三步:按键的ASCII码值递增排序const sortedParams = Object.keys(filteredData).sort();// 第四步:将排序后的参数与其对应的值按照"参数=参数值"的格式组合起来const concatenatedParams = sortedParams.map(key => `${key}=${filteredData[key]}`).join('&');// 第五步:生成待签名字符串const signString = concatenatedParams;// 使用私钥对待签名字符串进行加密const privateKey = `-----BEGIN PRIVATE KEY-----MI****DANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAA...............-----END PRIVATE KEY-----`;const signer = crypto.createSign('RSA-SHA256');signer.update(signString, 'utf8');const signature = signer.sign(privateKey);const sig=signature.toString('base64');const encodedSig = encodeURIComponent(sig);let config = {method: 'get',maxBodyLength: Infinity,url: `https://openapi.alipay.com/gateway.do?timestamp=${formattedDate}&method=${data.method}&app_id=${data.app_id}&sign_type=${data.sign_type}&sign=${encodedSig}&version=${data.version}&charset=${data.charset}&biz_content=${data.biz_content}`};axios(config).then(function (res) {qf_output={'data':res.data}}); 1.1.2. 代码测试
1.1.3. 解析配置
1.1.4. 字段接收配置
1.2. 生成支付二维码该字段为Q_Linker,调用接口将支付链接转为支付二维码(具体接口文档:生成二维码)- 需要点击申请appid,去获取对应的app_id和app_srcret
1.2.1. Q-Linker 配置
- URL:https://www.mxnzp.com/api/qrcode/create/single
- QueryParam:

- Method:GET
- Json path:

- 字段接收配置
1.3. 确认支付状态1.3.1. 代码注释具体调用接口文档:alipay.trade.query(统一收单交易查询)app_id:需要替换成具体调用的应用IDqf_field.{商户订单号$$17B54DD0A$$},为表单中商户订单号字段应用私钥:只需要替换成具体调用的应用私钥
1.3.3. 解析配置
1.3.4. 字段接收配置

1.4. 流程配置
1.4.1. 申请人节点配置
1.4.2. 确认支付信息并扫码支付


1.4.3. 告知用户
1.4.4. webhook节点- accessToken:轻商城——拓展插件——openAPI

- 节点ID获取方式


2.2. 订单总金额
2.3. 退款2.3.1. 代码注释具体调用接口文档:alipay.trade.refund(统一收单交易退款接口)⚠️注意:交易超过约定时间(签约时设置的可退款时间)的订单无法进行退款。app_id:需要替换成具体调用的应用IDqf_field.{商户订单号$$17B598970$$}:表单中商户订单号字段qf_field.{退款金额$$17B598089$$}:表单中退款金额字段qf_field.{退款原因说明$$17B59808A$$}:表单中退款原因说明字段应用私钥:只需要替换成具体调用的应用私钥
2.3.3. 字段接收配置

银企直联(中国银行)教程
在轻流实现中国银行的公对公转账,公对私转账,查询流水,获取电子回执单功能1、落地方案
需要二次开发,由中间件根据中国银行银企对接接口规范要求,封装以下四个接口:- 公对公转账
- 公对私转账
- 查询流水
- 电子回单查询
转账时序图[/caption]📚方案简述:
- 在轻流发起转账,通过webhook携带三个参数访问中间件;
- 中间件根据参数访问对应的前置机接口,前置机执行对应操作将转账消息加入银行队列
- 根据转账的表现,银行执行转账操作时,会给中国银行app发送确认消息(或者直接转账成功,具体表现需要银行柜台进行修改)
查询流水时序图[/caption]📚方案简述:
- 查询银行流水为定时任务,根据业务需要可设置多久拉取一次
- 拉取昨天和今天的流水数据,并在中间件解析成符合轻流要求的格式
- 中间件通过QS被动将数据推送至轻流应用中,并比对更新
电子回单查询时序图[/caption]📚方案简述:
- 中间件访问回单下载接口后,前置机返回回单文件的名称
- 银行生成请求时间段内的回单,回单为PDF文件,统一放在压缩文件内。
- 中间件轮询是否已经生成回单文件,生成后将文件上传至对象存储服务,并返回文件的路径;
- 中间件将返回的文件路径推送至轻流,并匹配至轻流上传附件字段。
🎉最终效果
- 在轻流实现转账服务
- 可在轻流应用中查询到流水和电子回单
⚠️备注
- 银企直联属于银行系统,每年需要付款使用
- 银行会提供前置机架构,所有对银行的请求都会先到前置机处理
- 只有Windows的系统,不能云部署
- 访问中国银行银企对接接口需要先签到,签到有效期为15分钟,可缓存登录状态
《 上一篇
轻流公有云Pro版下架通知
下一篇 》
产品经理必看:如何用无代码解决需求管理常见难题
相关推荐
-
轻流AI解决方案让企业文档处理更高效,让制造业生产管控更智能
-
生物检测数字化怎么做?嘉佑高标检测用AI让报告编制耗时减少80%
-
用 WorkBuddy+轻流做客户管理,销售线索终于不再“躺平”!
-
轻流AI又更新了:Skill Hub上线,定时任务、多场景会话及用户体系迎来全面升级
-
轻流业务专家团队上线 WorkBuddy,快来认识你“秋天的第一个专家”
-
2026年 6 款低代码系统选型指南
-
降本增效必看:一套模板搞定报销、预算、备用金全流程费控管理
-
库存溯源难、合规无据?库存管理-先进先出 数字化管控一招破解行业痛点
-
采矿行业数字化新标杆:AI+无代码让矿山管理安全又高效
-
2026年专业的生产管理系统有哪些服务商
推荐产品
轻客CRM
轻客 CRM 是为中小企业提供的客户管理解决方案,能自动识别线索、管理客户信息、实现订单流程线上化,支持多终端移动办公,具有成本低、灵活高效等特点。
轻银费控
轻银费控系统-银企直连是一个帮助企业解决费用报销、支付、预算控制等问题的系统,支持数据化管理、自动化审批流程、银企直连,提高财务效率。
生产管理
适用于汽车零部件、电子电器、航空航天、医疗器械、五金制品等制造领域。以销售订单启动流程,经生产计划、生产各环节、装配质检、质量检验、财务回款和售后,优化计划排程,提高效率、质量,加强物料管理。
项目管理
工程项目管理系统适用于各类建筑工程新建、改建和扩建。可优化流程、促沟通协作、控成本、保质量安全及支持决策。实现思路是与相关方沟通,了解需求痛点,收集整理数据,评估现有模式。
人事管理
系统按HR高频工作搭模板,含招聘、员工、调转岗、薪资、考评管理模块,覆盖全流程,可灵活配置,提效决策。
设备巡检
适用于设备点检、保养、维修、配件管理及工装、样件校验管理,可实时分析单据处理完成率和及时率。效果是在手动巡检基础上实现自动工单触发,有实时分析看板。思路是维护台账、方案,生成工单并处理、统计相关情况。