返回首页
🤖

AI Agent 一句话接入

最快 5 分钟

复制下方提示词发给任意 AI 编程助手,它会读取本文档自动完成对接

复制后只需替换三个凭证: Corporate ID Corporate Secret App ID

                                

适用于 Claude Code、Cursor、Windsurf、Trae、ChatGPT 等任意可读取网页的 AI 助手。复制后粘贴到对话框,把 {{CORPORATE_ID}}{{CORPORATE_SECRET}}{{APP_ID}} 替换为你在「应用接入」页获取的凭证即可。

三方系统接入

VibePay 开放接口文档

VibePay 是一套面向个人与小微商户的免签约收款系统:你无需与微信/支付宝签约, 上传自己的收款二维码即可接收付款;系统通过监控端(手机 App)识别到账并自动回调你的业务系统, 实现「支付即通知」。本文档面向开发者,说明如何调用开放接口完成 创建订单 → 用户扫码付款 → 监控端上报 → 异步/同步回调的完整闭环。

① 接入凭证

Corporate ID / Secret / App ID 三要素,后台自助获取。

② 创建订单

调用 /createOrder 生成云端订单与收款图。

③ 接收回调

到账后系统向 notifyUrl 推送 success。

快速开始

  1. 注册并登录管理后台,在 应用接入 页面获取 Corporate IDCorporate Secret
  2. 在应用接入页新增一个应用,获得该应用的 App ID
  3. 二维码管理 上传你的微信/支付宝收款二维码(可固定金额)。
  4. 调用 /createOrder 创建订单,将返回的收款图展示给用户。
  5. 用户扫码付款后,监控端自动上报,系统向你配置的 notifyUrl 推送到账通知。
⚠️ 下单、监控端心跳、监控端上报等收款能力需要开通会员后使用;管理员角色与平台收款租户不受限制。

接入凭证(三要素)

接入 VibePay 需要三个凭证,均可在 管理后台 → 应用接入 页面获取:

凭证示例说明
Corporate IDcorp_EXAMPLE7DEMO7ABCD公司 ID,注册时系统自动生成,全公司唯一。所有接口请求都必须携带(参数名 corporateId),用于标识你的公司。
Corporate SecretSECRET7EXAMPLE7NOT7REAL7KEY公司密钥(Base32,32 位),公司级签名密钥。不直接传输,仅用于在本地计算签名 sign。
App IDapp_EXAMPLE7APP7XYZW应用 ID,在「应用接入」页创建应用时由后端自动生成,每个应用唯一。创建订单时携带(参数名 appId),订单归属该应用。

每个公司、每个应用的凭证均不相同,请使用你自己后台显示的凭证(本文档中的取值仅为格式示例,非真实可用凭证)。

签名规则

所有写操作(创建订单、关闭订单、状态上报等)都需要签名校验,防止参数被篡改。签名统一使用 md5(拼接串),结果取 32 位小写十六进制

各接口的拼接串

接口拼接串(按顺序直接拼接,无分隔符)
/createOrderpayId + param + type + price + secret
/closeOrderorderId + secret
/getState、/appHeartt + secret
/appPushtype + 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)与收款图地址。

⚠️ 务必按返回金额精确付款:为区分同一金额的多笔订单,系统会在原价基础上自动加 / 减 0.01 元尾差(即 reallyPrice)。请让用户严格按页面显示的 reallyPrice 付款(含小数点后的尾数,精确到分)。少付、多付或忽略尾数,监控端将无法匹配到对应订单,导致订单长期处于「待支付」。

请求参数(表单 / x-www-form-urlencoded)

参数类型必填说明
corporateIdString公司 ID
appIdString应用 ID,订单归属该应用
payIdString商户订单号(你系统内的唯一单号)
paramString自定义透传参数,回调时原样返回
typeint支付方式:1=微信,2=支付宝
priceString订单金额(元),如 "0.1"
signString签名(见签名规则,拼接串不含 reallyPrice)
notifyUrlString异步通知地址,不传则使用应用配置的地址
returnUrlString支付完成后同步跳转地址(携带参数 + sign)
uidString固定金额二维码唯一标识,传入后直接使用该二维码,忽略金额匹配
isHtmlint0=返回 JSON(默认);1=返回支付页跳转脚本
tenantCodeString指定收款租户(一般无需传,由 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=...
注:同步回调的 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.ymlapp.member.plans 配置)后,系统自动以平台收款租户身份调用 /createOrder 创建订单(归属平台默认应用),商户扫码付款,平台监控端上报后自动开通 / 续费。

应用接入模型

VibePay 采用「公司(Corporate)→ 应用(App)」两级模型:

  • 公司:对应一个注册账号(租户),拥有唯一的 Corporate ID 与 Secret。
  • 应用:公司下可创建多个应用,每个应用有独立的 App ID、收款二维码与回调地址;订单按应用维度隔离与统计。
  • 调用接口时必须同时携带 corporateIdappId,订单归属到对应应用。

多语言 SDK 示例

以下示例演示如何计算签名并创建订单。Secret 请替换为你的 Corporate Secret(拼接串为 payId+param+type+price+secret)。

PHP Java Python Node.js Go

                    

常见问题

Q:签名一直校验失败?

检查拼接顺序:/createOrder 为 payId+param+type+price+secret(不含 reallyPrice);param 为空传空串;最终 sign 需转为小写;secret 是 Corporate Secret 而非 App ID。

Q:订单一直 state=0?

最常见原因是买家没有按 reallyPrice 精确付款(少付、多付或忽略了小数点尾数)。请提示买家严格按页面金额付款(精确到分)。若已部分付款,系统会自动累计,支付页会显示「已付 X / 还需 Y」,补齐剩余金额即可完成。

Q:corporateId / appId 在哪里看?

登录管理后台 → 应用接入:公司信息区展示 Corporate ID / Secret,应用列表展示各 App ID。

Q:买家只付了一部分(如应付 100 只付了 50)怎么办?

系统支持分次补齐:当一笔到账金额恰好等于某笔未支付订单的剩余金额时,会自动累计到该订单。若补齐后达到应付总额,订单立即完成并触发回调;若未补齐,订单保持待支付,支付页会提示「已付 X / 还需 Y 元」,买家按提示金额再付一次即可。无需退款或重下订单。

Q:回调没收到?

确认 notifyUrl 为公网可访问地址;接口需返回纯文本 success;检查签名校验逻辑是否与文档一致(回调签名含 reallyPrice)。