# 生成订单
# 接口调用请求说明
该接适用于使用ticket支付校验
方案或不需要拉起收银台(requestOrderPayment)的场景,详情请见开发指引第3.3节
注意:该接口可重入,如果order_id
或out_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 | 是 | 下单时小程序的场景值,可通getLaunchOptionsSync或onLaunch/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 | 用户主动取消/待付款超时取消/商家取消 |