商品卡片与订单卡片对接文档
1. 概述
客服 H5 支持展示商品卡片和订单卡片。用户点击卡片后,若卡片配置 crossApp: true,H5 会根据 URL 参数 embedded 将点击交给宿主容器处理。
| 渠道 | URL 参数 | 点击处理 |
|---|---|---|
| 微信小程序 | embedded=wechatMiniProgram |
调用 wx.miniProgram.navigateTo({ url }) |
| uni-app | embedded=uniapp |
发送 goodsCardClick 事件 |
| Flutter | embedded=flutter |
调用 Flutter JS Handler goodsCardClick |
| Android WebView | 自动识别 | 调用 Android.goodsCardClick |
| iOS WKWebView | 自动识别 | 调用 webkit.messageHandlers.goodsCardClick.postMessage |
| iframe | embedded=iframe 或自动识别 |
向父页面发送 goodsCardClick |
2. 卡片数据
2.1 商品卡片
发送消息时,消息类型为 goodsCard,消息内容为 JSON 字符串或对象。
{
"img": "https://example.com/goods.png",
"title": "真皮手提包",
"desc": "黑色,标准款",
"remark": "支持七天无理由退货",
"url": "/pages/goods-detail/index?goodsId=10001",
"crossApp": true
}
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
img |
string | 否 | 商品图片地址 |
title |
string | 否 | 商品名称 |
desc |
string | 否 | 商品描述 |
remark |
string | 否 | 卡片备注 |
url |
string | 点击时必填 | 点击目标,微信小程序渠道必须是原生页面路径 |
crossApp |
boolean | 否 | 为 true 时由宿主处理点击;未设置时 H5 直接打开 url |
2.2 订单卡片
发送消息时,消息类型为 ordersCard,消息内容为 JSON 字符串或对象。
{
"orderNo": "2026080800123456",
"payAmount": 399,
"orderTime": "2026-04-30",
"status": "已发货",
"shopName": "淘宝AA商户",
"products": [
{
"name": "订单商品 1",
"image": "https://example.com/goods-1.png",
"spec": "颜色分类:原木色;商品规格 1"
}
],
"remark": "请发顺丰,工作日白天有人签收",
"url": "/pages/order-detail/index?orderNo=2026080800123456",
"crossApp": true
}
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
orderNo |
string | 否 | 订单号 |
payAmount |
string / number | 否 | 实付金额 |
orderTime |
string | 否 | 下单时间 |
status |
string | 否 | 订单状态 |
shopName |
string | 否 | 店铺名称 |
products |
array | 否 | 商品列表,最多接收 8 项,卡片最多展示前 4 项 |
products[].name |
string | 否 | 商品名称 |
products[].image |
string | 否 | 商品图片 |
products[].spec |
string | 否 | 商品规格 |
remark |
string | 否 | 订单备注 |
url |
string | 点击时必填 | 点击目标 |
crossApp |
boolean | 否 | 为 true 时由宿主处理点击 |
3. 通过 H5 URL 预置卡片
可通过 H5 地址参数预置待发送的卡片。content 必须进行 URL 编码。
https://your-h5-host/ue?channelId=CHANNEL_ID&embedded=wechatMiniProgram&contentType=ordersCard&content=%7B...%7D
参数说明:
| 参数 | 说明 |
|---|---|
channelId |
客服渠道 ID |
embedded |
宿主类型;微信小程序使用 wechatMiniProgram |
contentType |
商品卡片填 goodsCard,订单卡片填 ordersCard |
content |
URL 编码后的卡片 JSON |
4. 微信小程序对接
4.1 H5 地址
小程序 web-view 的 H5 地址必须带上:
embedded=wechatMiniProgram
4.2 跳转规则
微信小程序渠道点击卡片时,H5 会直接执行:
wx.miniProgram.navigateTo({
url: content.url
})
因此 url 必须满足以下条件:
- 必须是已注册的小程序原生页路径。
- 必须以
/开头,例如/pages/order-detail/index?orderNo=2026080800123456。 - 不能是
https://或http://地址。 - 不能带
.js后缀。 - 目标页面必须已写入小程序
app.json的pages。
小程序目标页示例:
Page({
onLoad(options) {
console.log("订单详情页参数:", options)
}
})
4.3 小程序配置示例
{
"pages": [
"pages/webview/index",
"pages/order-detail/index",
"pages/goods-detail/index"
]
}
微信小程序渠道不使用
wx.miniProgram.postMessage传递卡片点击事件,因为其消息只会在后退、销毁或分享等特定时机投递,无法即时处理点击。
5. 其他宿主点击协议
除微信小程序外,卡片点击事件名称统一为:
goodsCardClick
事件中携带完整的商品卡片或订单卡片对象。
5.1 uni-app
普通 web-view:
// H5 发送的数据
{
data: {
action: "goodsCardClick",
params: card
}
}
App-Plus 环境优先发送全局事件 ueGoodsCardClick:
{
action: "goodsCardClick",
params: card
}
5.2 Flutter
H5 调用:
window.flutter_inappwebview.callHandler("goodsCardClick", card)
5.3 Android WebView
H5 调用:
window.Android.goodsCardClick(JSON.stringify({
params: card,
callback: null
}))
5.4 iOS WKWebView
H5 调用:
window.webkit.messageHandlers.goodsCardClick.postMessage({
params: card,
callback: null
})
5.5 iframe
H5 向父页面发送 goodsCardClick 及完整卡片对象。父页面应监听 message 事件并按自身业务处理。
6. 排查清单
- 确认卡片配置
crossApp: true。 - 确认卡片存在非空
url。 - 微信小程序中确认 H5 URL 包含
embedded=wechatMiniProgram。 - 微信小程序中确认
url是/pages/...原生页面路径,且目标页已注册。 - 使用 H5 WebView 调试控制台查看
[ueChat]日志;小程序PageConsole 不会显示 H5 的console.log。 - 查看
wx.miniProgram.navigateTo的失败日志,确认是否为页面未注册、页面栈超过限制或路径错误。
示意图
订单卡片


商品卡片
