Skip to content

聚合付科技

对接开发文档

统一下单 / 查单 / 关单 / 退款 / 转账 / 分账 / 投诉处理,一套 API 全部搞定

聚合付科技对接文档 ​

环境地址 ​

环境地址说明
支付网关http://<服务器IP>:9216jeepay-payment 服务,所有对外支付/退款/转账/分账 API
运营平台http://<服务器IP>:10900jeepay-ui-manager,商户/应用/API 密钥管理
商户平台http://<服务器IP>:10901jeepay-ui-merchant
收银台http://<服务器IP>:10903jeepay-ui-cashier
对接文档站http://<服务器IP>:10902本站

生产环境建议通过 nginx 反向代理绑定域名并启用 HTTPS。

API 约定 ​

  • 请求方式:POST,请求体为 application/json(除特别说明外);
  • 响应统一包裹为:{ "code": 0, "msg": "SUCCESS", "data": { ... }, "sign": "..." };
  • code = 0 表示成功,其余为业务错误,见 错误码表;
  • 金额单位一律为 分(Long),时间戳为 13 位毫秒;
  • 响应携带 sign 时,商户侧应使用相同算法与密钥验签。

密钥管理 ​

密钥用途获取/重置入口
appSecret商户应用 API 密钥,用于支付/退款/转账/分账接口签名运营平台-商户应用 POST /api/mchApps/{appId}/resetSecret,或商户平台-应用管理
apiPaySecret服务商平台商 API 代付密钥服务商平台 POST /api/isvInfo/{isvNo}/resetApiSecret
X-Api-Key投诉单查询专用密钥服务商投诉 API 密钥(t_isv_info.complaint_api_key,请求头携带);投诉回复/完结走 appSecret 签名

鉴权与签名算法(逐步说明) ​

所有支付类接口请求体必须包含 4 个公共字段:

字段必填说明
version是版本号,固定 1.0
signType是签名类型,固定 MD5
reqTime是请求时间,yyyyMMddHHmmss 格式
sign是签名值(见下方算法)

签名步骤(与服务端 JeepayKit.getSign 完全一致):

  1. 请求体中剔除 sign 字段本身,过滤掉值为 null 或空串 "" 的参数;
  2. 每个参数按 key=value& 格式拼接;
  3. 拼接后的字符串数组按 key 不区分大小写升序排序后顺序连接;
  4. 字符串末尾追加 key=<你的密钥>(密钥即 appSecret);
  5. 对整串做 MD5 摘要并转大写,得到 sign,放回请求体。

示例:请求参数

json
{
  "version": "1.0", "signType": "MD5", "reqTime": "20261105120000",
  "mchNo": "M1690858842671", "appId": "appId-demo",
  "mchOrderNo": "DEMO-20261105001", "wayCode": "qr_cashier",
  "amount": 100, "currency": "CNY",
  "subject": "Demo商品", "body": "demo test",
  "notifyUrl": "https://your.domain/notify"
}

密钥 your-app-secret,拼接排序后待签名串为:

text
appId=appId-demo&amount=100&body=demo test&currency=CNY&mchNo=M1690858842671&mchOrderNo=DEMO-20261105001&notifyUrl=https://your.domain/notify&reqTime=20261105120000&subject=Demo商品&signType=MD5&version=1.0&key=your-app-secret

MD5 后得到(真实算法输出):

text
sign = BC6312FEE27C78491B1D11200925BD1F

curl 示例(完整签名后的请求) ​

bash
curl -X POST http://<服务器IP>:9216/api/pay/unifiedOrder \
  -H 'Content-Type: application/json' \
  -d '{
    "version":"1.0",
    "signType":"MD5",
    "reqTime":"20261105120000",
    "mchNo":"M1690858842671",
    "appId":"appId-demo",
    "mchOrderNo":"DEMO-20261105001",
    "wayCode":"qr_cashier",
    "amount":100,
    "currency":"CNY",
    "subject":"Demo商品",
    "body":"demo test",
    "notifyUrl":"https://your.domain/notify",
    "sign":"BC6312FEE27C78491B1D11200925BD1F"
  }'

Java 用户直接使用 SDK

jeepay-java-sdk 的 SignUtils / JeepayClient 已封装上述全部步骤并自动验签,无需手写签名。

回调验签 ​

支付/退款/转账成功后,平台会向请求中传入的 notifyUrl 发送 application/x-www-form-urlencoded 表单参数(含 sign)。商户侧验签步骤:

  1. 取出表单中的 sign 字段;
  2. 其余参数按上述「签名步骤」重新计算签名(使用同一个 appSecret);
  3. 与平台下发的 sign 忽略大小写比对,一致方可确认订单,并响应 success 文本。

完整演示见仓库 demos/java 的 Main.java 第三节。

Demo 工程 ​

仓库内 /www/wwwroot/jeepay/demos/java 提供可运行 Demo(统一下单、查单、回调验签),见 Java Demo。