从部署到第一笔支付
本文介绍系统部署成功后,如何通过一系列必要配置,最终跑通第一笔支付。
前置条件:
- 系统已按项目运行或一键部署完成部署,健康检查
{"status":"UP"}通过 - 已导入初始化 SQL,可以使用开发环境超级管理员账号登录运营端
- 已注册支付宝开放平台账号(沙箱验证阶段使用其沙箱环境,无需企业认证)
全程约需 30~60 分钟,各步耗时见下表。
上线流程总览
整个上线过程分为两个阶段:运营端配置让系统具备收款条件,商户端配置完成对接签名并验证支付。
| 步骤 | 操作端 | 菜单入口 | 耗时 |
|---|---|---|---|
| 1. 账号安全 | 运营端 | 系统管理 → 用户管理 | 5 分钟 |
| 2. 端点配置 | 运营端 | 系统管理 → 系统配置 → 平台配置 | 5 分钟 |
| 3. 沙箱环境 | 运营端 | 接入配置 → 支付产品配置 | 2 分钟 |
| 4. 创建商户 | 运营端 | 商户管理 → 商户列表 | 5 分钟 |
| 5. 开通通道商户 | 运营端 | 商户工作台 → 通道商户 | 5 分钟 |
| 6. 配置通道密钥 | 运营端 | 通道商户 → 应用管理 | 15 分钟(含支付宝侧操作) |
| 7. 对接签名配置 | 商户端 | 商户中心 → 业务配置 → 对接配置 | 5 分钟 |
| 8. 第一笔支付 | 商户端 | 开发调试 → 支付调试(普通) | 5 分钟 |
逐项勾选清单见上线检查清单。
第一步:首次登录与账号安全
使用部署时初始化的超级管理员账号登录运营端。开发环境的默认账号见项目运行 - 默认登录账号(账号 bootx,仅 dev 环境可登录运营端)。
超级管理员仅限开发环境
超级管理员由配置项 daxpay.platform.starter.auth.enable-admin 控制,dev 默认开启,prod 强制关闭。生产环境请在完成本节操作后确认该配置为 false,详见配置说明 - 超级管理员。
建议立即完成:使用超管在「系统管理 → 权限 → 用户管理」中创建正式的运营管理员账号,分配角色与菜单权限后,日常使用该账号操作。用户管理的详细操作见用户管理。
第二步:配置平台端点
菜单路径:运营端 → 系统管理 → 系统配置 → 平台配置 → 端点配置
端点配置告诉系统各端的对外访问地址。点击右上角「编辑」进入编辑态,填写后「保存」(保存前会弹确认框,「取消」可撤销修改)。
| 配置项 | 用途 |
|---|---|
| 管理端访问地址 | 运营管理端的基础访问地址,第三方登录 client=admin 时用于生成回调 URL |
| 商户端访问地址 | 商户管理端的基础访问地址,须与商户前端访问源一致并在开放平台白名单登记 |
| 支付网关前端地址 | 支付收银台 / 网关页面的访问地址,支付页面跳转依赖此项 |
| 后端 API 地址 | 后端服务的基础 API 地址,支付回调通知等后端发起的场景依赖此项 |
示例格式:https://admin.daxpay.com、https://pay.daxpay.com、https://api.daxpay.com。
每个地址右侧都有「检查」按钮:后端 API 地址的检查会调用部署自检探针(验证回调接口可达),其余地址校验 HTTP 可达性,通过时会显示延迟(如 连通性检查通过 (35ms))。
本地开发环境怎么填
本地没有公网地址时:先填写格式合法的域名占位(如 https://pay.example.com),保证接口调用不报错;需要真实接收回调时,按本地联调配置内网穿透后替换为穿透地址。
同级的其他页签均为可选,按需配置:
| 页签 | 内容 | 说明 |
|---|---|---|
| 站点配置 | 系统名称、Logo、备案与版权信息 | 对外展示类配置 |
| OSS 配置 | S3 兼容对象存储 | 对账单等文件存储,详见存储配置 |
| 邮件配置 | SMTP 邮件服务 | 找回密码等通知场景 |
| 敏感词策略 | 敏感词检测启停 | 一般保持默认 |
第三步:确认沙箱环境
沙箱环境使用支付宝提供的测试账号与密钥,可以在不产生真实资金的情况下验证完整支付流程,首次上线强烈建议使用。
沙箱由两层机制控制:
| 层级 | 控制方式 | 说明 |
|---|---|---|
| 全局开关 | 配置项 daxpay.platform.config.sandbox-enabled | 开发环境默认开启;生产环境强制关闭,界面上的沙箱入口随之隐藏 |
| 产品环境 | 运营端「接入配置 → 支付产品配置」 | 每个支付产品单独切换「生产 / 沙箱」 |
操作:进入 接入配置 → 支付产品配置,找到「支付宝(直连)」产品,点击产品卡片右上角的环境标签,将其切换为沙箱。
先切环境,再建通道商户(重要)
通道商户在创建时会按产品当时的环境固化快照(沙箱 / 生产),此后:
- 切换产品环境不会影响已创建的通道商户;
- 环境与产品不一致的通道商户会被路由排除,发起支付时报环境不匹配错误;
- 通道商户列表的「环境状态」列 tooltip 也提示了这一点:「创建时固化的环境标识,不随产品切换改变」。
因此操作顺序必须是:先在产品配置中切到沙箱,再执行第五步创建通道商户。沙箱验证完成后切回生产时,需要重新创建生产环境的通道商户并配置生产密钥。
两点补充说明:
- 只有支持沙箱的产品才显示环境切换:「支付宝(直连)」支持沙箱,「支付宝(服务商)」不支持。
- 「支付管理 → 支付主数据」下的支付产品、支付通道、支付能力等是系统内置主数据,只读不可新建,无需关心创建顺序;「支付产品配置」页负责的才是启停与环境切换。
第四步:创建商户
菜单路径:运营端 → 商户管理 → 商户列表 → 新增
表单分为「商户信息」与「管理员信息」两组:
| 字段 | 必填 | 说明 |
|---|---|---|
| 商户名称 | 是 | 商户全称 |
| 商户简称 | 是 | 列表与页面中展示的简称 |
| 主体类型 | 是 | 小微商户 / 个体工商户 / 企业 |
| 账号 | 是 | 该商户管理员的登录账号(用于商户端登录) |
| 名称 | 是 | 管理员显示名称 |
| 密码 / 确认密码 | 否 | 留空时系统自动生成随机初始密码;如填写则需输入两次且一致 |
点击「保存」后,系统自动完成四件事,无需手动操作:
- 生成全局唯一的商户号(
M开头); - 创建该商户的管理员账号,绑定商户超管角色(可登录商户端);
- 创建默认应用(
A开头的 appId,发起支付时不指定 appId 则默认使用它); - 创建默认门店。
创建成功后抽屉切换为结果展示:顶部绿色提示「请立即复制并妥善转告用户,对方首次登录后需自行修改密码」,面板展示账号与初始密码(明文),密码旁有「复制」按钮。
初始密码只显示一次
初始密码仅在此结果页展示一次,关闭抽屉后无法再次查看,只能通过重置密码处理。请立即复制保存。
第五步:开通通道商户
通道商户是商户在具体支付产品(通道)上的开通记录,发起支付前必须至少开通一个。
菜单路径:运营端 → 商户管理 → 商户列表 → 操作列「管理」→ 商户工作台 → 支付配置分组 → 通道商户
顺带认识一下商户工作台。它是运营端代管商户所有配置的入口,按磁贴卡片分组:
| 分组 | 包含功能 |
|---|---|
| 基础管理 | 商户资料、商户用户、门店管理、系统终端 |
| 支付配置 | 通道商户、应用管理、支付应用(微信)、支付应用(抖音) |
| 业务配置 | 对接配置、域名校验文件 |
| 危险操作 | 删除商户(强确认,仅无交易数据的商户可删) |
进入「通道商户」列表页,点击工具栏「创建通道商户」,创建分两步:
Step 1 选择支付产品:页面以卡片形式列出所有已启用的产品(产品 Logo、产品名、所属通道),右上角显示该产品当前的环境标签(橙色「沙箱」/ 蓝色「生产」,仅支持沙箱的产品显示)。选择「支付宝(直连)」后点击「下一步」。
Step 2 填写通道信息(支付宝直连):
| 字段 | 说明 |
|---|---|
| 支付产品 | 只读回显所选产品 |
| 通道商户名称 | 自定义名称,便于在列表中辨识 |
| 支付宝商家用户 ID | 支付宝账号的合作伙伴身份 ID(2088 开头),沙箱环境填沙箱商家的账号(见下一步的沙箱参数获取) |
点击「创建通道商户」,成功后展示绿色对勾与「通道商户已成功创建」提示,点击「关闭页面」返回列表。通道商户号由系统自动生成(通道前缀 + 随机数),创建后不可修改。
微信(直连)对照
微信直连的创建参数为「通道商户名称 + 微信支付商户号(商户平台上查看到的 mchId)」。微信转账场景不在创建向导中,创建后进入通道商户详情的「交易配置」分组里补配(「转账场景」与「转账发起应用」)。
若需在微信内打开 H5 / JSAPI 支付页或统一收银台,还要先在商户工作台「业务配置 → 域名校验文件」上传微信侧下发的域名验证文件(MP_verify_*.txt),完成域名归属校验。
列表页说明:
- 「环境状态」列展示每个通道商户固化的沙箱/生产标签;
- 「启用状态」开关可以临时禁用某个通道商户(禁用后其支付不可用);
- 顶部的「通道商户」全局列表(商户管理 → 通道商户)是跨商户的汇总视图,创建操作仍需从商户工作台进入。
第六步:配置通道密钥
创建通道商户只是登记了商户身份,还需要配置通道密钥(支付宝侧的应用凭证)才能调用支付宝接口。
支付宝(直连)密钥配置
菜单路径:商户工作台 → 通道商户 → 操作「管理」→ 支付宝直连商户管理 → 应用管理分组 → 应用管理 → 应用卡片「管理」→ 密钥配置页签
进入密钥配置前,界面顶部会显示只读的「环境」标签(生产 / 沙箱),旁注「环境由通道商户创建时确定,不可在此切换」。环境正确性在第三步已保证。
先拿沙箱参数:登录支付宝开放平台控制台,进入「沙箱环境」页面(开发联调专区),可以看到:
- 沙箱应用 APPID(如
9021000000000000开头) - 沙箱支付宝公钥(用于「支付宝公钥」字段)
- 沙箱买家账号(测试付款用,配有沙箱钱包 App 下载入口)
「应用私钥」使用支付宝官方密钥工具生成(开放平台文档中心可下载,选择「公钥模式」生成 RSA2 密钥对),私钥自己留存,公钥配置回支付宝开放平台。
再回系统配置:密钥配置页签中,先在「基础配置」选择认证方式:
| 认证方式 | 需要配置的字段 |
|---|---|
公钥(public_key) | 应用ID、支付宝公钥、应用私钥 |
证书(cert) | 应用ID、应用公钥证书、支付宝公钥证书、支付宝根证书(三个 .crt 文件上传)、应用私钥 |
沙箱联调用「公钥」方式最简单。此外还有「通信密钥」分组(AES 密钥,部分接口报文加解密使用,开放平台控制台获取)。
网关地址无需配置
系统按通道商户的环境自动选择支付宝网关(沙箱 openapi-sandbox.dl.alipaydev.com / 生产 openapi.alipay.com),界面上没有网关地址字段,也不需要关心。
点击右上角「编辑」→ 填写 → 「保存」(弹确认框)。当前版本没有「连接测试」按钮,密钥是否正确在第八步发起支付时验证。
最常见的配错点
「支付宝公钥」填的是支付宝侧的公钥(开放平台展示给你、用于你验签支付宝报文的那个),不是你自己生成的「应用公钥」。两者填反是联调失败的最常见原因。
微信(直连)密钥对照
微信直连的密钥配置入口较浅:通道商户详情 → 基础管理 → 「直连密钥配置」抽屉。字段:
| 分组 | 字段 |
|---|---|
| 接口密钥 | API V3 密钥(商户平台「API 安全」中设置) |
| 支付证书 | API 证书(apiclient_cert.pem)、API 证书私钥(apiclient_key.pem)、证书序列号、支付公钥(pub_key.pem)、支付公钥 ID |
第七步:商户对接配置(互换签名公钥)
业务系统调用 unipay 开放接口使用 RSA 签名,签名是商户级的(同一商户的所有应用共用):
- 商户请求:用商户私钥签名 → 平台用「商户公钥」验签;
- 平台响应与回调:用平台私钥签名 → 商户用「平台公钥」验签。
因此需要互换一次公钥。
菜单路径:商户端 → 商户中心 → 业务配置 → 对接配置(页面顶部提示:「商户 API 配置用于接口调用时的身份验证与数据加解密,请妥善保管密钥信息」)
| 区块 | 操作 | 用途 |
|---|---|---|
| 平台公钥 | 只读,点「复制」带回业务系统 | 业务系统用它验证平台响应与回调的签名 |
| 商户公钥 | 点击「生成密钥对」自动填入,或粘贴已有公钥 | 平台用它验证商户请求的签名 |
| 通信密钥 | 可选,点击「生成密钥」 | 接口调用时数据加密(AES) |
操作流程:
- 点击「生成密钥对」,若已有公钥会先确认覆盖;
- 弹窗标题「RSA 密钥对」,展示生成的私钥,黄色警示条:「私钥仅在此处展示一次,请务必妥善保管,丢失无法找回」。立即复制私钥并妥善保存(下一步支付调试与业务系统签名都要用);
- 关闭弹窗(公钥已自动回填表单),点击「保存」(弹确认框)。
运营端也可以代管此配置:商户工作台 → 业务配置 → 对接配置(同一功能的运营侧入口)。
第八步:发起第一笔支付
系统内置的开发调试页面可以模拟真实的 unipay 调用,无需编写代码即可验证整条支付链路。
菜单路径:商户端 → 开发调试 → 支付调试(普通)(页面标注「模拟商户 API」,提交后将真实调用 /unipay/pay 接口)
操作步骤:
- 设置商户私钥:点击「设置私钥」按钮,在弹窗中粘贴第七步保存的商户私钥(说明文案:「仅用于生成请求签名,仅保存在浏览器本地缓存中」)。设置后按钮区显示绿色「已设置」标签;
- 选择支付模式:
- 跟随通道路由(推荐):选「商户 + 应用 + 支付方式」,由应用路由解析通道商户与支付能力;
- 直接指定:手动选「通道商户 + 支付能力」,跳过通道路由(排错时用);
- 填写订单信息:订单号(可点「生成」自动填)、支付金额(单位:分,最低 1)、支付标题;「支付参数」区的「支付方式」选择如
支付宝扫码(alipay_qr); - 提交支付:点击底部红色「提交支付」。页面自动完成组参与签名,调用统一支付接口;
- 查看结果:弹窗展示返回结果,扫码类支付显示支付二维码与支付链接,JSAPI 类支付展示参数 JSON,底部有「完整 DaxResult 响应」可复制;
- 完成付款:在支付宝沙箱钱包 App 中登录沙箱买家账号,扫描结果弹窗中的二维码完成支付。
支付成功后核对订单:
- 商户端「交易订单 → 支付订单 → 普通订单」或「支付交易」页可以看到订单,业务状态变为「成功」;
- 如果本地环境无法接收通道回调,订单会停留在待支付,在订单列表对该单执行「同步」操作即可拉取最新状态。
网关支付调试
如果要用统一收银台或聚合扫码(码牌、一码多付)链路,先在应用工作台完成「网关支付配置」,然后使用「开发调试 → 支付调试(网关)」:选择网关支付类型(统一收银台 / 聚合扫码),提交预下单后返回网关落地页 URL(可扫码或打开),验证收银台页面。详见网关支付。
第九步(可选):回调验证与签名联调
沙箱支付跑通后,建议再验证回调与签名,之后就可以正式对接了:
- 异步回调:在支付调试的「异步通知地址」字段填写你的接收地址并发起支付,验证回调报文接收与验签;回调格式见异步回调。生产环境的统一通知配置(应用工作台「异步通知配置」,支持订阅支付/退款事件)当前版本建设中,后续版本开放。
- 签名排查:接口验签失败时,使用「开发调试 → 签名调试」:「签名生成」页签输入参数 JSON 与私钥,可复现待签名字符串与签名值(RSA2);「签名验证」页签可用公钥反向验证。常见失败原因是时间字段未按东八区
yyyy-MM-dd HH:mm:ss格式传输。 - 正式对接:按接口文档对接 unipay 接口,或直接使用官方 SDK(Go / Java / Node.js / PHP / Python,签名逻辑已内置)。
切换生产环境
沙箱验证通过后:
- 「接入配置 → 支付产品配置」将产品环境切回生产;
- 重新走第五、六步:创建生产环境的通道商户(会固化生产快照),配置从支付宝开放平台正式应用获取的生产密钥;
- 确认部署配置
sandbox-enabled=false(生产强制,启动时系统会把遗留的沙箱产品自动重置为生产); - 建议先用小额真实支付做一次端到端验证。
常见问题
| 现象 | 原因与处理 |
|---|---|
| 发起支付报「通道商户环境不匹配」 | 通道商户创建时固化的环境与产品当前环境不一致(先建商户后切环境)。按正确顺序重建通道商户 |
| 验签失败 / 签名不正确 | 商户公钥未保存或私钥不配对;用「签名调试」页核对;确认时间字段为东八区格式 |
| 支付宝接口报密钥错误 | 「支付宝公钥」误填成了自己生成的「应用公钥」,或公钥/证书模式与开放平台侧设置不一致 |
| 二维码出来了但订单一直待支付 | 本地收不到通道回调。用订单「同步」拉取状态;生产环境检查「后端 API 地址」公网可达 |
| 找不到「创建」通道商户的按钮 | 创建入口在商户工作台内的通道商户列表;全局通道商户列表只有查看与启停 |
| 初始密码丢了 | 无法找回,重置该商户管理员密码(运营端用户管理或商户端找回密码通道) |