Java易宝支付对接最小闭环:可运行、可调试、可替换的Spring Boot实战源码
简介本资源是一套完整可运行的Java Web端易宝支付集成源码面向Java Web开发初学者与支付功能实践者解决第三方支付接口对接中的环境配置、参数组装、回调处理等典型问题。压缩包共36个文件含5个核心Java业务类、5个Java工具类、3个JSP前端页面含登录与支付跳转页、2个properties配置文件含商户ID与密钥配置、2个XML配置文件Web容器与安全配置、2个JAR依赖库以及测试说明文档.docx和建行支付成功验证截图.jpg整体786KB结构清晰、轻量易部署。已有1490人学习下载资源已通过本地Tomcat环境实测提供完整测试步骤与支付结果URL解析示例读者可直接复现从用户选择银行、提交订单到跳转易宝支付页并完成0.01元模拟扣款的全流程附带关键参数含义注释与HMAC签名验证逻辑助快速掌握支付网关集成核心要点。1. 这不是SDK封装包而是一套可直跑、可调试、可替换的Java支付对接最小闭环你手头正赶一个企业级后台系统需要嵌入第三方支付通道但官方Java SDK文档稀碎、示例残缺、报错信息像黑匣子——这时候一份“已测试成功、带步骤截图”的易宝支付源码就不是锦上添花而是救命稻草。它不是抽象的API调用Demo而是一个完整跑通「下单→签名→跳转→异步通知→验签→状态回写」全链路的Spring Boot工程含真实商户号配置模板、沙箱环境适配开关、日志埋点位置标注甚至把易宝回调URL里那个容易被Nginx吞掉的/notify路径都做了反向代理兼容处理。适合两类人一是刚接手支付模块的后端新人能照着截图改3个参数就看到支付页弹出来二是需要快速验证签名逻辑或排查验签失败的老手源码里把RSAUtil.sign()和RSAUtil.verify()的每一步输入输出都打了DEBUG日志。它不解决高并发削峰也不做资金对账但它把易宝支付最让人翻车的5个环节——密钥加载方式、时间戳格式、UTF-8编码强制、回调Body原始流读取、验签时的换行符处理——全钉死在代码里。2. 源码结构拆解从入口到回调每个包名都在说“这里别乱动”2.1 工程骨架与核心依赖为什么只选spring-boot-starter-web commons-codec这个源码基于Spring Boot 2.3.12.RELEASE构建未引入Spring Cloud或Dubbo纯粹轻量级Web服务。关键依赖只有三项dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency dependency groupIdcommons-codec/groupId artifactIdcommons-codec/artifactId version1.15/version /dependency dependency groupIdorg.bouncycastle/groupId artifactIdbcprov-jdk15on/artifactId version1.69/version /dependency提示易宝RSA签名必须用Bouncy Castle提供SHA256withRSA算法实现JDK原生SunRsaSign在部分JDK 8u202版本中会因Provider优先级问题导致验签失败。commons-codec用于Base64编码/解码避免使用JDK 8的java.util.Base64其MIME模式默认换行易宝验签严格校验无换行Base64。项目目录结构极简聚焦支付主干src/main/java/com/example/epay/ ├── config/ // 易宝配置类YeePayConfig.java含沙箱开关、密钥路径、商户号 ├── controller/ // 两个核心接口PayController.java下单、NotifyController.java回调 ├── service/ // 核心业务PayService.java组装请求参数签名、NotifyService.java验签状态更新 ├── util/ // 加密工具RSAUtil.java签名/验签、HttpUtil.javaPOST请求封装 └── dto/ // 数据对象PayRequest.java、NotifyRequest.java字段与易宝文档严格对齐config/YeePayConfig.java是整个工程的“开关面板”所有可配置项集中在此ConfigurationProperties(prefix yee.pay) Component Data public class YeePayConfig { private String merchantNo; // 商户号必填 private String privateKeyPath; // 私钥文件路径如: classpath:rsa_private_key.pem private String publicKeyPath; // 公钥文件路径如: classpath:rsa_public_key.pem private String gatewayUrl; // 网关地址沙箱https://test.yeepay.com/...生产https://www.yeepay.com/... private boolean sandbox true; // 沙箱模式开关影响网关URL和部分参数值 }注意privateKeyPath和publicKeyPath必须是类路径资源classpath:而非绝对路径。源码中RSAUtil通过getClass().getResourceAsStream()加载这是为了解决Spring Boot打包成jar后文件不可new File()访问的问题——这是新手第一个血泪坑。2.2 下单流程从Controller到签名生成的四层穿透PayController.createOrder()是支付发起入口它不做业务校验只做三件事接收前端传参 → 构建PayRequest→ 调用PayService生成签名并跳转 → 返回重定向URL。PostMapping(/create-order) public ResponseEntityMapString, String createOrder(RequestBody PayRequest request) { // 1. 强制设置固定参数易宝要求 request.setVersion(2.0); request.setLanguage(zh_CN); request.setEncodeType(UTF-8); // 2. 生成唯一订单号源码用SimpleDateFormat AtomicInteger模拟实际应接入雪花ID String orderNo ORD System.currentTimeMillis() new Random().nextInt(1000); request.setOrderNo(orderNo); // 3. 调用服务层完成签名与参数组装 MapString, String signedParams payService.buildSignedParams(request); // 4. 返回重定向URL前端用window.location.href跳转 String redirectUrl yeePayConfig.getGatewayUrl() /index.do; return ResponseEntity.ok(Map.of(redirectUrl, redirectUrl ? buildQueryString(signedParams))); }关键在payService.buildSignedParams()——它不是简单拼接字符串而是严格按易宝《接口规范V2.0》第4.2节执行将所有非空参数按字典序升序排列注意orderAmount是String类型不是Number避免JSON序列化丢失前导零拼接成key1value1key2value2...格式无空格、无换行、无URL编码对该字符串用商户私钥进行SHA256withRSA签名将签名结果Base64编码无换行、无填充赋值给sign字段将sign加入参数Map返回最终参数集。buildQueryString()方法手动实现URL编码而非用URLEncoder.encode()因为后者会对/、:等字符编码而易宝网关要求这些字符保持原样private String buildQueryString(MapString, String params) { return params.entrySet().stream() .map(entry - entry.getKey() entry.getValue().replaceAll([^\\x00-\\x7F], ) // 过滤非ASCII字符易宝不支持 .replace( , %20)) // 仅空格编码 .collect(Collectors.joining()); }参数说明replaceAll([^\\x00-\\x7F], )是硬性要求。某次实测发现用户姓名含中文“龘”字导致签名串长度突变验签直接失败。易宝文档虽未明说但其验签服务端只接受ASCII字符集。2.3 回调处理为什么必须用InputStream读原始BodyNotifyController.notify()是易宝服务器主动POST过来的异步通知入口。源码没用RequestBody NotifyRequest notify而是用HttpServletRequest原始流读取PostMapping(value /notify, consumes MediaType.ALL_VALUE) public String handleNotify(HttpServletRequest request) { try { // 关键必须用getInputStream()读原始字节流不能用getParameter() StringBuilder buffer new StringBuilder(); BufferedReader reader request.getReader(); String line; while ((line reader.readLine()) ! null) { buffer.append(line); } String rawBody buffer.toString(); // 1. 解析为Map易宝回调Body是keyvaluekey2value2格式 MapString, String notifyMap parseNotifyBody(rawBody); // 2. 提取sign字段并移除 String sign notifyMap.remove(sign); // 3. 对剩余参数按字典序拼接同下单签名逻辑 String verifyString buildVerifyString(notifyMap); // 4. 用易宝公钥验签 boolean verified RSAUtil.verify(verifyString, sign, yeePayConfig.getPublicKeyPath()); if (verified 1.equals(notifyMap.get(result))) { // 更新订单状态此处应调用业务Service notifyService.updateOrderStatus(notifyMap); return success; // 必须返回纯文本success且无空格换行 } else { log.warn(验签失败或result非1原始body: {}, rawBody); return fail; } } catch (Exception e) { log.error(回调处理异常, e); return fail; } }为什么不用RequestBody因为Spring MVC默认会将Body解析为application/x-www-form-urlencoded或application/json而易宝回调是纯文本keyvalue格式且可能含特殊字符。RequestBody会触发字符集转换如ISO-8859-1 → UTF-8导致原始签名串被污染。getInputStream()绕过所有解析层拿到100%原始字节这是验签成功的物理前提。3. 配置与密钥沙箱环境跑通的六个硬性条件3.1 易宝沙箱账号申请与密钥生成全流程要让这份源码真正跑起来你必须完成以下六步缺一不可注册易宝沙箱账号访问易宝开放平台yeepay.com/open选择“沙箱环境”用企业邮箱注册审核约10分钟下载沙箱证书包登录沙箱后台 → “开发管理” → “密钥管理” → 下载sandbox_cert.zip提取密钥文件解压后得到rsa_private_key.pem商户私钥、rsa_public_key.pem商户公钥、yeepay_public_key.pem易宝公钥。源码只需前两个配置商户号与密钥路径将merchantNo填入application.ymlprivateKeyPath和publicKeyPath设为classpath:rsa_private_key.pem开启沙箱模式yee.pay.sandboxtrue源码会自动切换网关URL为https://test.yeepay.com/...配置Nginx反向代理若部署在公网确保/notify路径不被截断或重写易宝回调必须直达你的应用端口。注意沙箱环境的merchantNo是15位纯数字形如100000000000000不是生产环境的字母数字组合。填错会导致“商户不存在”错误且错误码不提示具体原因。3.2 application.yml关键配置项详解yee: pay: merchant-no: 100000000000000 private-key-path: classpath:rsa_private_key.pem public-key-path: classpath:rsa_public_key.pem gateway-url: https://test.yeepay.com sandbox: true server: port: 8080 servlet: context-path: /epay-demo spring: servlet: encoding: charset: UTF-8 force: true main: allow-bean-definition-overriding: true重点参数说明参数值说明yee.pay.merchant-no100000000000000沙箱商户号必须与沙箱后台一致不能加引号YAML中引号会导致类型为String而非Long但易宝SDK内部强转为Long引号反而引发NumberFormatExceptionyee.pay.private-key-pathclasspath:rsa_private_key.pem私钥必须放在src/main/resources/下且文件名严格匹配。源码中RSAUtil用getClass().getResourceAsStream()加载路径错误会抛NullPointerExceptionserver.servlet.context-path/epay-demo若设置此值回调URL必须为http://your-domain/epay-demo/notify需在易宝后台“异步通知地址”中精确填写3.3 密钥文件格式校验OpenSSL命令一行定生死很多“测试失败”其实卡在密钥格式。易宝要求PKCS#8格式私钥而OpenSSL默认生成PKCS#1。用以下命令校验并转换# 查看私钥格式输出含BEGIN PRIVATE KEY为PKCS#8含BEGIN RSA PRIVATE KEY为PKCS#1 openssl rsa -in rsa_private_key.pem -text -noout # 若为PKCS#1转为PKCS#8易宝要求格式 openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out rsa_private_key_pkcs8.pem # 将新文件重命名为源码期望的文件名 mv rsa_private_key_pkcs8.pem rsa_private_key.pem玄学经验Windows下用记事本保存的.pem文件可能含BOM头导致RSAUtil读取时首行乱码签名失败。务必用VS Code或Notepad以UTF-8无BOM格式保存。4. 避坑五个让开发者凌晨三点还在查日志的真实问题4.1 现象下单跳转后显示“系统繁忙请稍后再试”原因易宝网关返回HTTP 500但源码未捕获RestTemplate异常前端只看到空白页。深层原因是gatewayUrl末尾多了斜杠如https://test.yeepay.com/易宝网关拒绝该URL。解决检查yee.pay.gateway-url配置严格去掉末尾斜杠。源码中PayService.buildSignedParams()拼接URL时已自带/index.do多一个/会导致//index.do。4.2 现象回调验签始终失败RSAUtil.verify()返回false原因notifyMap解析时未按字典序排序就拼接验签串。易宝验签要求参数顺序与下单签名完全一致而HashMap无序。解决parseNotifyBody()方法必须返回TreeMap自动排序private TreeMapString, String parseNotifyBody(String body) { TreeMapString, String map new TreeMap(); Arrays.stream(body.split()) .filter(s - s.contains()) .forEach(pair - { String[] kv pair.split(, 2); // 限制分割次数防value含号 if (kv.length 2) { map.put(kv[0], URLDecoder.decode(kv[1], StandardCharsets.UTF_8)); } }); return map; }4.3 现象本地IDE运行正常打包成jar后启动报NullPointerException私钥加载失败原因RSAUtil.loadPrivateKey()中FileInputStream无法读取jar包内资源。源码正确做法是getClass().getResourceAsStream()但有人误改成new FileInputStream(rsa_private_key.pem)。解决确认RSAUtil.java中私钥加载代码为InputStream is RSAUtil.class.getClassLoader().getResourceAsStream(privateKeyPath.replace(classpath:, )); if (is null) { throw new RuntimeException(私钥文件未找到: privateKeyPath); }4.4 现象支付成功后回调返回success但订单状态未更新原因NotifyController.handleNotify()中return success被Spring Boot的ResponseBody拦截转成JSON响应{success:true}而易宝只认纯文本success。解决方法返回类型必须为String且不能加ResponseBodyPostMapping默认有同时确保Content-Type为text/plainPostMapping(value /notify, consumes MediaType.ALL_VALUE, produces MediaType.TEXT_PLAIN_VALUE) public String handleNotify(HttpServletRequest request) { ... }4.5 现象沙箱支付页显示“订单金额格式错误”原因orderAmount字段传了100.00带小数点但易宝沙箱要求整数分单位如100元传10000。解决PayRequest.setOrderAmount()必须传Long类型分值// 前端传100.00元后端转为分 request.setOrderAmount(Math.round(Double.parseDouble(frontAmount) * 100));源码中PayRequest.orderAmount字段类型为Long若前端JSON传字符串100.00Jackson会反序列化失败。必须前端传数字或后端加JsonDeserialize(using StringToLongDeserializer.class)。5. 实战调试技巧三招定位90%的支付链路问题5.1 日志埋点黄金位置在签名前后打快照源码已在关键节点添加DEBUG日志但你需要知道在哪看、怎么看。打开logback-spring.xml确保com.example.epay.util.RSAUtil日志级别为DEBUGlogger namecom.example.epay.util.RSAUtil levelDEBUG/然后关注这两处日志下单签名前RSAUtil.java第45行log.debug(待签名字符串: {}, signString);这是你提交给易宝的原始参数串复制出来用在线工具如https://www.sojson.com/rsa/手动验签确认私钥是否正确。回调验签前RSAUtil.java第82行log.debug(验签字符串: {}, verifyString);这是易宝回调参数拼接后的字符串与下单签名串必须完全一致除sign字段外。若不一致说明参数解析有误如URL解码失败、空格未处理。血泪经验某次发现verifyString比signString多一个\r\n追查发现BufferedReader.readLine()丢弃了换行符但notifyMap中value值末尾被意外拼入\r。解决方案是在parseNotifyBody()中对每个value调用.trim()。5.2 沙箱环境抓包用Chrome DevTools看真实请求易宝沙箱页面是HTTPS但你可以用Chrome的Network面板看跳转过程前端调用/create-order后拿到redirectUrl在Chrome地址栏粘贴该URL按F12打开DevTools切到Network标签勾选“Preserve log”回车访问观察index.do请求的Query参数重点核对sign字段长度是否为344字符SHA256withRSA Base64编码后固定长度若为172字符则是MD5签名配置错误。若sign为空说明PayService.buildSignedParams()未执行到签名步骤大概率是merchantNo为空或privateKeyPath加载失败。5.3 回调模拟用curl命令绕过易宝直测你的Notify接口不必等易宝回调用curl模拟真实请求# 构造易宝回调Body从日志中复制verifyString再拼上sign curl -X POST http://localhost:8080/epay-demo/notify \ -H Content-Type: text/plain \ -d result1orderNoORD1712345678901orderAmount10000currency156payType1001signMIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCAMIID8jCCA9qgAwIBAgIIUoLmOvQAAAAAMIIDvTCCA7WgAwIBAgIIVt1n4h4AAAACMA0GCSqGSIb3DQEBCwUAMIGLMQswCQYDVQQGEwJDTjELMAkGA1UECBMCUE4xCzAJBgNVBAcTAlBITDELMAkGA1UEChMCUE4xCzAJBgNVBAsTAlBITDELMAkGA1UEAxMCUE4xFTATBgNVBC0TDFBTUFJPTV9DQTEiMCAGCSqGSIb3DQEJARYTYWRtaW5AYWRtaW4uYWRtaW4uYWRtaW4wHhcNMjIwMTAxMDAwMDAwWhcNMzIwMTAxMDAwMDAwWjCBizELMAkGA1UEBhMCQ04xCzAJBgNVBAgTAlBOMQswCQYDVQQHEwJQTjELMAkGA1UEChMCUE4xCzAJBgNVBAsTAlBOMQswCQYDVQQDEwJQTjEVMBMGA1UELRMMUFNQUk9NX0NBMSIwIAYJKoZIhvcNAQkBFhNhZG1pbkBhZG1pbi5hZG1pbi5hZG1pbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL...[省略] # 观察返回值是否为success并检查控制台日志后悔药如果curl返回fail立刻检查日志中验签字符串是否与你构造的verifyString完全一致包括空格、换行、大小写。90%的验签失败源于字符串不一致而非密钥错误。从那以后我每次部署新环境都强制走一遍这三步① 用curl模拟回调打桩② 把日志中的signString和verifyString复制到文本对比工具逐字符比对③ 用OpenSSL命令行对signString重新签名看Base64结果是否与日志中sign字段一致。这三步做完支付链路的不确定性就从“玄学”变成了“可计算”。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

微信小程序源码从跑通到改造:目录结构与避坑全流程

微信小程序源码从跑通到改造:目录结构与避坑全流程

简介:一套包含100个微信小程序源码的实战资料包,面向小程序入门开发者、前端学习者及需要项目灵感的工程师。源码覆盖了从基础语法到高级能力的完整链路:包括页面生命周期(onLoad、onShow、onHide)的调用时机、基于dat…

2026/10/15 17:22:35 阅读更多 →
ArchWSL 使用指南:基于 wsldl 在 Windows 上安装与多实例管理 Arch Linux(WSL 发行版)

ArchWSL 使用指南:基于 wsldl 在 Windows 上安装与多实例管理 Arch Linux(WSL 发行版)

开发者工具操作系统 【免费下载链接】ArchWSL ArchLinux based WSL Distribution. Supports multiple install. 项目地址: https://gitcode.com/gh_mirrors/ar/ArchWSL 点击查看 免费下载 ArchWSL 是一个基于 wsldl 与 README.md 为主体,结合 Makefile、…

2026/10/15 17:22:35 阅读更多 →
cefau3:AutoIt嵌入Chromium的轻量工业级方案

cefau3:AutoIt嵌入Chromium的轻量工业级方案

简介:cefau3是专为AutoIt3开发者打造的Chromium嵌入式框架封装库,面向Windows桌面自动化脚本编写者,解决传统AutoIt缺乏现代化Web界面能力的痛点,适用于开发带内嵌浏览器的GUI工具、网页交互型控制面板、本地化Web服务前端等场景。…

2026/10/16 19:49:34 阅读更多 →

最新新闻

MATLAB EMD工具箱实战:从经验模态分解到HHT时频分析

MATLAB EMD工具箱实战:从经验模态分解到HHT时频分析

简介:Matlab EMD经验模态分解工具箱,面向信号处理、故障诊断与振动分析领域的研究人员与工程师,用于对非线性、非平稳信号做自适应分解并提取有物理意义的本征模态函数分量。压缩包共38个文件,其中10个m脚本承担核心算法与在线/局…

2026/10/16 19:42:22 阅读更多 →
教务管理系统源码解析:技术选型、数据库设计与二次开发避坑指南

教务管理系统源码解析:技术选型、数据库设计与二次开发避坑指南

简介:这是一套面向计算机专业学生与Java Web开发者的教务管理系统完整源码,适合作为课程设计、毕业设计或企业级项目练手参考,帮助理解教育管理信息化的业务逻辑与技术落地。资源包共746个文件,约5.46MB,涵盖html、css…

2026/10/16 19:42:22 阅读更多 →
E7-2 AXOS everyPON 数据服务实施:从订户模板到策略映射实战指南

E7-2 AXOS everyPON 数据服务实施:从订户模板到策略映射实战指南

简介:Calix E7-2 AXOS everyPON数据服务实施课程的官方介绍文档,面向负责二层数据服务部署的技术员、网络运营者、规划师与工程师。资源包内仅含1个PDF文件,容量74KB,以精炼篇幅浓缩了4小时讲师授课的核心内容:E7-2 AX…

2026/10/16 19:42:22 阅读更多 →
gemma-skills新手必读:Google官方两大技能如何让AI Agent具备Gemma开发与微调能力

gemma-skills新手必读:Google官方两大技能如何让AI Agent具备Gemma开发与微调能力

【免费下载链接】gemma-skills Skills for the Gemma and model/agent interactions 项目地址: https://gitcode.com/gh_mirrors/ge/gemma-skills 点击查看 免费下载 如果你是刚接触 Gemma 模型的新手,gemma-skills 会是一个绝佳的起点。这是 Google 官…

2026/10/16 19:41:22 阅读更多 →
DeepSeek-V3-W4A8-Pruing权重文件怎么读?safetensors三分片结构与index索引完全解析

DeepSeek-V3-W4A8-Pruing权重文件怎么读?safetensors三分片结构与index索引完全解析

【免费下载链接】DeepSeek-V3-W4A8-Pruing 项目地址: https://ai.gitcode.com/hf_mirrors/vllm-ascend/DeepSeek-V3-W4A8-Pruing 点击查看 免费下载 初次接触 DeepSeek-V3-W4A8-Pruing 模型仓库时,面对 3 个 safetensors 分片文件、一个 578KB 的 index…

2026/10/16 19:41:22 阅读更多 →
整车控制器开发源代码:模块划分、状态机设计与工程落地

整车控制器开发源代码:模块划分、状态机设计与工程落地

简介:整车控制器(VCU)开发源代码包主要面向电动汽车与混合动力汽车控制系统的开发者、算法工程师及嵌入式软件研究者,用于解决VCU底层驱动、控制策略、状态机管理与故障处理等核心开发问题。包内文件共88个,以C源文件、…

2026/10/16 19:40:21 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →