1. 职责与价格
| 参与方 | 职责 |
|---|---|
| 下游商户 | 调用来福获取 H5 入口;使用自有系统向终端用户收款;收款成功后由服务端通知来福;接收来福异步通知。 |
| 来福权益 | 应用鉴权、产品授权、订单承接、商户余额结算、状态管理、异步通知与退款审计。 |
| 十鹿 H5 | 商品展示、选品和实时成交金额;选品完成后回调来福创建订单。 |
价格口径:H5 商品及页面价格由上游实时提供,来福不在入口接口中改写商品价格。上游回调订单金额形成订单快照;商户面向终端用户的售价和补贴策略由商户自行决定。支付确认金额必须与该笔来福订单锁定的用户应付金额一致。
callbackUrl 仅用于浏览器回跳,不表示支付成功;notifyUrl 才是来福向下游发送订单状态的服务端地址。
2. 业务流程
01 获取入口下游服务端签名调用来福,取得短时 H5 地址。
02 页面选品用户在十鹿 H5 查看实时商品和价格并提交。
03 创建待支付单十鹿回调来福;来福按真实商户授权创建 WAIT_PAY 订单。
04 收款与履约下游收款后通知来福;来福验签、扣余额并推进履约。
下游只需接入本页列出的来福接口。十鹿的创建订单回调和支付成功回调由来福内部适配,下游不得自行拼接或替换。
3. 公共约定
正式地址:https://api.laifuagi.cn
数据格式:请求与响应均使用 application/json; charset=UTF-8。金额使用十进制字符串,单位为元,保留两位小数。
OpenAPI 请求头
| 字段 | 必填 | 说明 |
|---|---|---|
app_id | 是 | 商户后台“API 密钥 / 我的应用”生成的 AppID。 |
timestamp | 是 | Unix 秒级时间戳,与服务器时间偏差不得超过 5 分钟。 |
nonce | 是 | 每次请求唯一随机串;5 分钟内不得复用。 |
sign | 是 | HMAC-SHA256 后使用 URL-safe Base64 编码且去除 padding。 |
OpenAPI 签名
签名原文 = METHOD + "\n"
+ URI + "\n"
+ timestamp + "\n"
+ nonce + "\n"
+ 原始 JSON 请求体
sign = Base64UrlWithoutPadding(
HMAC-SHA256(appSecret, UTF8(签名原文))
)调用入口时,METHOD 为 POST,URI 为 /openapi/v1/h5/access。JSON 的字段顺序、空格和转义必须与实际发送的原始请求体完全一致。
AppSecret 仅允许保存在下游服务端。不得放入浏览器、H5、前端 JavaScript、URL 或日志。
4. 获取美团 H5 入口
POST https://api.laifuagi.cn/openapi/v1/h5/access
Content-Type: application/json
app_id: {AppID}
timestamp: {Unix秒}
nonce: {唯一随机串}
sign: {OpenAPI签名}
{
"typeCode": "MeituanWaimai",
"externalUserId": "USER_10001",
"phone": "13800138000"
}| 字段 | 必填 | 说明 |
|---|---|---|
typeCode | 是 | 固定传 MeituanWaimai。 |
phone | 是 | 进入 H5 的用户手机号;用于十鹿免登入口。 |
externalUserId | 建议 | 下游用户唯一标识,便于订单与通知关联。未传时平台按当前商户和手机号生成隔离身份。 |
busType | 否 | 十鹿业务类型;美团外卖默认由平台配置,下游通常无需传。 |
modelCode | 否 | 十鹿模板编码;默认由平台配置,下游通常无需传。 |
merchantId | 禁止 | 商户身份只取 AppID 绑定关系;请求体中的值会被忽略,不能用于切换商户。 |
成功响应
{
"code": 200,
"msg": "操作成功",
"data": {
"typeCode": "MeituanWaimai",
"interfaceTypeCode": "mt_waimai_interface",
"mode": "shiluIndependentH5",
"h5Url": "https://{十鹿H5地址}"
}
}h5Url 应直接用于浏览器跳转。下游不得修改其中的签名、用户、模板或回调参数,也不得缓存为长期固定地址。
5. 下游支付确认
十鹿回调来福创建订单后,来福返回权益订单承接页。下游确认终端用户已在自有支付系统真实付款后,由服务端调用:
POST https://api.laifuagi.cn/openapi/v1/sdk/payment/notify?merchantId={商户ID}
Content-Type: application/json
{
"merchantId": 10001,
"orderNo": "H5202607250000001234",
"quoteId": "",
"amount": "100.00",
"timestamp": "1784990000000",
"nonce": "PAY_20260725_000001",
"sign": "{支付通知签名}"
}| 字段 | 必填 | 说明 |
|---|---|---|
merchantId | 是 | 当前订单所属商户 ID;查询参数与请求体应保持一致。 |
orderNo | 是 | 来福订单号,由订单承接结果取得。 |
quoteId | 条件必填 | 订单存在锁价 ID 时必须原样传入;H5订单无该值时传空字符串。 |
amount | 是 | 下游实际收款金额,单位元,两位小数;必须等于订单锁定的用户应付金额。 |
timestamp | 是 | 毫秒时间戳字符串。 |
nonce | 是 | 支付通知唯一随机串。 |
sign | 是 | 按下述规则使用当前商户任一启用应用的 AppSecret 计算。 |
支付通知签名
payload = "merchantId=" + merchantId
+ "&orderNo=" + orderNo
+ ""eId=" + quoteId
+ "&amount=" + amount保留两位小数
+ "×tamp=" + timestamp
+ "&nonce=" + nonce
sign = SHA256_HEX(payload + "&key=" + appSecret + "&sandbox=false")重复通知按 orderNo + sign 幂等处理,不会重复冻结余额或重复履约。验签失败、订单商户不匹配、金额不一致或余额不足时均失败关闭。
6. 来福异步通知下游
商户在后台配置 notifyUrl 后,来福以 HTTP POST 发送 JSON。通知头:
Content-Type: application/json
X-LYP-Event: ORDER_SUCCESS | ORDER_FAIL | ORDER_REFUND
X-LYP-Sign: HMAC-SHA256_HEX(apiSecret, 原始JSON请求体)通知示例
{
"event": "ORDER_SUCCESS",
"orderNo": "H5202607250000001234",
"merchantId": 10001,
"typeCode": "MeituanWaimai",
"orderStatus": "SUCCESS",
"userPayAmount": 100.00,
"merchantSettleAmount": 101.00,
"merchantProfit": -1.00,
"pricingMode": "h5",
"upstreamOrderNo": "SL202607250001",
"upstreamStatus": "PAID_NOTIFY",
"timestamp": 1784990000000,
"externalUserId": "USER_10001"
}X-LYP-Sign 使用商户 SDK 的 apiSecret,不是 OpenAPI AppSecret。验签必须针对收到的原始 JSON 字节串计算,解析并重新序列化后再验签可能因字段顺序变化而失败。
| 事件 | 含义 | 下游处理 |
|---|---|---|
ORDER_SUCCESS | 订单已成功 | 按订单号和事件幂等确认最终成功。 |
ORDER_FAIL | 订单失败或上游明确失败 | 停止等待成功,按业务规则退款或关闭。 |
ORDER_REFUND | 退款完成 | 核对退款金额并更新售后状态。 |
下游应返回纯文本 success、包含 ok 的响应,或包含业务成功码 200 的响应。非成功响应会进入重试,最多 5 次,间隔按指数递增。
7. 状态与幂等
| 状态 | 说明 | 是否终态 |
|---|---|---|
WAIT_PAY | 订单已创建,等待下游确认真实收款。 | 否 |
PAID / PROCESSING | 支付确认已受理,正在通知上游或等待履约结果。 | 否 |
SUCCESS | 订单成功。 | 是 |
CLOSED / FAIL | 订单关闭或失败。 | 是 |
REFUNDING | 退款处理中。 | 否 |
REFUNDED | 退款完成。 | 是 |
- 获取 H5 入口不会创建订单、扣减余额或触发履约。
- 同一上游订单按“商户 + 上游订单号”幂等,禁止跨商户复用。
PROCESSING不是最终成功,下游不得提前向用户承诺履约完成。- 通知按
orderNo + event幂等处理;重复通知必须返回成功,避免平台持续重试。
8. 错误处理
| HTTP/业务信息 | 原因 | 处理建议 |
|---|---|---|
401 缺少必要参数 | OpenAPI 请求头不完整。 | 补齐 app_id、timestamp、nonce、sign。 |
401 签名验证失败 | 签名 URI、原始 JSON 或 AppSecret 不一致。 | 记录签名原文摘要,核对换行符和请求体,不打印密钥。 |
403 IP不在白名单 | 调用出口 IP 未在应用白名单。 | 在商户后台维护固定公网出口 IP。 |
未授权该产品 | 商户未开通美团外卖 H5。 | 联系平台运营授权 MeituanWaimai。 |
H5入口获取失败 | 上游配置、签名或网络异常。 | 不要使用历史 H5 URL;保留 requestId 联系平台排查。 |
支付金额与订单锁价不一致 | 支付通知金额与订单快照不同。 | 以订单承接页或订单查询返回金额为准重新核对。 |
9. 上线检查
- 商户已审核通过、权益已开通,OpenAPI 应用启用并配置正确的 IP 白名单。
- 已授权
MeituanWaimai / mt_waimai_interface,且商户余额与结算规则已确认。 notifyUrl使用 HTTPS,可校验X-LYP-Sign,并按订单号与事件幂等。- 先在测试环境完成:入口获取、H5选品回调、待支付订单、支付确认、成功/失败通知、退款和余额流水核对。
- 正式小额验证仅在明确授权后执行;成功后立即退款并核对账务。
验收口径:获取到 H5 地址只证明入口可用。只有真实 H5 提交订单、来福支付确认、十鹿成功响应、下游通知与退款账务全部核对一致,才能称完整链路通过。