Skip to content

快速开始 ​

本文档面向调用 Payment 网关的商户服务端,依据本仓库当前实现编写。文档中的 https://pay.example.com、商户号、应用编号和密钥均为示例,请替换为实际部署配置。

接入准备 ​

  1. 在管理端创建商户与商户应用,取得 mchNo、appId、应用私钥 appSecret。
  2. 为应用配置支付渠道参数和支付通道,启用要使用的 wayCode,核对费率、限额与结算分账策略。
  3. 准备可被支付服务访问的 HTTPS 通知地址,在商户服务端完成验签和订单幂等处理。
  4. 确认部署提供的 Payment 网关域名。接口路径自身已含 /api,不要重复添加。

密钥使用

应用私钥仅用于商户服务端签名和验签,不作为请求字段发送。开放接口不使用后台的 iToken,也不要将密钥放入网页、收银台或客户端包。

选择接入方式 ​

需要用户选择支付方式时,从 聚合收银台 开始:下单传 QR_CASHIER,开放 API 返回 payurl 链接。自行展示二维码或调起 SDK 时,选择实际开通的具体 wayCode。

接口总览 列出认证与开放状态;服务端示例 提供 PHP / Node.js 代码。

一次支付的流程 ​

  1. 服务端生成唯一 mchOrderNo,构建统一下单参数并签名。
  2. 调用 统一下单,验签响应中的 data。
  3. 根据 payDataType 调起支付,或展示 payData 中的二维码内容。
  4. 接收并验签 异步通知,核对金额、商户订单号及状态,幂等更新商户订单。
  5. 网络异常或结果不明确时,用原商户订单号调用 支付查询。不要直接换单号再次扣款。

支付成功后的结算分账由后台配置自动安排,不需要商户再调用分账接口。浏览器跳转、Bridge 返回和下单的 code=0 均不能单独作为支付成功依据。

统一下单示例 ​

json
{
  "mchNo": "M_DEMO",
  "appId": "APP_DEMO",
  "mchOrderNo": "ORDER_20261016_001",
  "wayCode": "ALI_QR",
  "amount": 100,
  "currency": "cny",
  "subject": "测试商品",
  "body": "一笔测试订单",
  "notifyUrl": "https://merchant.example.com/payment/notify",
  "reqTime": "1792108800000",
  "signType": "MD5",
  "sign": "由服务端计算"
}

请求使用 POST https://pay.example.com/api/pay/unifiedOrder,推荐 Content-Type: application/json。签名示例见 协议与签名,可在文档项目目录执行 npm run check:examples 生成完整签名请求。

接口范围 ​

能力入口当前状态
支付下单、查询、关闭已实现,需启用对应支付通道
退款申请、查询已实现,受渠道与结算状态约束
转账创建、查询路由存在,当前未注册转账渠道
收银台候选项、确认、二维码/跳转、OAuth/JSAPI供聚合收银台前端使用
结算分账后台应用支付配置自动执行,无商户开放分账入口
渠道回调渠道专用通知路径供渠道使用,不属于商户请求接口

接口行为以当前 payment 实现为准。示例商户号与密钥均为虚构。