# 生成订单

# 接口调用请求说明

该接适用于使用ticket支付校验方案或不需要拉起收银台(requestOrderPayment)的场景,详情请见开发指引第3.3节

注意:该接口可重入,如果order_idout_order_id已存在,会直接更新整个订单数据

请求成功后将会创建一个status=10的订单(status枚举见下文)

每个ticket只能消费一次,创建订单接口可以多次调,但是不是生成新ticket要视情况而定 场景A: 第一次生成ticketA,拉起收银台消费ticketA后ticketA就失效了 第二次再调就生成新的ticketB了

场景B: 第一次生成ticketA,不调收银台消费这个ticket,那么24小时内再调生成的还是ticketA,超过24小时生成的是新的ticketA'

目前只有订单支付成功后进入的才会将订单同步至订单中心。

对于合单支付需要拆单的情况,请以母单同步。

http请求方式:POST
https://api.weixin.qq.com/shop/order/add?access_token=xxxxxxxxx

# 请求参数示例一(普通支付场景)

{
    "create_time": "2020-03-25 13:05:25",
    "out_order_id": "xxxxx",                  // 必填,普通场景下的外部订单ID;合单支付(多订单合并支付一次)场景下是主外部订单ID
    "openid": "oTVP50O53a7jgmawAmxKukNlq3XI",
    "path": "/pages/order.html?out_order_id=xxxxx",     // 这里的path中的最好有一个参数的值能和out_order_id的值匹配上
    "scene": 1177,                          // 下单时小程序的场景值,可通过[getLaunchOptionsSync](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/life-cycle/wx.getLaunchOptionsSync.html)或[onLaunch/onShow](https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.html#onLaunch-Object-object)拿到
    "out_user_id": "323232323",
    "order_detail":
    {
        "product_infos":
        [
            {
                "out_product_id": "12345",
                "out_sku_id":"23456",
                "product_cnt": 10,
                "sale_price": 100,   //生成这次订单时商品的售卖价,可以跟上传商品接口的价格不一致
                "real_price": 100,  // 扣除优惠后单件sku的分摊价格(单位:分),如果没优惠则与sale_price一致
                "path": "pages/productDetail/productDetail?productId=2176180",
                "title" : "洗洁精",
                "head_img": "http://img10.360buyimg.com/n1/s450x450_jfs/t1/85865/39/13611/488083/5e590a40E4bdf69c0/55c9bf645ea2b727.jpg",
            },
            ...
        ],
        "pay_info": {
            "pay_method_type": 0,       // 0: 微信支付, 1: 货到付款, 2: 商家会员储蓄卡(默认0)
            "prepay_id": "42526234625", // pay_method_type = 0时必填
            "prepay_time": "2020-03-25 14:04:25"
        },
        "price_info": {         // 注意价格字段的单价是分,不是元
            "order_price": 1600,
            "freight": 500,
            "discounted_price": 100,
            "additional_price": 200,
            "additional_remarks": "税费"
        }
    },
    "delivery_detail": {
        "delivery_type": 1,     // 1: 正常快递, 2: 无需快递, 3: 线下配送, 4: 用户自提
    },
    "address_info": {
        "receiver_name": "张三",
        "detailed_address": "详细收货地址信息",
        "tel_number": "收货人手机号码",
        "country": "国家,选填",
        "province": "省份,选填",
        "city": "城市,选填",
        "town": "乡镇,选填"
    }
}

# 回包示例

{
    "errcode": 0,
    "errmsg":"ok",
    "data":
    {
        "order_id":32434234,
        "out_order_id": "xxxxx",
        "ticket": "xxxxxxx",
        "ticket_expire_time": "2020-12-01 00:00:00",
        "final_price": 10500        //final_price=product_price+freight-discounted_price+additional_price
    }
}

# 请求参数说明

参数 类型 是否必填 说明
create_time string 创建时间,yyyy-MM-dd HH:mm:ss
out_order_id string 商家自定义订单ID
openid string 用户的openid
path string 商家小程序该订单的页面path,用于微信侧订单中心跳转
scene number 下单时小程序的场景值,可通getLaunchOptionsSynconLaunch/onShow拿到
order_detail.product_infos[].out_product_id string 商家自定义商品ID
order_detail.product_infos[].out_sku_id string 商家自定义商品skuID,可填空字符串(如果这个product_id下没有sku)
order_detail.product_infos[].product_cnt number 购买的数量
order_detail.product_infos[].sale_price number 生成订单时商品的售卖价(单位:分),可以跟上传商品接口的价格不一致
order_detail.product_infos[].real_price number 扣除优惠后单件sku的均摊价格(单位:分),如果没优惠则与sale_price一致
order_detail.product_infos[].head_img string 生成订单时商品的头图
order_detail.product_infos[].title string 生成订单时商品的标题
order_detail.product_infos[].path string 绑定的小程序商品路径
order_detail.pay_info.pay_method_type number 支付方式,0,微信支付,1: 货到付款,2:商家会员储蓄卡(默认0)
order_detail.pay_info.prepay_id string 预支付ID,支付方式为“微信支付”必填
order_detail.pay_info.prepay_time string 预付款时间(拿到prepay_id的时间), 支付方式为“微信支付”必填,yyyy-MM-dd HH:mm:ss
order_detail.price_info.order_price number 该订单最终的实付金额(单位:分)
order_detail.price_info.freight number 运费(单位:分)
order_detail.price_info.discounted_price number 优惠金额(单位:分)
order_detail.price_info.additional_price number 附加金额(单位:分)
order_detail.price_info.additional_remarks string 附加金额备注
delivery_detail.delivery_type number 1: 正常快递, 2: 无需快递, 3: 线下配送, 4: 用户自提 (默认1)
address_info object 地址信息,delivery_type = 2 无需设置, delivery_type = 4 填写自提门店地址
address_info.receiver_name string 收件人姓名
address_info.detailed_address string 详细收货地址信息
address_info.tel_number string 收件人手机号码
address_info.country string 国家
address_info.province string 省份
address_info.city string 城市
address_info.town string 乡镇

# 关于价格

order_price = 商品总价(sum(sale_price)) + freight - discounted_price

# 回包参数说明

参数 类型 说明
errcode number 错误码
errmsg string 错误信息
data.order_id number(uint64) 交易组件平台订单ID
data.out_order_id string 交易组件平台订单ID
data.ticket string 拉起收银台的ticket
data.ticket_expire_time string ticket有效截止时间
data.final_price number 订单最终价格(单位:分)

# 枚举-status

枚举值 描述
10 待付款
11 收银台支付完成(自动流转,对商家来说和10同等对待即可)
20 待发货(已付款/用户已付尾款)
30 待收货
100 完成
200 全部商品售后之后,订单取消
250 用户主动取消/待付款超时取消/商家取消