• JS API 列表
  • 基础
  • TTML
  • 网络
  • 媒体
  • 地图
  • 文件
  • 数据缓存
  • 地理位置
  • 设备
  • 画布
  • 界面
  • 页面导航
  • 开放接口
  • 行业开放
  • 交易系统
  • 履约
  • 预下单
  • tt.createOrder
  • 支付
  • 逆向交易
  • 预约
  • 营销
  • 通用交易系统
  • 交易工具
  • 第三方平台
  • 其它
  • 基础库 2.51.0 开始支持本方法,低版本需做兼容处理,这是一个异步方法。
    提供开发者交易系统中预下单能力,开发者通过调用该方法生成订单后,会调起小程序收银台进行支付。

    使用限制

    最低支持版本上注明行业 SDK ,表示仅在行业 SDK 上才支持,需要在代码中配置行业 SDK 的权限:行业 SDK 的权限配置。当完成行业 SDK 的权限配置后,可通过 tt.canIUse('createOrder') 判断该 API 是否可用。

    语法

    tt.createOrder(options);

    参数说明

    options 为 object 类型,属性如下:
      针对旧版本开发者,保留支持 goodsList 下单(此场景 skuList 必须为空),新接入开发者推荐使用 skuList 下单(此场景 goodsList 必须为空)
      goodsList 和 skuList 不能同时为空;
      全融合版(非预约品)需使用goodsList下单,全融合版(预约品)需使用skuList下单;
    属性名
    类型
    默认值
    必填
    说明
    最低支持版本
    goodsList
    Goods[]
    Goods说明见下文
    下单商品
    注意:目前仅支持单 SPU 商品下单
    2.51.0.0
    skuList
    Sku[]
    Sku说明见下文
    下单商品信息(新)
    (skuList目前只支持单个sku)
    2.67.0.0
    bookInfo
    BookInfo
    BookInfo说明见下文
    预约信息
    2.67.0.0
    payment
    Payment
    Payment说明见下文
    订单支付信息
    2.51.0.0
    contactInfo
    ContactInfo
    ContactInfo说明见下文
    联系信息
    2.51.0.0
    storeInfo
    StoreInfo
    StoreInfo说明见下文
    商店信息
    2.51.0.0
    note
    string
    订单备注
    2.51.0.0
    callbackData
    Object
    透传至服务端的信息,会被JSON.stringfy处理,长度不能大于2048字节( 字节与字符串说明见下方 Bug & Tip
    2.51.0.0
    tradeOption
    Object
    透传至服务端的信息,会被JSON.stringfy处理,长度不能大于2048字节( 字节与字符串说明见下方 Bug & Tip
    2.74.0.0
    callbackUrl
    string
    开发者自定义的预下单回调 URL(仅账号融合支持,完全融合不生效)
    2.65.0.0
    discountInfo
    DiscountInfo
    DiscountInfo说明见下文
    折扣营销算价信息
    2.52.0.3
    discountId
    string
    折扣营销算价信息 ID(若同时存在 discountInfo 和 discountId 时,优先使用 discountId 对应的营销算计信息)
      注意:使用平台营销时,该字段不可用。
    2.52.0.3
    poiId
    string
    门店id,取值优先级:poiId > 货架/直播间的poiId > deliveryInfo里的poiId
    businessLine
    number
    1
    业务线
      1:团购
      3:外卖( 该业务线使用前,注意下方 Bug & Tip
    2.52.0.3
    deliveryInfo
    DeliveryInfo
    DeliveryInfo
    说明在下文
    否(businessLine = 3 时,必填)
    配送信息
    行业 SDK
    addressInfo
    AddressInfo
    AddressInfo
    说明见下文
    否(businessLine = 3 ,必填)
    地址信息
    行业 SDK
    success
    Function
    接口调用成功的回调函数
    fail
    Function
    接口调用失败的回调函数
    complete
    Function
    接口调用结束的回调函数(调用成功、失败都会执行)

    Goods

    属性名
    类型
    默认值
    必填
    说明
    最低支持版本
    quantity
    number
    购买数量
    2.51.0.0
    price
    number
    商品价格
    2.51.0.0
    goodsName
    string
    商品名称
    字段长度为 1~256 字节( 字节与字符串说明见下方 Bug & Tip
    2.51.0.0
    goodsPhoto
    string
    商品图片
    2.51.0.0
    goodsId
    string
    商品ID
    2.51.0.0
    goodsType
    number
    商品类型
      1:商品库商品
      2:非商品库商品
    2.51.0.0
    discountAmount
    number
    折扣金额
    2.67.0.0
    goodsPage
    object
    商详页路径
    2.67.0.0
    goodsLabels
    string[]
    商品标签
    2.51.0.0
    dateRule
    string
    使用规则
    2.51.0.0
    goodsBookInfo
    GoodsBookInfo
    预约信息
      商品类型为预售券、日历房、门票需要传预约信息
    2.57.4.0

    goodsPage

    属性名
    类型
    默认值
    必填
    说明
    最低支持版本
    path
    string
    --
    商品详情页跳转路径,没有前导的“/”,长度 <= 512byte
    示例:pages/xxxindexxx
    2.57.4.0
    params
    string
    --
    商品详情页路径参数,自定义的 json 结构,序列化成字符串存入该字段,平台不限制,但是写入的内容需要能够保证生成访问订单详情的 schema 能正确跳转到小程序内部的订单详情页,长度 <= 512byte
    示例:{\"id\":\"xxxxxx\"}
    2.57.4.0

    GoodsBookInfo

    属性名
    类型
    默认值
    必填
    说明
    最低支持版本
    bookType
    number
    --
    预约类型:
      1:不需要预约
      2:在线预约
    2.57.4.0
    cancelPolicy
    number
    --
    取消政策:
      1:预约后不可取消
      2:预约后可取消
      3:需提前 x 小时取消(最低支持版本 2.69.0.5)
    需要预约,此字段必传;不需要预约,此字段不填
    2.57.4.0
    advancedCancelHours
    number
    --
    提前取消的小时限制(距离预约结束时间),cancelPolicy为 3 时有效
    2.69.0.5

    Sku

      sku 为商品库商品,对应的 goods 必须是商品库
      sku 为商品库商品,goodsInfo 可以不传
      sku 为非商品库商品,需要传 goodsInfo
    属性名
    类型
    默认值
    必填
    说明
    最低支持版本
    quantity
    number
    购买数量
    2.67.0.0
    skuId
    string
    sku商品id
    2.67.0.0
    skuType
    number
    sku商品类型
      1:商品库商品
      2:非商品库商品
    2.67.0.0
    price
    number
    价格(到综预约链路,该参数必填)
    2.67.0.0
    discountAmount
    number
    折扣金额
    2.67.0.0
    goodsInfo
    GoodsInfo
    GoodsInfo说明见下文
    商品信息
    2.67.0.0
    extraInfo
    ExtraInfo
    ExtraInfo说明见下文
    sku 额外商品属性
    2.67.0.0

    GoodsInfo

    属性名
    类型
    默认值
    必填
    说明
    最低支持版本
    goodsName
    string
    商品名称字段长度为 1~256 字节
    2.67.0.0
    goodsPhoto
    string
    商品图片
    2.67.0.0
    goodsId
    string
    商品ID
    2.67.0.0
    goodsType
    number
    商品类型:
      1:商品库商品
      2:非商品库商品
    2.67.0.0
    goodsSubTitle
    string
    商品副标题
    2.67.0.0
    goodsPage
    object
    商详页路径
    2.67.0.0
    goodsLabels
    string[]
    商品标签
    2.67.0.0
    dateRule
    string
    使用规则
    2.67.0.0
    goodsBookInfo
    object
    预约信息
    2.67.0.0

    ExtraInfo

    属性名
    类型
    默认值
    必填
    说明
    最低支持版本
    ticketName
    string
    否(非POI商品库的门票类SKU必传)
    门票票种
    2.67.0.0
    date
    string
    否(非POI商品库的门票类SKU必传)
    日期,示例 2022-01-10,现在仅支持天
    2.67.0.0

    Payment

    属性名
    类型
    默认值
    必填
    说明
    最低支持版本
    totalAmount
    number
    订单总价
    2.51.0.0
    totalDiscountAmount
    number
    订单总折扣
    2.52.0.3
    feeDetailsList
    FeeDetailsInfo[]
    FeeDetailsInfo 说明见下文
    否(存在配送费或包装费时,必传)
    费用明细列表
    注意:仅支持外卖行业(即businessLine = 3)
    行业 SDK

    FeeDetailsInfo

    属性名
    类型
    默认值
    必填
    说明
    最低支持版本
    feeType
    number
    费用类型
      1: 配送费
      2: 包装费
    行业 SDK
    feeAmount
    number
    费用总金额
    行业 SDK
    feeDiscountAmount
    number
    0
    费用总优惠金额
    行业 SDK
    feeDesc
    string
    费用描述
    行业 SDK

    ContactInfo

    属性名
    类型
    默认值
    必填
    说明
    最低支持版本
    phoneNumber
    string
    (businessLine = 3 且 addressId 为空时,必填)
    联系人电话
    2.51.0.0
    contactName
    string
    (businessLine = 3 且 addressId 为空时,必填)
    联系人姓名
    2.51.0.0
    gender
    number
    (businessLine = 3 且 addressId 为空时,必填)
    联系人性别
      0: 未知
      1: 男
      2: 女
    行业 SDK

    StoreInfo

    属性名
    类型
    默认值
    必填
    说明
    最低支持版本
    storeName
    string
    商店名称
    2.51.0.0
    storeIcon
    string
    商店头像
    2.51.0.0

    DiscountInfo

    属性名
    类型
    默认值
    必填
    说明
    最低支持版本
    type
    number
    折扣算价类型
      1 : 商户单维度,item 单价格我们按分摊比例计算
      2 : item 单维度,item 单价格由开发者计算
    2.52.0.3
    detail
    Detail
    折扣详情
    2.52.0.3
    useMergedMarketingApi
    boolean
    false
    是否使用了营销算价二合一
    2.74.0.0
    行业SDK

    Detail

    属性名
    类型
    默认值
    必填
    说明
    最低支持版本
    orderDiscount
    OrderDiscountDetail
    订单算价结果
    2.52.0.3
    goodsDiscount
    GoodsDiscount[]
    商品算价结果
    2.52.0.3
    itemDiscount
    ItemDiscount[]
    单商品算价信息
    2.52.0.3
    OrderDiscount
    属性名
    类型
    默认值
    必填
    说明
    最低支持版本
    orderTotalDiscountAmount
    number
    订单维度总优惠金额,单位: 分
    2.52.0.3
    goodsTotalDiscountAmount
    number
    商品(SKU)维度总优惠金额,单位: 分
    2.52.0.3
    marketingInfo
    MarketingInfo[]
    营销信息明细
    2.52.0.3
    MarketingInfo
    属性名
    类型
    默认值
    必填
    说明
    最低支持版本
    id
    string
    营销 id
    2.52.0.3
    type
    number
    营销类型
      1: 用户身份
      2: 优惠券
      3: 积分
      4: 活动
    2.52.0.3
    discountAmount
    number
    该营销策略优惠金额,单位: 分
    2.52.0.3
    title
    string
    营销名称
    2.52.0.3
    note
    string
    营销备注(小于128字节)
    无需营销备注时需传空字符串
    2.52.0.3
    subtype
    string
    营销子类型
    2.52.0.3
    value
    number
    不同 type 含义不同
    2.52.0.3
    discountRange
    string
    营销适用维度:
      1:订单维度
      2:商品维度
    2.52.0.3
    code
    string
    优惠券编码
    2.74.0.0
    行业SDK
    kind
    number
    营销类别
      1:商家
      2:平台
    creatorType
    number
    创建人类型
      1:抖音平台
      2:抖音来客—商家
      3:小程序商家
    marketingExtend
    object
    透传字段
    GoodsDiscount
    属性名
    类型
    默认值
    必填
    说明
    最低支持版本
    goodsId
    string
    商品 ID
    2.52.0.3
    skuId
    string
    skuId,接入sku下单并使用营销时必填
    2.74.0.0
    quantity
    number
    购买数量
    2.52.0.3
    totalAmount
    number
    商品总价,单位:分
    2.52.0.3
    totalDiscountAmount
    number
    商品总折扣
    2.52.0.3
    marketingInfo
    MarketingInfo[]
    营销信息明细
    2.52.0.3
    ItemDiscount
    属性名
    类型
    默认值
    必填
    说明
    最低支持版本
    goodsId
    string
    商品ID
    2.52.0.3
    skuId
    string
    skuId,接入sku下单并使用营销时必填
    2.74.0.0
    totalAmount
    number
    商品总价,校验原价是否一致
    2.52.0.3
    totalDiscountAmount
    number
    商品总折扣
    2.52.0.3
    marketingInfo
    MarketingInfo[]
    营销信息明细
    2.52.0.3

    BookInfo

    属性名
    类型
    默认值
    必填
    说明
    最低支持版本
    itemBookInfoList
    ItemBookInfo[]
    --
    每个 item 的预约信息,详见 ItemBookInfo
    2.67.0.0

    ItemBookInfo

    属性名
    类型
    默认值
    必填
    说明
    最低支持版本
    poiId
    string
    --
    预约门店的poiId
    2.67.0.0
    shopName
    string
    --
    预约门店名称
    2.67.0.0
    outShopId
    string
    --
    预约门店的外部店铺id
    2.67.0.0
    goodsId
    string
    --
    商品 id
    注意:在 2.77.0.0版本之前此字段为必填,开发者可使用tt.canIUse('createOrder.object.bookInfo.itemBookInfoList.skuId')进行降级处理
    2.67.0.0
    skuId
    string
    --
    Sku 商品id
    2.77.0.0
    bookStartTime
    number
    --
    预定开始时间(ms),13位毫秒时间戳
    2.67.0.0
    bookEndTime
    number
    --
    预定结束时间(ms),13位毫秒时间戳,注意:需满足 当前时间< bookStartTime < bookEndTime,并且bookEndTime必须是180天之内
    2.67.0.0
    reservationInfoList
    ReservationInfo[]
    --
    留资信息
    2.67.0.0
    ReservationInfo
    属性名
    类型
    默认值
    必填
    说明
    最低支持版本
    name
    string
    --
    姓名
    2.67.0.0
    phoneNumber
    string
    --
    电话号码
    2.67.0.0
    identificationNumber
    string
    --
    身份证号码
    2.67.0.0

    DeliveryInfo

    属性名
    类型
    默认值
    必填
    说明
    最低支持版本
    poiId
    string
    --
    门店的poiId
    行业 SDK
    bookType
    boolean
    --
    订单类型
    1: 实时单
    2: 预约单
    行业 SDK
    deliveryType
    number
    --
    配送类型
    1: 同城配送
    2: 到店自提
    行业 SDK
    receiptInfo
    ReceiptInfo
    ReceiptInfo 说明见下文
    --
    收货信息
    行业 SDK
    bookInfo
    DeliveryBookInfo
    DeliveryBookInfo说明见下文
    --
    否(bookType = 2时,必填)
    预约信息
    行业 SDK
    selfPickInfo
    SelfPickInfo
    SelfPickInfo说明见下文
    --
    否(deliveryType = 2 时,必填)
    自提信息
    行业 SDK

    ReceiptInfo

    属性名
    类型
    默认值
    必填
    说明
    最低支持版本
    startTime
    number
    --
    预计收货开始时间(ms),13位毫秒时间戳
    行业 SDK
    endTime
    number
    --
    预计收货结束时间(ms),13位毫秒时间戳
    行业 SDK

    DeliveryBookInfo

    属性名
    类型
    默认值
    必填
    说明
    最低支持版本
    startTime
    number
    --
    预定开始时间(ms),13位毫秒时间戳
    行业 SDK
    endTime
    number
    --
    预定结束时间(ms),13位毫秒时间戳
    行业 SDK

    SelfPickInfo

    属性名
    类型
    默认值
    必填
    说明
    最低支持版本
    startTime
    number
    --
    预计自提开始时间(ms),13位毫秒时间戳
    行业 SDK
    endTime
    number
    --
    预计自提结束时间(ms),13位毫秒时间戳
    行业 SDK
    shopInfo
    PickUpShopInfo
    PickUpShopInfo 说明见下文
    --
    自提店铺信息
    行业 SDK
    PickUpShopInfo
    属性名
    类型
    默认值
    必填
    说明
    最低支持版本
    shopId
    string
    --
    自提店铺id
    行业 SDK
    shopName
    string
    --
    自提店铺名称
    行业 SDK
    address
    string
    --
    自提店铺地址
    行业 SDK
    phoneNumber
    string
    --
    自提店铺电话
    行业 SDK

    AddressInfo

    属性名
    类型
    默认值
    必填
    说明
    最低支持版本
    addressId
    string
    --
    抖音用户地址id
    行业 SDK
    locationInfo
    LocationInfo
    LocationInfo说明见下文
    --
    否(addressId 为空时,必填)
    地理位置信息
    行业 SDK
    doorNumber
    string
    --
    否(addressId 为空时,必填)
    门牌号
    行业 SDK

    LocationInfo

    属性名
    类型
    默认值
    必填
    说明
    最低支持版本
    provinceCode
    string
    --
    省编码
    行业 SDK
    provinceName
    string
    --
    省名称
    行业 SDK
    cityCode
    string
    --
    市编码
    行业 SDK
    cityName
    string
    --
    市名称
    行业 SDK
    districtCode
    string
    --
    区编码
    行业 SDK
    districtName
    string
    --
    区名称
    行业 SDK
    townCode
    string
    --
    街道/镇编码
    行业 SDK
    townName
    string
    --
    街道/镇名称
    行业 SDK
    locationAddress
    string
    --
    具体位置地址
    行业 SDK
    locationName
    string
    --
    poi 名称
    行业 SDK

    回调成功

    object 类型,属性如下:
    属性名
    类型
    说明
    最低支持版本
    orderId
    string
    内部商户订单号
    2.51.0.0
    outOrderNo
    string
    开发者订单号
    2.51.0.0

    回调失败

    object 类型,属性如下:
    属性名
    类型
    说明
    最低支持版本
    errNo
    string
    错误码,对应信息可查看 errNo 说明
    2.51.0.0
    errMsg
    string
    错误信息提示
    2.51.0.0
    errLogId
    string
    当预下单失败时会提供该数据,可供服务端排查问题
    2.51.0.0
    orderId
    string
    预下单成功,但用户支付失败
    2.51.0.0
    outOrderNo
    string
    预下单成功,但用户支付失败
    2.51.0.0

    代码示例

    不包含营销模块

    tt.createOrder({ goodsList: [ { quantity: 10, // 购买数量 必填 price: 1, // 商品价格 必填 goodsName: "测试商品", // 商品名称 必填 goodsPhoto: "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fpic.ibaotu.com%2Fgif%2F19%2F48%2F47%2F76Z888piCd6W.gif%21fwpaa50%2Ffw%2F700&refer=http%3A%2F%2Fpic.ibaotu.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1644654365&t=5fc9b5fdad0a16264a9a9c09c14b3af9", // 商品图片链接 必填 goodsId: "123", // 商品ID 必填 goodsType: 2, // 商品类型 必填 goodsLabels: ["不可退"], // 商品标签 非必填 dateRule: "", // 使用规则 非必填 }, ], payment: { totalAmount: 10, // 订单总价 必填 }, contactInfo: { phoneNumber: "12345678901", // 手机号 非必传 contactName: "test name", // 姓名 非必传 }, note: "for future", // 备注 非必传 storeInfo: { storeName: "test store", // 商店名称 非必传 storeIcon: "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fpic.ibaotu.com%2Fgif%2F19%2F48%2F47%2F76Z888piCd6W.gif%21fwpaa50%2Ffw%2F700&refer=http%3A%2F%2Fpic.ibaotu.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1644654365&t=5fc9b5fdad0a16264a9a9c09c14b3af9", // 商店头像 非必填 }, callbackData: { test: 999999 }, // 透传数据,开发者自定义字段 非必传 tradeOption:{ life_trade_flag :0 // 0:非融合链路(默认值) 1:走融合链路(标准融合/完全融合) }, // 透传数据,开发者自定义字段 非必传 success: (res) => { const { orderId, outOrderNo } = res; console.log("success res", res); console.log("orderId", orderId, "outOrderNo", outOrderNo); this.setData({ orderId, outOrderNo }); }, fail: (res) => { const { orderId, outOrderNo, errNo, errMsg, errLogId } = res; if (errLogId) { console.log("预下单失败", errNo, errMsg, errLogId); } if (orderId || outOrderNo) { console.log("支付失败", errNo, errMsg, orderId, outOrderNo); } console.log(errNo, errMsg); }, });

    使用 skuList 下单门票类商品示例(商品库 spu & 非商品库 sku)

    tt.createOrder({ skuList: [ { skuId: "xxx", // sku 商品Id 必传 skuType: 2, // sku 商品类型 必传 quantity: 10, // 数量 必传 price: 1, // 价格 非商品库 sku 商品必传 goodsInfo: { goodsName: "测试商品", // 商品名称 必填 goodsPhoto: "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fpic.ibaotu.com%2Fgif%2F19%2F48%2F47%2F76Z888piCd6W.gif%21fwpaa50%2Ffw%2F700&refer=http%3A%2F%2Fpic.ibaotu.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1644654365&t=5fc9b5fdad0a16264a9a9c09c14b3af9", // 商品图片链接 必填 goodsId: "123", // 商品ID 必填 goodsType: 1, // 商品类型 必填 goodsLabels: ["不可退"], // 商品标签 非必填 dateRule: "", // 使用规则 非必填 }, extraInfo: { ticketName: "child", // 票种,非商品库门票类 sku 必传 date: "2022-07-26", // 日期,非商品库门票类 sku 必传 }, }, ], bookInfo: { itemBookInfoList: [ { poiId: "12313131331", // 预约门店的 poiId,必填 shopName: "测试名称", // 预约店铺名称,必填 outShopId: "11121234434", // 预约门店的外部店铺id,必填 goodsId: "123", // 商品id,必填 bookStartTime: new Date(2022, 7, 25).getTime(), // 预定开始时间(ms),13位毫秒时间戳,必填 bookEndTime: new Date(2022, 7, 26).getTime(), //预定结束时间(ms),13位毫秒时间戳,必填 reservationInfoList: [ { // 留资信息 非必填 name: "xxx", // 姓名 非必填 phoneNumber: "xxx", // 电话 非必填 identificationNumber: "xxxxx", // 身份证号 非必填 }, ], }, ], }, payment: { totalAmount: 10, // 订单总价 必填 }, contactInfo: { phoneNumber: "12345678901", // 手机号 非必传 contactName: "test name", // 姓名 非必传 }, note: "for future", // 备注 非必传 storeInfo: { storeName: "test store", // 商店名称 非必传 storeIcon: "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fpic.ibaotu.com%2Fgif%2F19%2F48%2F47%2F76Z888piCd6W.gif%21fwpaa50%2Ffw%2F700&refer=http%3A%2F%2Fpic.ibaotu.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1644654365&t=5fc9b5fdad0a16264a9a9c09c14b3af9", // 商店头像 非必填 }, callbackData: { test: 999999 }, // 透传数据,开发者自定义字段 非必传 tradeOption:{ life_trade_flag :0 // 0:非融合链路(默认值) 1:走融合链路(标准融合/完全融合) }, // 透传数据,开发者自定义字段 非必传 success: (res) => { const { orderId, outOrderNo } = res; console.log("success res", res); console.log("orderId", orderId, "outOrderNo", outOrderNo); this.setData({ orderId, outOrderNo }); }, fail: (res) => { const { orderId, outOrderNo, errNo, errMsg, errLogId } = res; if (errLogId) { console.log("预下单失败", errNo, errMsg, errLogId); } if (orderId || outOrderNo) { console.log("支付失败", errNo, errMsg, orderId, outOrderNo); } console.log(errNo, errMsg); }, });

    使用 skuList 下单团购商品示例

    tt.createOrder({ skuList: [ { skuId: "123", // sku 商品Id 必传 skuType: 1, // sku 商品类型 必传 quantity: 10, // 数量 必传 price: 1, // 价格 非商品库 sku 商品必传 goodsInfo: { goodsName: "测试商品", // 商品名称 必填 goodsPhoto: "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fpic.ibaotu.com%2Fgif%2F19%2F48%2F47%2F76Z888piCd6W.gif%21fwpaa50%2Ffw%2F700&refer=http%3A%2F%2Fpic.ibaotu.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1644654365&t=5fc9b5fdad0a16264a9a9c09c14b3af9", // 商品图片链接 必填 goodsId: "123", // 商品ID 必填 goodsType: 1, // 商品类型 必填 goodsLabels: ["不可退"], // 商品标签 非必填 dateRule: "", // 使用规则 非必填 }, }, { skuId: "456", // sku 商品Id 必传 skuType: 1, // sku 商品类型 必传 quantity: 2, // 数量 必传 price: 1, // 价格 非商品库 sku 商品必传 goodsInfo: { goodsName: "测试商品", // 商品名称 必填 goodsPhoto: "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fpic.ibaotu.com%2Fgif%2F19%2F48%2F47%2F76Z888piCd6W.gif%21fwpaa50%2Ffw%2F700&refer=http%3A%2F%2Fpic.ibaotu.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1644654365&t=5fc9b5fdad0a16264a9a9c09c14b3af9", // 商品图片链接 必填 goodsId: "123", // 商品ID 必填 goodsType: 1, // 商品类型 必填 goodsLabels: ["不可退"], // 商品标签 非必填 dateRule: "", // 使用规则 非必填 }, }, ], payment: { totalAmount: 10, // 订单总价 必填 }, contactInfo: { phoneNumber: "12345678901", // 手机号 非必传 contactName: "test name", // 姓名 非必传 }, note: "for future", // 备注 非必传 storeInfo: { storeName: "test store", // 商店名称 非必传 storeIcon: "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fpic.ibaotu.com%2Fgif%2F19%2F48%2F47%2F76Z888piCd6W.gif%21fwpaa50%2Ffw%2F700&refer=http%3A%2F%2Fpic.ibaotu.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1644654365&t=5fc9b5fdad0a16264a9a9c09c14b3af9", // 商店头像 非必填 }, callbackData: { test: 999999 }, // 透传数据,开发者自定义字段 非必传 tradeOption:{ life_trade_flag :0 // 0:非融合链路(默认值) 1:走融合链路(标准融合/完全融合) }, // 透传数据,开发者自定义字段 非必传 success: (res) => { const { orderId, outOrderNo } = res; console.log("success res", res); console.log("orderId", orderId, "outOrderNo", outOrderNo); this.setData({ orderId, outOrderNo }); }, fail: (res) => { const { orderId, outOrderNo, errNo, errMsg, errLogId } = res; if (errLogId) { console.log("预下单失败", errNo, errMsg, errLogId); } if (orderId || outOrderNo) { console.log("支付失败", errNo, errMsg, orderId, outOrderNo); } console.log(errNo, errMsg); }, });

    包含营销模块

    传递 discountInfo

    tt.createOrder({ goodsList: [ { quantity: 1, // 购买数量 必填 price: 40000, // 商品价格 必填 discountAmount: 10000, goodsName: "测试商品", // 商品名称 必填 goodsPhoto: "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fpic.ibaotu.com%2Fgif%2F19%2F48%2F47%2F76Z888piCd6W.gif%21fwpaa50%2Ffw%2F700&refer=http%3A%2F%2Fpic.ibaotu.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1644654365&t=5fc9b5fdad0a16264a9a9c09c14b3af9", // 商品图片链接 必填 goodsId: "unpoi_12345", // 商品ID 必填 goodsType: 2, // 商品类型 必填 goodsLabels: ["随时退", "免预约", "过期退"], // 商品标签 非必填 dateRule: "", // 使用规则 非必填, goodsPage: { path:"", params: {}, }, }, ], payment: { totalAmount: 40000, // 订单总价 必填 totalDiscountAmount: 10000, }, contactInfo: { phoneNumber: "12345678901", // 手机号 非必传 contactName: "test name", // 姓名 非必传 }, note: "for future", // 备注 非必传 merchantId: "", // 商户 ID 非必传 storeInfo: { storeName: "test store", // 商店名称 非必传 storeIcon: "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fpic.ibaotu.com%2Fgif%2F19%2F48%2F47%2F76Z888piCd6W.gif%21fwpaa50%2Ffw%2F700&refer=http%3A%2F%2Fpic.ibaotu.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1644654365&t=5fc9b5fdad0a16264a9a9c09c14b3af9", // 商店头像 非必填 }, callbackData: { test: 999999 }, // 透传数据,开发者自定义字段 非必传 tradeOption:{ life_trade_flag :0 // 0:非融合链路(默认值) 1:走融合链路(标准融合/完全融合) }, // 透传数据,开发者自定义字段 非必传 discountInfo: { type: 2, detail: { orderDiscount: { orderTotalDiscountAmount: 0, goodsTotalDiscountAmount: 10000, marketingInfo: [ { discountAmount: 3999, discountRange: 2, id: "activity_id_39_99_yuan_MOCK_1651049756913", note: "活动优惠", subtype: "商家侧子营销类型默认值", title: "[活动] 满 90.00 减 39.99 元", type: 4, }, { discountAmount: 4000, discountRange: 2, id: "coupon_id_40_yuan_MOCK_1651049756913", note: "用券优惠", subtype: "商家侧子营销类型默认值", title: "[券] 减 40.00 元", type: 2, }, { discountAmount: 1, discountRange: 2, id: "membership_id_1_fen_MOCK_1651049756913", note: "会员优惠", subtype: "商家侧子营销类型默认值", title: "[会员] 本店第 4 种会员类型 减 0.01 元", type: 1, }, { discountAmount: 2000, discountRange: 2, id: "score_id_20_yuan_MOCK_1651049756913", note: "积分优惠", subtype: "商家侧子营销类型默认值", title: "[积分] 本店第 3 种积分类型 减 20.00 元", type: 3, }, ], }, goodsDiscount: [ { goodsId: "unpoi_12345", quantity: 1, totalAmount: 40000, totalDiscountAmount: 10000, marketingInfo: [ { discountAmount: 2000, discountRange: 2, id: "score_id_20_yuan_MOCK_1651049756913", note: "积分优惠", subtype: "商家侧子营销类型默认值", title: "[积分] 本店第 3 种积分类型 减 20.00 元", type: 3, }, { discountAmount: 4000, discountRange: 2, id: "coupon_id_40_yuan_MOCK_1651049756913", note: "用券优惠", subtype: "商家侧子营销类型默认值", title: "[券] 减 40.00 元", type: 2, }, { discountAmount: 3999, discountRange: 2, id: "activity_id_39_99_yuan_MOCK_1651049756913", note: "活动优惠", subtype: "商家侧子营销类型默认值", title: "[活动] 满 90.00 减 39.99 元", type: 4, }, { discountAmount: 1, discountRange: 2, id: "membership_id_1_fen_MOCK_1651049756913", note: "会员优惠", subtype: "商家侧子营销类型默认值", title: "[会员] 本店第 4 种会员类型 减 0.01 元", type: 1, }, ], }, ], itemDiscount: [ { goodsId: "unpoi_12345", totalAmount: 40000, totalDiscountAmount: 10000, marketingInfo: [ { discountAmount: 2000, discountRange: 2, id: "score_id_20_yuan_MOCK_1651049756913", note: "积分优惠", subtype: "商家侧子营销类型默认值", title: "[积分] 本店第 3 种积分类型 减 20.00 元", type: 3, }, { discountAmount: 4000, discountRange: 2, id: "coupon_id_40_yuan_MOCK_1651049756913", note: "用券优惠", subtype: "商家侧子营销类型默认值", title: "[券] 减 40.00 元", type: 2, }, { discountAmount: 3999, discountRange: 2, id: "activity_id_39_99_yuan_MOCK_1651049756913", note: "活动优惠", subtype: "商家侧子营销类型默认值", title: "[活动] 满 90.00 减 39.99 元", type: 4, }, { discountAmount: 1, discountRange: 2, id: "membership_id_1_fen_MOCK_1651049756913", note: "会员优惠", subtype: "商家侧子营销类型默认值", title: "[会员] 本店第 4 种会员类型 减 0.01 元", type: 1, }, ], }, ], }, }, success: (res) => { const { orderId, outOrderNo } = res; console.log("success res", res); console.log("orderId", orderId, "outOrderNo", outOrderNo); this.setData({ orderId, outOrderNo }); }, fail: (res) => { const { orderId, outOrderNo, errNo, errMsg, errLogId } = res; if (errLogId) { console.log("预下单失败", errNo, errMsg, errLogId); } if (orderId || outOrderNo) { console.log("支付失败", errNo, errMsg, orderId, outOrderNo); } }, });

    传递 discountId

    tt.createOrder({ goodsList: [ { quantity: 1, // 购买数量 必填 price: 40000, // 商品价格 必填 discountAmount: 10000, goodsName: "测试商品", // 商品名称 必填 goodsPhoto: "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fpic.ibaotu.com%2Fgif%2F19%2F48%2F47%2F76Z888piCd6W.gif%21fwpaa50%2Ffw%2F700&refer=http%3A%2F%2Fpic.ibaotu.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1644654365&t=5fc9b5fdad0a16264a9a9c09c14b3af9", // 商品图片链接 必填 goodsId: "unpoi_12345", // 商品ID 必填 goodsType: 2, // 商品类型 必填 goodsLabels: ["随时退", "免预约"], // 商品标签 非必填 dateRule: "", // 使用规则 非必填, goodsPage: { path:"", params: {}, }, }, ], payment: { totalAmount: 40000, // 订单总价 必填 totalDiscountAmount: 10000, }, contactInfo: { phoneNumber: "12345678901", // 手机号 非必传 contactName: "test name", // 姓名 非必传 }, note: "for future", // 备注 非必传 merchantId: "", // 商户 ID 非必传 storeInfo: { storeName: "test store", // 商店名称 非必传 storeIcon: "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fpic.ibaotu.com%2Fgif%2F19%2F48%2F47%2F76Z888piCd6W.gif%21fwpaa50%2Ffw%2F700&refer=http%3A%2F%2Fpic.ibaotu.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1644654365&t=5fc9b5fdad0a16264a9a9c09c14b3af9", // 商店头像 非必填 }, callbackData: { test: 999999 }, // 透传数据,开发者自定义字段 非必传 tradeOption:{ life_trade_flag :0 // 0:非融合链路(默认值) 1:走融合链路(标准融合/完全融合) }, // 透传数据,开发者自定义字段 非必传 discountId: "discount_test", // 营销信息对应ID success: (res) => { const { orderId, outOrderNo } = res; console.log("success res", res); console.log("orderId", orderId, "outOrderNo", outOrderNo); this.setData({ orderId, outOrderNo }); }, fail: (res) => { const { orderId, outOrderNo, errNo, errMsg, errLogId } = res; if (errLogId) { console.log("预下单失败", errNo, errMsg, errLogId); } if (orderId || outOrderNo) { console.log("支付失败", errNo, errMsg, orderId, outOrderNo); } }, });

    外卖

    预约自提

    tt.createOrder({ businessLine: 3, skuList: [ { skuId: "7125710223771191340", // sku 商品Id 必传 skuType: 1, // sku 商品类型 必传 quantity: 2, // 数量 必传 price: 1, // 价格 非商品库 sku 商品必传 }, ], payment: { totalAmount: 7, // 订单总价 必填 feeDetailsList: [ { feeType: 1, // 费用类型 feeAmount: 5, }, ], }, deliveryInfo: { poiId: "5252345", bookType: 2, // 订单类型 deliveryType: 2, // 配送类型 bookInfo: { startTime: 1673686379, // 预约开始时间 endTime: 1673686380, // 预约结束时间 }, selfPickInfo: { startTime: 1673686379, // 自提开始时间 endTime: 1673686379, // 自提结束时间 shopInfo: { shopName: "自提店铺名", address: "自提地址", phoneNumber: "17283794820", }, }, receiptInfo: { startTime: 1673686379, // 收货开始时间 endTime: 1673686379, // 收货结束时间 }, }, success: (res) => { const { orderId, outOrderNo } = res; console.log("success res", res); console.log("orderId", orderId, "outOrderNo", outOrderNo); this.setData({ orderId, outOrderNo }); }, fail: (res) => { const { orderId, outOrderNo, errNo, errMsg, errLogId } = res; if (errLogId) { console.log("预下单失败", errNo, errMsg, errLogId); } if (orderId || outOrderNo) { this.setData({ orderId, outOrderNo }); console.log("支付失败", errNo, errMsg, orderId, outOrderNo); } console.log(errNo, errMsg); }, });

    立即配送

      使用抖音地址
    tt.createOrder({ businessLine: 3, skuList: [ { skuId: "7125710223771191340", // sku 商品Id 必传 skuType: 1, // sku 商品类型 必传 quantity: 2, // 数量 必传 price: 1, // 价格 非商品库 sku 商品必传 }, ], payment: { totalAmount: 7, // 订单总价 必填 feeDetailsList: [ { feeType: 1, // 费用类型 feeAmount: 3, }, { feeType: 2, // 费用类型 feeAmount: 2, }, ], }, deliveryInfo: { poiId: "5252345", bookType: 1, // 订单类型 deliveryType: 1, // 配送类型 receiptInfo: { startTime: 1673686379, // 收货开始时间 endTime: 1673686379, // 收货结束时间 }, }, addressInfo: { addressId: "7152719985352212780", }, success: (res) => { const { orderId, outOrderNo } = res; console.log("success res", res); console.log("orderId", orderId, "outOrderNo", outOrderNo); this.setData({ orderId, outOrderNo }); }, fail: (res) => { const { orderId, outOrderNo, errNo, errMsg, errLogId } = res; if (errLogId) { console.log("预下单失败", errNo, errMsg, errLogId); } if (orderId || outOrderNo) { this.setData({ orderId, outOrderNo }); console.log("支付失败", errNo, errMsg, orderId, outOrderNo); } console.log(errNo, errMsg); }, });
      使用非抖音地址
    tt.createOrder({ businessLine: 3, skuList: [ { skuId: "7125710223771191340", // sku 商品Id 必传 skuType: 1, // sku 商品类型 必传 quantity: 2, // 数量 必传 price: 1, // 价格 非商品库 sku 商品必传 }, ], payment: { totalAmount: 7, // 订单总价 必填 feeDetailsList: [ { feeType: 1, // 费用类型 feeAmount: 3, }, { feeType: 2, // 费用类型 feeAmount: 2, }, ], }, contactInfo: { phoneNumber: "12345678901", // 手机号 非必传 contactName: "test name", // 姓名 非必传 gender: 1, }, deliveryInfo: { poiId: "5252345", bookType: 1, // 订单类型 deliveryType: 1, // 配送类型 receiptInfo: { startTime: 1673686379, // 收货开始时间 endTime: 1673686379, // 收货结束时间 }, }, addressInfo: { locationInfo: { provinceCode: "440000", provinceName: "广东省", cityCode: "440300", cityName: "深圳市", districtCode: "440303", districtName: "罗湖区", locationAddress: "广东省深圳市罗湖区东门街道人民北路3101号", }, doorNumber: "99号", // 门牌号 }, success: (res) => { const { orderId, outOrderNo } = res; console.log("success res", res); console.log("orderId", orderId, "outOrderNo", outOrderNo); this.setData({ orderId, outOrderNo }); }, fail: (res) => { const { orderId, outOrderNo, errNo, errMsg, errLogId } = res; if (errLogId) { console.log("预下单失败", errNo, errMsg, errLogId); } if (orderId || outOrderNo) { this.setData({ orderId, outOrderNo }); console.log("支付失败", errNo, errMsg, orderId, outOrderNo); } console.log(errNo, errMsg); }, });

    Bug & Tip

      Tip:字符串是 UTF-8 编码,一个汉字 3 个字节,一个字母 1 个字节,一个数字为 1 个字节;
      Tip:如果抖音版本过低,没有这个 JSAPI,可以使用 tt.canIUse('createOrder') 判断是否在当前版本可用;
      Tip:IDE 目前由于登录态原因不支持调试,调试 JSAPI 请以预览扫码的小程序调试结果为准。
      Tip:当 businessLine = 3 即外卖业务线时,需要在代码中配置行业 SDK 的权限:行业 SDK 的权限配置,行业 SDK 的权限配置在基础库 2.74.0.0 抖音版本 23.0 以上支持,API 用法跟原来一致。