结算(Checkout)
创建结算 checkout
POST /api/checkout/
Headers
注意:该请求需要在request header中添加Accept: application/json; version=2.0
headers: { accept: 'application/json;version=2.0' }
数据格式
cart_token: [cartToken], // 购物车token, 可选
lines: [
{
variant_id: [variantId], // 商品规格 ID
quantity: [quantity] // 商品规格数量
}
]
返回响应说明
字段 | 说明 |
---|---|
token | string 型,checkout 的 token |
polling | boolean 型,服务器是否正在处理订单 |
发送请求
POST /api/checkout/
HEADERS {
accept: 'application/json;version=2.0'
}
PAYLOAD {
lines: [
{
variant_id: 12695,
quantity: 1
}
]
}
返回结果
{
"token": "43cb957cb01589d420241c173877760abd157712",
"polling": true
}
获取结算订单信息
GET /api/checkout/[token]/
发送请求
GET /api/checkout/43cb957cb01589d420241c173877760abd157712/
返回结果
在创建checkout 之后立即获取 /checkout/[token]/ 的话,服务器可能还在进行处理,这个时候返回的状态码是 202
,根据状态码来判断是否继续轮询该 checkout,直到报错或者获取到 checkout 信息
- status.code: 202
{ "detail": "Order is being processed Expected available in 3 seconds.", "code": "throttled" }
- checkout 处理完成,返回详细信息
{ "token": "37ca40ab6fd71b8cb7e9815efa5ae95b6f3c22af", "customer": null, "requires_shipping": true, "full_name": "", "email": "", "mobile": "", "buyer_accepts_marketing": true, "total_line_items_price": "0.01", "total_discounts": "0.00", "shipping_cost": "0.10", "total_weight": "0.00", "total_price": "0.11", "attributes": {}, "note": "", "created_at": "2021-05-12T15:40:58.770985+08:00", "updated_at": "2021-05-12T15:40:58.948522+08:00", "shipping_address": null, "lines": [ { "id": 6485722, "image": "", "title": "aasaaa - 名称: 50.00 元代金券", "requires_shipping": true, "product_title": "aasaaa", "variant_title": "名称: 50.00 元代金券", "sku": "DC771C", "barcode": "", "quantity": 1, "price": "0.01", "total_price": "0.01", "total_discount": "0.0000", "variant": { "id": 12695, "sku": "DC771C", "barcode": "", "title": "名称: 50.00 元代金券", "image": { "src": "", "metafield": {} }, "price": "0.01", "compare_at_price": null, "grams": "0.00", "options": [ { "title": "名称", "value": "50.00 元代金券" } ], "created_at": "2017-05-19T16:21:17.752352+08:00", "updated_at": "2021-04-21T18:40:28.261188+08:00" }, "product": { "id": 7574, "name": "FD1B6B", "image": { "src": "", "metafield": {} }, "title": "aasaaa", "description": "", "price": "0.01", "compare_at_price": null, "published": true, "published_at": "2020-12-22T14:02:36.323000+08:00", "created_at": "2017-05-19T16:21:17.673717+08:00", "updated_at": "2021-04-30T14:31:50.794708+08:00" }, "fulfillment_status": "pending", "shipping_method_group_id": 858, "selectable_shipping_methods": [ { "id": 1946, "rate_type": "fixed", "is_enabled": true, "title": "普通快递", "normal_price": "0.10", "normal_unit": "0.00", "over_price": "0.00", "over_unit": "0.00", "free_shipping_policy": "nope", "free_shipping_price": "0.00", "group_id": 858 } ], "shipping_method_id": 1946, "attributes": {} } ], "discounts": [], "coupon_codes": [], "is_fulfillment_silent": false, "shipping_cost_options": [ { "shipping_method_group_id": 858, "shipping_methods": [ { "shipping_method_id": 1946, "title": "普通快递", "cost": 0.1 } ] } ], "redeem_points": 0, "points_price": "0.00" }
绑定结算到买家账户
和上面的「获取结算订单信息」基本一致,只需要添加 Authorization: customertoken xxxxxxx 的 Request Header
GET /api/checkout/[token]/
HEADERS {
Authorization: customertoken [custonerToken]
}
发送请求
GET /api/checkout/43cb957cb01589d420241c173877760abd157712/
HEADERS {
Authorization: customertoken 12345678932767627167261s67617167
}
返回结果
在创建checkout 之后立即获取 /checkout/[token]/ 的话,服务器可能还在进行处理,这个时候返回的状态码是 202
,根据状态码来判断是否继续轮询该 checkout,直到报错或者获取到 checkout 信息
- status.code: 202
{ "detail": "Order is being processed Expected available in 3 seconds.", "code": "throttled" }
- checkout 处理完成,返回详细信息 同获取结算订单信息接口 返回完整的订单信息,且订单信息里的 customer 是 customertoken 对应的用户
更新结算订单信息
PATCH /api/checkout/[token]/
数据格式
{
"requires_shipping": true,
"full_name": "测试123",
"email": "test@test.com",
"mobile": "12345678912",
"note": "test"
}
发送请求
PATCH /api/checkout/5bfa16225a258eb0b9a87f9bc10df6bb418e85c1/
返回结果
同获取结算订单信息接口 返回完整的订单信息
删除结算订单
DElETE /api/checkout/[token]/
发送请求
DElETE /api/checkout/5bfa16225a258eb0b9a87f9bc10df6bb418e85c1/
返回结果
http 204
更新收获地址
PUT /api/checkout/[token]/update_address/
数据格式
{
"customer_address_id": 1001 //买家地址信息的ID值
}
发送请求
PUT /api/checkout/5bfa16225a258eb0b9a87f9bc10df6bb418e85c1/update_address/
返回结果
同获取结算订单信息接口 返回完整的订单信息
查询可使用的优惠码
GET /api/checkout/[token]/available_coupon_codes/
发送请求
GET /api/checkout/5bfa16225a258eb0b9a87f9bc10df6bb418e85c1/available_coupon_codes/
返回结果
[
{
"id": 27502,
"coupon": {
"id": 988,
"title": "test3",
"verbose_title": "10% off",
"description": "",
"token": "54bc2b420c4612e1f35c",
"code_prefix": "ArApJBDB",
"discount_type": "percentage",
"value": "10.00",
"minimum_amount": "0.00",
"starts_at": "2017-10-10T16:51:30+08:00",
"ends_at": null,
"is_forever": true,
"quantity": 100,
"redeem_count": 1,
"created_at": "2017-10-10T16:52:01.141630+08:00"
},
"code": "ArApJBDBfa89f8",
"status": "unused",
"verbose_title": "10% off",
"used_at": null
},
...
]
绑定优惠券
POST /api/checkout/[token]/add_coupon/
数据格式
{
"code_prefix": [优惠券兑换码],
"id": [已兑换优惠券的ID],
"code": [已兑换优惠券的优惠码 code ]
}
code_prefix
/id
/code
三选一
发送请求
POST /api/checkout/5bfa16225a258eb0b9a87f9bc10df6bb418e85c1/add_coupon/
PAYLOAD {
code: "TEST1234567890TEST"
}
返回结果
同获取结算订单信息接口 返回完整的订单信息
移除折扣
POST /api/checkout/[token]/remove_coupons/
发送请求
POST /api/checkout/5bfa16225a258eb0b9a87f9bc10df6bb418e85c1/remove_coupons/
返回结果
同获取结算订单信息接口 返回完整的订单信息
绑定寄送方式
POST /api/checkout/[token]/bind_shipping_method/
数据格式
[
{
"orderline_id": 27472, //订单条目的id值
"shipping_method_id": 3244 //寄送方式的id值
}
]
发送请求
POST /api/checkout/5bfa16225a258eb0b9a87f9bc10df6bb418e85c1/bind_shipping_method/
返回结果
同获取结算订单信息接口 返回完整的订单信息
生成订单(未支付、未发货)
POST /api/checkout/[token]/place_order/
发送请求
POST /api/checkout/06f7be87803779f056d51d41523b29131abd2c74/place_order/
返回结果
此时 checkout 已被生成订单 order
{
"id": 5155974, // 订单 ID
"token": "43cb957cb01589d420241c173877760abd157712"
}
查询可使用的代金券
GET /api/checkout/[token]/available_vouchers/
发送请求
GET /api/checkout/5bfa16225a258eb0b9a87f9bc10df6bb418e85c1/available_vouchers/
返回结果
[
{
"id": 350,
"customer": {
"id": 11409,
"mobile": "139xxxx2923",
"full_name": "测试",
"gender": "unknown",
"email": "",
"birthday": null,
"note": "",
"accepts_marketing": true,
"created_at": "2017-09-11T15:14:52.940800+08:00",
"updated_at": "2017-09-11T15:16:27.940411+08:00",
"tags": [],
"addresses": [
{
"id": 5965,
"is_default": true,
"address1": "xxx",
"address2": "",
"district": "普陀区",
"city": "市辖区",
"province": "上海市",
"country": "",
"full_name": "测试",
"mobile": "13916712923",
"place_code": "310107",
"place": {
"id": 866,
"name": "普陀区",
"code": "310107",
"parent": 861,
"area": "",
"short_name": "普陀区",
"pinyin": "PuTuoQu"
}
},
...
}
],
"segments": [],
"last_order_id": null,
"last_order_paid_at": null,
"abandoned_checkouts": 4,
"orders": 20,
"paid_orders": 12,
"total_spent": "1064.27",
"average_order_price": "0.00",
"visits": 0,
"visits_per_day": "0.00",
"customers_referred": 0,
"total_spent_of_referred": "0.00"
},
"code": "ABC3AE42BEE5F706",
"title": "Voucher",
"total_balance": "100.00",
"balance": "100.00",
"status": "available",
"white_product_ids": [],
"black_product_ids": [],
"minimum_amount": "0.00",
"expire_days": 360,
"activate_expires_at": "2017-10-10T16:32:38+08:00",
"starts_at": "2017-10-10T16:32:46.450484+08:00",
"ends_at": "2018-10-05T16:32:46.450484+08:00",
"available_amount": 0.01
},
...
]