AI Agent 一句话接入
最快 5 分钟复制下方提示词发给任意 AI 编程助手,它会读取本文档自动完成对接
适用于 Claude Code、Cursor、Windsurf、Trae、ChatGPT 等任意可读取网页的 AI 助手。复制后粘贴到对话框,把 {{CORPORATE_ID}}、{{CORPORATE_SECRET}}、{{APP_ID}} 替换为你在「应用接入」页获取的凭证即可。
VibePay 开放接口文档
VibePay 是一套面向个人与小微商户的免签约收款系统:你无需与微信/支付宝签约, 上传自己的收款二维码即可接收付款;系统通过监控端(手机 App)识别到账并自动回调你的业务系统, 实现「支付即通知」。本文档面向开发者,说明如何调用开放接口完成 创建订单 → 用户扫码付款 → 监控端上报 → 异步/同步回调的完整闭环。
Corporate ID / Secret / App ID 三要素,后台自助获取。
调用 /createOrder 生成云端订单与收款图。
到账后系统向 notifyUrl 推送 success。
快速开始
- 注册并登录管理后台,在 应用接入 页面获取
Corporate ID与Corporate Secret。 - 在应用接入页新增一个应用,获得该应用的
App ID。 - 在 二维码管理 上传你的微信/支付宝收款二维码(可固定金额)。
- 调用
/createOrder创建订单,将返回的收款图展示给用户。 - 用户扫码付款后,监控端自动上报,系统向你配置的
notifyUrl推送到账通知。
接入凭证(三要素)
接入 VibePay 需要三个凭证,均可在 管理后台 → 应用接入 页面获取:
| 凭证 | 示例 | 说明 |
|---|---|---|
| Corporate ID | corp_EXAMPLE7DEMO7ABCD | 公司 ID,注册时系统自动生成,全公司唯一。所有接口请求都必须携带(参数名 corporateId),用于标识你的公司。 |
| Corporate Secret | SECRET7EXAMPLE7NOT7REAL7KEY | 公司密钥(Base32,32 位),公司级签名密钥。不直接传输,仅用于在本地计算签名 sign。 |
| App ID | app_EXAMPLE7APP7XYZW | 应用 ID,在「应用接入」页创建应用时由后端自动生成,每个应用唯一。创建订单时携带(参数名 appId),订单归属该应用。 |
每个公司、每个应用的凭证均不相同,请使用你自己后台显示的凭证(本文档中的取值仅为格式示例,非真实可用凭证)。
签名规则
所有写操作(创建订单、关闭订单、状态上报等)都需要签名校验,防止参数被篡改。签名统一使用 md5(拼接串),结果取 32 位小写十六进制。
各接口的拼接串
| 接口 | 拼接串(按顺序直接拼接,无分隔符) |
|---|---|
| /createOrder | payId + param + type + price + secret |
| /closeOrder | orderId + secret |
| /getState、/appHeart | t + secret |
| /appPush | type + price + t + secret |
| 异步/同步回调 | payId + param + type + price + reallyPrice + secret |
创建订单签名示例
payId = 1547129707139
param = vibeadmin123
type = 2
price = 0.1
secret = a7cc8678193ee9c70ae3d75fd04ae6a9
拼接串 = "1547129707139" + "vibeadmin123" + "2" + "0.1" + "a7cc8678193ee9c70ae3d75fd04ae6a9"
= "1547129707139vibeadmin12320.1a7cc8678193ee9c70ae3d75fd04ae6a9"
sign = md5(拼接串) // 32 位小写十六进制
param 为空时传空字符串 ""(仍参与拼接);计算完成后请将签名转为 小写 后随参数一起发送。注意:/createOrder 的拼接串不含 reallyPrice,仅回调通知的签名包含 reallyPrice。POST 创建订单 /createOrder
创建一个收款订单,返回云端订单号、收款二维码内容(payUrl)与收款图地址。
reallyPrice)。请让用户严格按页面显示的 reallyPrice 付款(含小数点后的尾数,精确到分)。少付、多付或忽略尾数,监控端将无法匹配到对应订单,导致订单长期处于「待支付」。
请求参数(表单 / x-www-form-urlencoded)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| corporateId | String | 是 | 公司 ID |
| appId | String | 是 | 应用 ID,订单归属该应用 |
| payId | String | 是 | 商户订单号(你系统内的唯一单号) |
| param | String | 否 | 自定义透传参数,回调时原样返回 |
| type | int | 是 | 支付方式:1=微信,2=支付宝 |
| price | String | 是 | 订单金额(元),如 "0.1" |
| sign | String | 是 | 签名(见签名规则,拼接串不含 reallyPrice) |
| notifyUrl | String | 否 | 异步通知地址,不传则使用应用配置的地址 |
| returnUrl | String | 否 | 支付完成后同步跳转地址(携带参数 + sign) |
| uid | String | 否 | 固定金额二维码唯一标识,传入后直接使用该二维码,忽略金额匹配 |
| isHtml | int | 否 | 0=返回 JSON(默认);1=返回支付页跳转脚本 |
| tenantCode | String | 否 | 指定收款租户(一般无需传,由 corporateId 决定) |
返回示例(isHtml=0)
{
"code": 1,
"msg": "成功",
"data": {
"payId": "1547129707139",
"orderId": "20240719120000abcd",
"type": 2,
"price": 0.1,
"reallyPrice": 0.1,
"payUrl": "wxp://xxxxx 或 alipay://xxxxx",
"isAuto": 0,
"state": 0,
"timeOut": 5
}
}
state:0=待支付,-1=已过期,1=已支付。reallyPrice 为实际匹配到的二维码金额(可能与 price 存在 ±0.01 的浮动)。
POST 查询订单 /getOrder
根据云端订单号查询订单详情。
POST /getOrder orderId=20240719120000abcd
返回结构与创建订单一致,关注 state 字段:0=待支付,-1=已过期,1=已支付。
POST 校验订单状态 /checkOrder
校验订单支付状态,已支付则返回同步回调跳转地址(returnUrl + 参数 + sign)。
POST /checkOrder orderId=20240719120000abcd
state=0:返回"订单未支付"state=-1:返回"订单已过期"state=1:返回 returnUrl?payId=...¶m=...&type=...&price=...&reallyPrice=...&sign=...
reallyPrice(见签名规则表)。POST 关闭订单 /closeOrder
主动关闭一笔待支付订单,释放金额占位。
POST /closeOrder orderId=20240719120000abcd sign=md5(orderId + secret)
POST 服务端状态 /getState
监控端心跳使用,返回监控端在线状态(jkstate)、最近心跳时间、最近付款时间。签名:md5(t + secret),其中 t 为当前时间戳(毫秒)。
POST /getState t=1721376000000 sign=md5(t + secret)
监控端相关接口(/appHeart、/appPush)属于手机 App 内部调用,/appPush 签名为 md5(type + price + t + secret)。三方系统一般无需直接调用。
回调说明
异步回调(notifyUrl)
订单支付成功后,系统向你在应用或公司配置的 notifyUrl 发起 GET 回调:
https://your-domain.com/callback?payId=...¶m=...&type=2&price=0.1&reallyPrice=0.1&sign=...&appId=...
你的服务端需校验 sign(拼接串 payId+param+type+price+reallyPrice+secret 重算比对),校验通过后返回纯文本 success,系统才会标记通知成功;否则会按策略重试。
同步回调(returnUrl)
用户支付完成后可被引导回 returnUrl,参数同上,用于前端展示支付结果。
会员体系
平台提供内置会员体系。租户需开通会员后才能使用下单(/createOrder)、监控端心跳(/appHeart)、监控端上报(/appPush)等收款功能;管理员角色与平台收款租户不受此限制。
会员充值完全复用本系统的支付通道:商户在后台「会员管理」选择套餐(月度 / 季度 / 年费 / 三年,具体价格与时长以后台返回为准,可在服务端 application.yml 的 app.member.plans 配置)后,系统自动以平台收款租户身份调用 /createOrder 创建订单(归属平台默认应用),商户扫码付款,平台监控端上报后自动开通 / 续费。
应用接入模型
VibePay 采用「公司(Corporate)→ 应用(App)」两级模型:
- 公司:对应一个注册账号(租户),拥有唯一的 Corporate ID 与 Secret。
- 应用:公司下可创建多个应用,每个应用有独立的 App ID、收款二维码与回调地址;订单按应用维度隔离与统计。
- 调用接口时必须同时携带
corporateId与appId,订单归属到对应应用。
多语言 SDK 示例
以下示例演示如何计算签名并创建订单。Secret 请替换为你的 Corporate Secret(拼接串为 payId+param+type+price+secret)。
常见问题
检查拼接顺序:/createOrder 为 payId+param+type+price+secret(不含 reallyPrice);param 为空传空串;最终 sign 需转为小写;secret 是 Corporate Secret 而非 App ID。
最常见原因是买家没有按 reallyPrice 精确付款(少付、多付或忽略了小数点尾数)。请提示买家严格按页面金额付款(精确到分)。若已部分付款,系统会自动累计,支付页会显示「已付 X / 还需 Y」,补齐剩余金额即可完成。
登录管理后台 → 应用接入:公司信息区展示 Corporate ID / Secret,应用列表展示各 App ID。
系统支持分次补齐:当一笔到账金额恰好等于某笔未支付订单的剩余金额时,会自动累计到该订单。若补齐后达到应付总额,订单立即完成并触发回调;若未补齐,订单保持待支付,支付页会提示「已付 X / 还需 Y 元」,买家按提示金额再付一次即可。无需退款或重下订单。
确认 notifyUrl 为公网可访问地址;接口需返回纯文本 success;检查签名校验逻辑是否与文档一致(回调签名含 reallyPrice)。