在 Medusa 中接入支付宝、微信:移动端支付从 0 到上线的完整路径

发布时间:2026/9/1 11:34:22

在 Medusa 中接入支付宝、微信:移动端支付从 0 到上线的完整路径
在 Medusa 中接入支付宝、微信移动端支付从 0 到上线的完整路径【免费下载链接】medusaThe worlds most flexible commerce platform for agents and developers项目地址: https://gitcode.com/GitHub_Trending/me/medusa想给 Medusa 开源电商接上支付宝、微信这类移动端支付这篇文章按一次真实集成的顺序讲Medusa 的支付模块怎么分层、照 Stripe 的现成骨架改出支付宝 Provider 只需两步、微信和支付宝在签名与回调上的实际差异、沙箱里如何跑通一笔订单最后是上线前该逐项打勾的清单。 支付模块分层payment 管账本providers 管渠道Medusa 把支付拆成两层理解这一点后面就顺了。一层是支付模块packages/modules/payment/它是账本负责支付会话一次向渠道发起的收款过程、支付记录、捕获和退款这些实体以及它们的数据库模型和服务逻辑。它不关心你收的是卡还是扫码只关心这笔钱的状态是什么。另一层是提供商目录packages/modules/providers/里面每个子包是一个具体渠道的实现比如 Stripe 参考实现在 packages/modules/providers/payment-stripe/。Provider 只负责跟渠道的 API 打交道创建收款单、验签回调、发起退款。两层之间靠注册机制接起来。payment 模块启动时有一个 Provider 加载器源码在 payment 模块的src/loaders/providers.ts它做两件事把你配置里的 Provider 类实例化后挂进依赖容器再把它写进数据库并标记为启用——所以新 Provider 一注册后台管理界面里就会自动出现不需要写任何管理端代码。 照着 Stripe 改出支付宝 Provider复用骨架 注册 2 步2.1 复用 Stripe 的骨架打开 Stripe 的实现你会发现结构很干净core/stripe-base.ts是一个抽象基类把initiatePayment、getPaymentStatus、refundPayment、validateWebhook这些接口方法都实现了具体 Provider 类比如services/stripe-provider.ts只有十几行主要是声明自己的标识符。做支付宝就照这个模式复制新建payment-alipay目录建一个alipay-base.ts基类继承框架的AbstractPaymentProvider把 Stripe 基类里的方法名一一对应替换initiatePayment里调支付宝的创建收款接口沙箱期可以先返回测试用的支付 URLvalidateWebhook里换成支付宝的 RSA 验签refundPayment里调退款接口金额注意按最小货币单位换算——支付宝接口用的是分的概念Stripe 基类里专门有个get-smallest-unit工具函数干这个事可以借鉴它的思路。2.2 注册 2 步配置文件 后台启用代码放好后接入只做两步。第一步在项目配置文件里声明 Provider// medusa-config.jspayment 模块配置节选 modules: [ { key: payment, resolve: medusajs/payment, options: { providers: [ { resolve: ./src/providers/payment-alipay, id: alipay }, ], }, }, ]第二步重启服务后到后台 Settings 里把 Alipay 这个 Provider 启用。加载器会自动完成数据库登记订单里就能选它了。注意一个细节id字段用来区分同一渠道的多个实例比如支付宝个人版和企业版可以注册成alipay和alipay_biz两个实例互不干扰。⚖️ 微信支付 vs 支付宝回调、签名、退款差在哪两个渠道接入骨架相同差别在四个地方对照着做即可维度支付宝微信支付签名体系RSA2 非对称配置 AppID 应用私钥 支付宝公钥APIv3 用平台证书 API 密钥证书需要定期轮换回调验签拿响应里的sign字段用支付宝公钥验要用Wechatpay-Signature等请求头现场计算验签且回调报文是 AES 加密的要先解密再读退款调退款接口按原交易号退支持部分退款退款走独立接口且异步提交后还要等微信的退款结果通知才算完成多端场景一套接口 场景参数区分App / H5 / 小程序JSAPI、小程序、App、H5 是四个独立接口openid这类前置参数各自不同其中微信回调先验签、再解密、后读内容这三步最容易踩坑Stripe 基类里validateWebhook是单个方法你可以把三步都放进去但要保证验签失败时直接丢弃、不返回成功否则会被恶意重放。 沙箱下单到对账把一笔支付真正跑通跑通的三个环节① 沙箱下单。支付宝和微信都提供沙箱支付宝给测试买家账号和测试 AppID微信给沙箱商户号。先在 Medusa 里下一单确认选中的支付方式是alipay下单接口能返回 Provider 给的支付数据一个跳转 URL 或拉起参数就算通了第一步。② 异步回调。用户在沙箱里付完渠道服务器会 POST 到你的 webhook 地址。建议本地先用 ngrok 之类的内网穿透把回调指到开发机验证三件事validateWebhook验签通过、支付会话状态从 pending 变成 succeeded、订单状态跟着变成 paid。回调查不到时优先看 Provider 日志里的验签结果而不是怀疑网络。③ 主动对账。回调可能迟到或丢失所以上线前要让定时查渠道侧交易状态这条兜底路径也工作——对应 Provider 的getPaymentStatus方法。跑一批沙箱订单故意漏掉其中一笔的回调确认主动查询能把状态补齐这笔支付才算真正跑通。✅ 上线前的安全与体验清单webhook 验签开启且失败时返回非 2xx杜绝伪造回调回调处理做幂等同一笔支付重复通知时直接返回成功不重复落状态私钥、APIv3 密钥只放环境变量或密钥管理不进代码仓库微信 API 平台证书轮换流程已演练建议每 30 天内检查到期时间主动查询兜底任务已部署覆盖回调丢失场景支付失败时前端有明确的错误提示文案而不是裸的报错码退款走原渠道原交易号退款结果同样依赖异步通知时已处理上线后首周盯住两件事支付成功率、回调到达延迟建议先在沙箱把上面的清单全部打勾再切一个低客单价的真实商品做一笔小金额生产验证最后全量放开。移动端支付的核心不在接上而在回调链路每一环都可验证——把这条链路在沙箱里跑透生产环境要担心的就只剩下渠道侧的稳定性了。【免费下载链接】medusaThe worlds most flexible commerce platform for agents and developers项目地址: https://gitcode.com/GitHub_Trending/me/medusa创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

AI Skill实战:构建可复用的视频转场特效生成技能包

AI Skill实战:构建可复用的视频转场特效生成技能包

2026/9/1 11:24:22

这次我们来看一个偏实用的方向:把“AI 生成视频转场特效”的方法,封装成一套可以直接复用的AI Skill。Skill 近几年在 AI 编程和 Agent 工作流里出现频率很高,Cursor、Claude Code、OpenCode 这类工具都在推“技能包”的概念。它的核心价值不…

【云服务器】在Linux CentOS 7上快速搭建我的世界 Minecraft 服务器搭建,并实现远程联机,详细教程

【云服务器】在Linux CentOS 7上快速搭建我的世界 Minecraft 服务器搭建,并实现远程联机,详细教程

2026/9/1 11:24:22

【云服务器】在Linux CentOS 7上快速搭建我的世界 Minecraft 服务器搭建,详细详细教程一、 服务器介绍二、下载 Minecraft 服务端三、安装 JDK 21四、搭建服务器五、本地测试连接六、添加服务,并设置开机自启动前言: 推荐使用云服务器部署&am…

VINS-Fusion从解压到跑通:多传感器融合SLAM实操指南与避坑总结

VINS-Fusion从解压到跑通:多传感器融合SLAM实操指南与避坑总结

2026/9/1 11:24:22

简介:VINS-Fusion.zip是一套面向SLAM研究与开发者的视觉惯性导航融合算法资源,聚焦摄像头与IMU数据紧耦合,覆盖初始化、视觉/惯性里程计、数据融合、闭环检测与重定位等完整流程,可应用于机器人、无人机等无人系统的实时定位与建图…

PEX8311 PCIe开发板资料包详解:从Local Bus到DMA调试

PEX8311 PCIe开发板资料包详解:从Local Bus到DMA调试

2026/9/1 12:24:24

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

告别VLOOKUP多条件查找困境:用陈西表格实现智能数据筛选

告别VLOOKUP多条件查找困境:用陈西表格实现智能数据筛选

2026/9/1 12:24:24

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

60%键盘玩CF找不到波浪键?四种方案彻底解决小地图快捷键问题

60%键盘玩CF找不到波浪键?四种方案彻底解决小地图快捷键问题

2026/9/1 12:24:24

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

为DeepSeek Web界面打造拟物化旋钮控件:从交互设计到Chrome扩展实现

为DeepSeek Web界面打造拟物化旋钮控件:从交互设计到Chrome扩展实现

2026/9/1 12:24:24

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

.NET 8依赖注入实战:生命周期管理、性能优化与高级模式解析

.NET 8依赖注入实战:生命周期管理、性能优化与高级模式解析

2026/9/1 12:24:24

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

上行SCMA中SD-MPA检测算法:原理、实现与复杂度优化

上行SCMA中SD-MPA检测算法:原理、实现与复杂度优化

2026/9/1 12:14:24

简介:资源围绕SCMA系统SD-MPA软判决消息传递检测算法展开,是一套用于理解多用户稀疏编码接入与瑞利信道下接收机设计的MATLAB仿真代码。适合无线通信方向学生、研究人员或对SCMA检测算法感兴趣的开发者,可用于复现迭代检测流程并分析误码性能…

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

2026/9/1 1:53:39

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

2026/9/1 9:55:14

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

2026/8/31 17:18:46

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

远程协作的工作台整理

远程协作的工作台整理

2026/9/1 0:03:36

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/1 0:03:36

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/1 0:03:36

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

远程协作的工作台整理

远程协作的工作台整理

2026/9/1 0:03:36

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/1 0:03:36

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/1 0:03:36

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…