Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

OrderService

订单全生命周期管理服务,涵盖下单、支付、查询和状态管理。订单状态从 pending 开始流转,支付成功后异步触发资源开通。

RPC 列表

RPC描述权限
CreateOrder创建订单(可选同步返回支付信息)已认证(customer)
ListOrders订单列表(分页+筛选)admin 全量 / customer 自身
GetOrder获取订单详情admin 全量 / customer 自身
UpdateOrder更新订单状态/备注admin
DeleteOrder删除订单admin
PayOrder发起支付已认证(customer)

CreateOrder

描述

创建新订单,可选择是否在创建时同时发起支付。

Request — CreateOrderRequest

字段类型编号必填描述
customer_idstring1客户 ID(UUID)
product_idstring2商品 ID(UUID)
provider_interface_idstring3Provider 接口 ID(UUID)
server_specServerSpec4服务器规格配置
currencystring5货币代码(如 "CNY"
gateway_interface_idstring6支付网关接口 ID(UUID)
notesstring7备注
billing_cyclestring8计费周期:"monthly" / "quarterly" / "yearly"

Response — CreateOrderResponse

字段类型编号描述
orderOrderInfo1创建的订单信息
paymentPaymentInfo?2支付信息(如果创建时请求支付)

错误码

错误说明
InvalidArgument参数校验失败(商品不存在、接口无效等)
NotFound商品、接口或客户不存在
Unauthenticated未登录

示例

grpcurl -plaintext -H "authorization: Bearer <token>" \
  -d '{"customer_id":"0192a123-...","product_id":"0192b456-...","provider_interface_id":"0192c789-...","server_spec":{"cpu_cores":2,"memory_gb":4,"disk_gb":50,"bandwidth_mbps":100,"region":"us-west","os":"ubuntu-22.04"},"currency":"CNY","gateway_interface_id":"0192d012-...","notes":"","billing_cycle":"monthly"}' \
  localhost:50051 rustbill.order.OrderService/CreateOrder
const resp = await api.createOrder({
  customer_id: "0192a123-...",
  product_id: "0192b456-...",
  provider_interface_id: "0192c789-...",
  server_spec: {
    cpu_cores: 2,
    memory_gb: 4,
    disk_gb: 50,
    bandwidth_mbps: 100,
    region: "us-west",
    os: "ubuntu-22.04"
  },
  currency: "CNY",
  gateway_interface_id: "0192d012-...",
  notes: "",
  billing_cycle: "monthly"
});

ListOrders

描述

分页查询订单列表。Admin 用户可查看所有订单,Customer 用户自动限定为自身订单。

Request — ListOrdersRequest

字段类型编号必填描述
paginationPageRequest1分页参数
customer_idstring?2按客户过滤(admin 可用)
statusstring?3按状态过滤
provider_interface_idstring?4按 Provider 接口过滤
searchstring?5关键词搜索

Response — ListOrdersResponse

字段类型编号描述
ordersrepeated OrderInfo1订单列表
metaPageMeta2分页元数据

示例

grpcurl -plaintext -H "authorization: Bearer <token>" \
  -d '{"pagination":{"page":1,"page_size":20},"status":"active"}' \
  localhost:50051 rustbill.order.OrderService/ListOrders

GetOrder

描述

获取单个订单详情。

Request — GetOrderRequest

字段类型编号必填描述
idstring1订单 ID(UUID)

Response — GetOrderResponse

字段类型编号描述
orderOrderInfo1订单信息

错误码

错误说明
NotFound订单不存在
PermissionDeniedcustomer 用户无权查看他人订单

示例

grpcurl -plaintext -H "authorization: Bearer <token>" \
  -d '{"id":"0192a123-4567-7890-abcd-ef0123456789"}' \
  localhost:50051 rustbill.order.OrderService/GetOrder

UpdateOrder

描述

更新订单状态、Provider 实例 ID 或备注。

Request — UpdateOrderRequest

字段类型编号必填描述
idstring1订单 ID
statusstring?2新状态
provider_instance_idstring?3上游实例 ID
notesstring?4备注

Response — UpdateOrderResponse

字段类型编号描述
orderOrderInfo1更新后的订单信息

错误码

错误说明
NotFound订单不存在
InvalidArgument状态流转不合法
PermissionDenied非 admin 用户

示例

grpcurl -plaintext -H "authorization: Bearer <token>" \
  -d '{"id":"0192a123-...","status":"active","notes":"已开通"}' \
  localhost:50051 rustbill.order.OrderService/UpdateOrder

DeleteOrder

描述

删除指定订单。

Request — DeleteOrderRequest

字段类型编号必填描述
idstring1订单 ID(UUID)

Response — DeleteOrderResponse

无字段。

错误码

错误说明
NotFound订单不存在
PermissionDenied非 admin 用户

示例

grpcurl -plaintext -H "authorization: Bearer <token>" \
  -d '{"id":"0192a123-4567-7890-abcd-ef0123456789"}' \
  localhost:50051 rustbill.order.OrderService/DeleteOrder

PayOrder

描述

对指定订单发起支付。调用 PaymentGateway 插件生成支付链接或二维码。支付成功后 event_worker 异步触发资源开通。

Request — PayOrderRequest

字段类型编号必填描述
order_idstring1订单 ID(UUID)
gateway_interface_idstring2支付网关接口 ID(UUID)

Response — PayOrderResponse

字段类型编号描述
paymentPaymentInfo1支付信息

PaymentInfo

字段类型编号描述
payment_idstring1支付记录 ID
gateway_interface_idstring2网关接口 ID
payment_urlstring3支付页面 URL
qr_codestring4二维码内容(Base64 或 URL)
instructionsstring5支付说明

错误码

错误说明
NotFound订单不存在
InvalidArgument订单状态不允许支付(如已支付或已取消)
Internal网关插件执行失败
Unauthenticated未登录

示例

grpcurl -plaintext -H "authorization: Bearer <token>" \
  -d '{"order_id":"0192a123-...","gateway_interface_id":"0192d012-..."}' \
  localhost:50051 rustbill.order.OrderService/PayOrder
const resp = await api.payOrder({
  order_id: "0192a123-...",
  gateway_interface_id: "0192d012-..."
});
// resp.payment.payment_url → 跳转到支付页面

公共类型

OrderInfo

字段类型编号描述
idstring1订单 UUID
customer_idstring2客户 ID
product_idstring3商品 ID
provider_interface_idstring4Provider 接口 ID
provider_instance_idstring5上游实例 ID(开通后填充)
server_specServerSpec6服务器规格
statusstring7订单状态
amountstring8订单金额(字符串)
currencystring9货币代码
gateway_interface_idstring10支付网关接口 ID
gateway_payment_idstring11网关支付 ID(支付后填充)
notesstring12备注
created_atstring13创建时间(RFC3339)
updated_atstring14更新时间(RFC3339)
product_namestring15商品名称(冗余)
billing_cyclestring16计费周期:"monthly" / "quarterly" / "yearly"

ServerSpec

字段类型编号描述
cpu_coresuint321CPU 核心数
memory_gbuint322内存(GB)
disk_gbuint323磁盘(GB)
bandwidth_mbpsuint324带宽(Mbps)
regionstring5地域
osstring6操作系统
extra_specsmap<string,string>7扩展规格键值对

订单状态流转

pending → paid → provisioning → active / suspended / cancelled / refunded / completed
                                      ↓
                                  terminated
状态说明
pending待支付
paid已支付(等待开通)
provisioning开通中
active运行中
suspended已暂停
cancelled已取消
refunded已退款
completed已完成