程序员茄子
全部
编程
代码
资讯
案例
综合
联系我们
软件定制开发/软件按需定制 技术文章
php
mysql
shell
go
vue
css
api接口对接
支付接口对接
微信分账三套接口族:同一笔订单第二笔被拒,重试换单号会重复出款
代码
微信分账三套接口族:同一笔订单第二笔被拒,重试换单号会重复出款
2026-11-15 00:04:51
同一笔订单第二笔分账被拒、超时重试换了分账单号导致重复出款,根因是微信分账有三套接口族且互斥规则不同。本文对比 V2 单次/多次/完结、V3 收付通 finish 布尔、B2b 零售三条线:路径与签名、接收方上限 50/50/45、比例 29%/30%、单次成功即封单、出资方何时可当接收方,以及 SYSTEMERROR 与 FREQUENCY_LIMITED 必须原单号重试的依据。
profit_sharing
微信支付
分账
分账接口
接口对接
APIv3
支付对接
pt-table-sync 的三个硬默认:目标是从库直接退出、--print 不检查子表、--replicate 要求 STATEMENT
编程
pt-table-sync 的三个硬默认:目标是从库直接退出、--print 不检查子表、--replicate 要求 STATEMENT
2026-11-15 00:04:30
跑 pt-table-sync 前必须先确认的三件事:目标 DSN 是从库时默认直接退出(check-replica=yes),--print 不检查子表所以中看不中用,ON DELETE CASCADE 会让 REPLACE 级联删子表行;--sync-to-source/--replicate 还要求 STATEMENT 格式与会话 SUPER 权限。附三种运行形态、修复方向选择、算法失败面与退出码 2 的读法。
pt-table-sync
Percona
Toolkit
MySQL
主从复制
数据一致性
pg_locks 一行不等于一个锁:自连接查阻塞链的四个失效点
编程
pg_locks 一行不等于一个锁:自连接查阻塞链的四个失效点
2026-11-15 00:04:22
pg_locks 的行数对不上锁数,原因不只行锁不落视图:fastpath 行逐 backend 采集、跨库 OID 会错 join、prepared transaction 的 pid 为 null。给出按 granted 判断等待、pg_blocking_pids 展开阻塞边、跨库安全过滤与 prepared xact 关联的可复制 SQL,以及 log_lock_waits 默认 off 时的排查顺序。
pg_locks
PostgreSQL
锁等待
数据库
运维
SQL
hasInjectionContext() 只看 currentInstance 与 currentApp:四个失效边界与自查判据
编程
hasInjectionContext() 只看 currentInstance 与 currentApp:四个失效边界与自查判据
2026-11-15 00:04:18
Vue 3.3 的 hasInjectionContext() 只检查 getCurrentInstance() || currentApp,不看 provides 里有没有 key。从源码拆开四个边界:await 之后返回 false、app.runWithContext() 里返回 true 但 provide() 无效、函数式组件渲染期 provide 同样 warn、key 缺失时 inject 仍报 not found,并给出库作者应有的守卫写法与 3.3 以下兼容判据。
hasInjectionContext
Vue
3.3
inject
provide
前端
源码分析
platformkf 报 1600001「该工单已处理」:先查详情再动手,别拿 Operate 当探针
编程
platformkf 报 1600001「该工单已处理」:先查详情再动手,别拿 Operate 当探针
2026-11-15 00:04:05
微信小店客诉工单 OperateMchTicket 的两个错误码里,1600001 只对应一个状态事实:工单已进 ticket_state=2。文中给出去重判据——先 GetMchTicketDetail 看 merchant_operate_time、merchant_operate.urls、platform_review_result,再决定是否提交;并记下几处容易踩的细节:description 是带 <a href> 的 HTML 片段、字段表把 description/confer_time 标成必填但实际按 is_must_* 判断、getmchticketlist 用 start 偏移补漏单会错位、官方示例 URL 被拼了两遍。
platformkf
微信小店
客诉工单
接口对接
PHP
微信开放平台
WireMock 3.13 回放支付接口:录下来的 stub 只匹配它自己,35 秒延迟正好复现「已批准但调用方超时」
编程
WireMock 3.13 回放支付接口:录下来的 stub 只匹配它自己,35 秒延迟正好复现「已批准但调用方超时」
2026-11-14 21:32:15
对接第三方支付/物流接口,回归测试不该每次打真网关。用 WireMock 3.13.2 代理录制、state scenario 造 authorize→capture、fixedDelay 复现批准后超时、serveEventListeners 补 webhook,并说明回放为何不能配 --proxy-all、录制 stub 匹配过严和 token 落库风险怎么处理。
WireMock
接口对接
测试
Docker
OAuth2 令牌刷新竞态:8 个 worker 同抢一个 refresh token,Salesforce 90 秒后复用就吊销整条连接
编程
OAuth2 令牌刷新竞态:8 个 worker 同抢一个 refresh token,Salesforce 90 秒后复用就吊销整条连接
2026-11-14 21:31:21
多个队列 worker 同时刷新同一个 OAuth refresh token,轮换型 provider 会把后到的请求当成令牌复用:QuickBooks 报 invalid_grant,Salesforce 90 秒后复用直接吊销整条连接。给出五家 provider 的实测对照、竞态时间线,以及 Cache::lock + 版本号 compare-and-swap 的落地代码。
OAuth2
接口对接
Laravel
Redis
并发
Airwallex webhook 验签实操:签名是 timestamp + raw body 的 HMAC,SDK 没有现成 helper
案例
Airwallex webhook 验签实操:签名是 timestamp + raw body 的 HMAC,SDK 没有现成 helper
2026-11-14 21:05:48
Airwallex webhook 签名是 HMAC-SHA256(secret, x-timestamp + raw body) 的 hex,不是 Standard Webhooks 方案,SDK 也不带验签 helper。本文给出 Node 与 PHP 实现,讲清为什么必须用原始 body、时间戳是毫秒、常数时间比较、重放窗口自选与事件去重。
支付
Webhook
接口对接
Composer 2.9 默认安全阻断导致 CI 更新失败:定位与处置
编程
Composer 2.9 默认安全阻断导致 CI 更新失败:定位与处置
2026-11-14 21:05:40
Composer 2.9 起 audit.block-insecure 默认开启,CI 里 composer update 会因已知安全公告直接失败。本文说明哪些设置会拦、如何用 --no-security-blocking 只关阻断保留审计、audit.ignore 收窄到具体 CVE,以及 2.9.2 修的局部更新失败。
PHP
Composer
依赖管理
Bash 5.3:用 ${ cmd; } 在循环里取字符串,不再 fork 子进程
代码
Bash 5.3:用 ${ cmd; } 在循环里取字符串,不再 fork 子进程
2026-11-14 21:05:33
Bash 5.3 新增 ${ cmd; } 与 ${| cmd; } 两种在当前 shell 执行的命令替换,不再 fork 子进程,变量改动也不会丢。本文给出两种形式的差别、循环累加示例、副作用与版本检测写法,以及 GLOBSORT、read -E 的实用点。
Shell
Bash
脚本
K8s 1.35 原地扩缩容 GA:改 requests/limits 不用重建 Pod,但内存缩容仍可能要重启
编程
K8s 1.35 原地扩缩容 GA:改 requests/limits 不用重建 Pod,但内存缩容仍可能要重启
2026-11-14 21:05:25
Kubernetes 1.35 把 Pod 原地扩缩容做到 GA,改 requests/limits 不再重建 Pod。但内存缩容受 resizePolicy 与容器当前用量限制,可能仍需重启;本文给出 resizePolicy 写法、用 generation 与 observedGeneration 确认 kubelet 已处理,以及与配额的关系。
Kubernetes
运维
容器
TypeScript 7.0 落地:tsc 快了 10 倍,模板类型检查还得留在 tsc6
编程
TypeScript 7.0 落地:tsc 快了 10 倍,模板类型检查还得留在 tsc6
2026-11-14 21:03:55
TypeScript 7.0 用 Go 重写后构建快 8-12 倍,但没有稳定编程 API,Vue/Svelte/Astro 的模板类型检查仍只能由 6.0 驱动。本文给出 typescript 与 @typescript/typescript6 并存配置、--checkers 等并行参数,以及先非阻塞再翻转的 CI 灰度做法。
TypeScript
前端
构建
Redis 8.4 单 key 乐观锁:用 SET IFEQ/IFDEQ 替代 CAS Lua
编程
Redis 8.4 单 key 乐观锁:用 SET IFEQ/IFDEQ 替代 CAS Lua
2026-11-14 21:03:45
Redis 8.4 把 compare-and-set 做进 SET,IFEQ/IFNE 比原值、IFDEQ/IFDNE 比 XXH3 摘要,配合 DIGEST、DELEX、MSETEX 可以不再为单 key CAS 写 Lua。本文给出命令与返回值语义,说明适用场景,以及从 Lua 迁移时把 nil 当成功这一常见漏判。
Redis
并发
缓存
WAIT FOR LSN:会话级的备库 read-your-writes 与它的几个坑
编程
WAIT FOR LSN:会话级的备库 read-your-writes 与它的几个坑
2026-11-14 21:03:39
备库 read-your-writes 常用 WAIT FOR LSN:主库写完后取 LSN,备库等到该位置回放再读。本文强调它是会话级等待而非全局一致,给出 psql 写法、statement_timeout 兜底、隔离级别导致的「等了却读不到」,以及用 pg_stat_recovery 判断回放是否在前进。
PostgreSQL
复制
排障
PostgreSQL 19 的 REPACK:一条命令顶掉 VACUUM FULL、CLUSTER 和 pg_repack
编程
PostgreSQL 19 的 REPACK:一条命令顶掉 VACUUM FULL、CLUSTER 和 pg_repack
2026-11-14 21:02:39
PostgreSQL 19 把 VACUUM FULL、CLUSTER 与 pg_repack 合并成一条 REPACK 命令,REPACK (CONCURRENTLY) 不再拿排他锁。本文按重建期与切换期拆解它如何用复制 slot 同步增量,算清 WAL、slot 池与磁盘双份三笔代价,并给出上线前检查项。
PostgreSQL
运维
数据库
encoding/json/v2 转正:默认拒绝重复 key 与非法 UTF-8,旧代码怎么过渡
编程
encoding/json/v2 转正:默认拒绝重复 key 与非法 UTF-8,旧代码怎么过渡
2026-11-14 21:02:32
encoding/json/v2 转正后,v1 由新实现支撑:非法 UTF-8 与重复 key 默认被拒,错误文本也会变。本文给出用 Options 在调用点固定 v1 语义、GOEXPERIMENT=nojsonv2 临时回退,以及 inline 改 embed、string tag 与 jsontext 数值访问器返回 error 的迁移清单。
Go
JSON
迁移
Go 1.27 泛型方法:能写在类型上,但仍然进不了接口
编程
Go 1.27 泛型方法:能写在类型上,但仍然进不了接口
2026-11-14 21:01:42
Go 1.27 允许方法声明自己的类型参数,math/rand/v2 的 (*Rand).N 就是例子。但接口方法不能带类型参数,泛型方法也无法实现接口方法。本文给出能编译与必然报错的写法,以及函数类型推断泛化后的实际用法。
Go
泛型
编译器
短信接口返回 OK 不等于送达:回执 DELIVRD 才算成功,72 小时没回执就是未知状态
编程
短信接口返回 OK 不等于送达:回执 DELIVRD 才算成功,72 小时没回执就是未知状态
2026-11-14 20:01:50
SendSms 返回 Code=OK 只是平台受理,送达要看运营商回执。梳理 SmsReport 报文与字段、必须返回 {"code":0} 否则重推三次、GET 连通性校验要 700ms 内应答、DELIVRD/UNDELIV/REJECTD/EXPIRED 等状态码含义、发送成功但用户被终端拦截的情形、超过 72 小时显示未知状态,以及批量全失败时先查签名实名报备而非终端。
短信
接口对接
运维
PHP
快递100 订阅推送接入:salt 传空串也要验签,回调不返回 200 就重试三次后丢弃
编程
快递100 订阅推送接入:salt 传空串也要验签,回调不返回 200 就重试三次后丢弃
2026-11-14 20:00:59
对接快递100 订阅推送时最常踩的几处:订阅 param 的必填与可选字段、200/501/701 等返回码怎么读、推送 sign 是 md5(param+salt) 转 32 位大写且 salt 空串也会带签名、回调必须回 {"result":true,"returnCode":"200"}、失败 30 分钟后重试三次即丢弃、3 天无记录与 60 天无变化的 abort 分支怎么处理。附 PHP/Go 验签示例。
快递100
物流
接口对接
PHP
Go
数电发票接口报错定位:先分层归因,再谈重试(额度、税率、会话态怎么分)
代码
数电发票接口报错定位:先分层归因,再谈重试(额度、税率、会话态怎么分)
2026-11-14 09:02:03
数电开票报错信息都长得像「操作失败」,但处置动作完全不同:可能要找税务局调额度、要改税率与税收分类编码、要重走开票员登录与实人认证,或者只是等 30 秒重试。这篇给出四层归因框架,附易宝会话态错误码(1105/1209/1203/1211/1017)、微信电子发票冲红的错误码表,以及「受理≠开票成功」和幂等键的落法。
发票
接口对接
排障
支付
微信商家转账改版排障:旧接口报 NO_AUTH、1001,24 小时未确认单怎么收尾
代码
微信商家转账改版排障:旧接口报 NO_AUTH、1001,24 小时未确认单怎么收尾
2026-11-14 09:01:18
2025-01-15 起微信「商家转账到零钱」升级为新版「商家转账」,老商户调旧接口会拿到 1001/NO_AUTH。这篇按接口 URL 先判断你在哪一代,再拆新版发起转账的必填字段、8 个单据状态与终态判据,以及 24 小时未确认单、IP 白名单 268491067、旧版 200 元限额 TRANSFER_QUOTA_EXCEED 的处置方式,最后给出从「直接打款」切成「用户确认收款」的改造清单。
微信支付
商家转账
支付
提现
排障
防重放窗口:8192 − 64 = 8128,内核却接受 8129 个 counter
编程
防重放窗口:8192 − 64 = 8128,内核却接受 8129 个 counter
2026-11-14 00:04:50
防重放窗口的大小不是抄一个数字:WireGuard 内核里它由 8192 位位图减一个机器字得出,64 位机算出 8128、32 位机算出 8160,而 counter 的 +1 偏移又让实际接受区间变成 W+1 个值。附三种合法包被误判重放的原因、内核先验签后置位的顺序,以及能直接抄的边界自测。
重放窗口
WireGuard
IPsec
防重放
位图
Go
PHP 8.6 弃用了一批名字:let、namespace、in/out,以及 finally 里的 return
编程
PHP 8.6 弃用了一批名字:let、namespace、in/out,以及 finally 里的 return
2026-11-14 00:04:38
PHP 8.6(2026-11-19 发布)在语言层弃用了一批标识符命名:let、is、in/out/inout 不能再当类名函数名,namespace 不能作类常量名,readonly 不能当函数名,finally 里 return 也提示弃用。附 RFC 扫描数据、精确报错文案、list() 提案 23:23 未通过的判断,以及 grep/ast-grep 检测命令。
语法特性
PHP
8.6
弃用
关键字保留
版本升级
改了 replica_parallel_workers 却没生效:MySQL 多线程复制参数的生效时机、互斥与边界
编程
改了 replica_parallel_workers 却没生效:MySQL 多线程复制参数的生效时机、互斥与边界
2026-11-14 00:04:31
SET GLOBAL 改了 replica_parallel_workers 却没有反应、把它设成 1 之后另两个参数又不生效,问题都在生效时机与互斥关系上。逐条对照 workers、checkpoint_group、checkpoint_period 的默认值、范围与触发条件,给出按 channel 数相乘的线程数核算 SQL,以及 gap、STOP、RESET 的边界和版本移除导致的启动失败。
MTS
MySQL
并行复制
复制参数
数据库运维
大家都在搜索什么?
devops
易支付
一个官网+多少钱
统一接受回调
统一回调
python
sub
node
宝塔日志
mysql
shell
ElasticSearch
css
vue
api接口对接
2025
支付接口对接
go
php
php回调
上一页
1
2
3
4
5
6
7
…
353
下一页
共 353 页
到第
页
确定