订单查询
订单查询包括查询订单详情和获取订单列表。
查询订单详情
通过订单的流水号(transactionNo),来查询该订单的详细信息。通常用于:
- 查询订单列表中某个订单的详细信息;
- 用户发起支付,并在微信或支付宝完成支付后,调用该接口获取订单的详细信息。开发者可以根据该订单的状态进行后续操作,比如订单状态(status)为 success 时,给用户发送商品。
let transactionNo = "xxxxxxxxxx"
Pay.shared.order(transactionNo) { (order, error) in
}
NSString *transactionNo = @"xxxxxxxxxx";
[BaaSPay.shared order:transactionNo completion:^(BaaSOrder * _Nullable order, NSError * _Nullable error) {
}];
参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| transactionNo | String | Y | 知晓云平台所记录的流水号 |
返回结果
| 名称 | 类型 | 说明 |
|---|---|---|
| order | Order | 订单信息,详见 数据类型 小节 |
| error | NSError | 错误信息,参考错误处理和错误码 |
订单查询
OrderQuery 继承 Query, 并定义了订单状态、退款状态、支付方式、trade_no、transaction_no、merchandise_record_id、merchandise_schema_id 等 7 种查询条件。
// 1. 创建查询条件
let query = OrderQuery()
// 2. 设置查询条件
// 通过订单状态查询:订单状态为 success
query.status = .success
// 通过订单状态查询:订单状态为 pending
query.status = .pending
// 通过退款状态查询:退款状态为 complete
query.refundStatus = .complete
// 通过退款状态查询:订单状态为 partial
query.refundStatus = .partial
// 通过支付方式查询:支付方式为 weixin
query.gateWayType = .weixin
// 通过支付方式查询:订单状态为 alipay
query.gateWayType = .alipay
// 通过 trade_no 查询
query.tradeNo = "xxxxxxxxxxxxxx"
// 通过 transaction_no 查询
query.transactionNo = "xxxxxxxxxxxxxx"
// 通过 merchandise_record_id 查询
query.merchandiseRecordId = "xxxxxxxxxxxxxx"
// 通过 merchandise_schema_id 查询
query.merchandiseSchemaId = "xxxxxxxxxxxxxx"
// 设置分页
query.limit = 10
query.offset = 0
// 3. 开始查询
Pay.shared.orderList(query: query) { (result, error) in
}
// 1. 创建查询条件
BaaSOrderQuery *query = [[BaaSOrderQuery alloc] init];
// 2. 设置查询条件
// 通过订单状态查询:订单状态为 success
query.status = BaaSOrderStatusSuccess;
// 通过订单状态查询:订单状态为 pending
query.status = BaaSOrderStatusPending;
// 通过退款状态查询:退款状态为 complete
query.status = BaaSRefundStatusComplete;
// 通过订单状态查询:退款状态为 partial
query.status = BaaSRefundStatusPartial;
// 通过支付方式查询:支付方式为 weixin
query.status = BaaSGateWayTypeWeixin;
// 通过支付方式查询:支付方式为 alipay
query.status = BaaSGateWayTypeAlipay;
// 通过 trade_no 查询
query.tradeNo = @"xxxxxxxxxxxxxx";
// 通过 transaction_no 查询
query.transactionNo = @"xxxxxxxxxxxxxx";
// 通过 merchandise_record_id 查询
query.merchandiseRecordId = @"xxxxxxxxxxxxxx";
// 通过 merchandise_schema_id 查询
query.merchandiseSchemaId = @"xxxxxxxxxxxxxx";
// 设置分页
query.limit = 10;
query.offset = 0;
// 3. 开始查询
[BaaSPay.shared orderListWithQuery:query completion:^(BaaSOrderList * _Nullable orders, NSError * _Nullable error) {
}];
参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| query | OrderQuery | N | 查询条件 |
可以设置的查询条件,有订单状态: OrderStatus、退款状态 RefundStatus、支付类型 GateWayType,详见 数据类型 小节
返回结果
| 名称 | 类型 | 说明 |
|---|---|---|
| listResult | OrderList | 文件分类列表结果,详见 数据类型 小节 |
| error | NSError | 错误信息,参考错误处理和错误码 |
数据类型
Order
订单信息
| 属性 | 类型 | 说明 |
|---|---|---|
| Id | String | 订单 ID |
| tradeNo | String | 真正的交易 ID, 业务方在微信后台对账时可看到此字段 |
| transactionNo | String | 知晓云平台所记录的流水号 |
| currencyType | String | 货币类型 |
| totalCost | CGFloat | 金额 |
| status | String | 订单支付状态 |
| createdBy | String | 创建订单的用户 ID |
| createdAt | TimeInterval | 订单创建时间 |
| updatedAt | TimeInterval | 订单更新时间 |
| payAt | TimeInterval | 支付时间 |
| refundStatus | String | 退款状态 |
| gateWayType | String | 支付类型:可选值有:weixin_tenpay(微信支付)、alipay(支付宝支付) |
| merchandiseRecordId | String | 商品记录 ID |
| merchandiseSchemaId | String | 商品表 ID |
| merchandiseDescription | String | 商品详情描述 |
| gatewayExtraInfo | Dictionary | 支付结果返回信息 |
支付结果返回信息 gatewayExtraInfo 参数说明
gatewayExtraInfo 目前只支持 gateWayType == 'weixin_tenpay'(微信支付)时,返回支付成功后回调的订单详细信息。
gatewayExtraInfo 返回的数据结构如下:
{
"wechat_response": {
"appid": "wx3b040d33346exxxx",
"bank_type": "OTHERS",
"cash_fee": "1",
"fee_type": "CNY",
"is_subscribe": "N",
"mch_id": "1501889000",
"nonce_str": "1jFEJyNvEkr2IePMYXOeUEOHP11eXXXX",
"openid": "om4vu0FZiwoQbTVAt0U-FEzXXXXX",
"out_trade_no": "1jFEJyxlAuqzAtGcd4uuNxJwMS1TXXXX",
"result_code": "SUCCESS",
"return_code": "SUCCESS",
"sign": "AB329F580E6E342246350DFE96AEXXXX",
"time_end": "20200320175220",
"total_fee": "1",
"trade_type": "JSAPI",
"transaction_id": "4200000519202003205153312216"
}
}
wechat_response 中部分关键字段:
| 参数 | 类型 | 说明 |
|---|---|---|
| appid | String | 微信分配的小程序ID |
| bank_type | String | 银行类型,采用字符串类型的银行标识,银行类型见银行列表 |
| total_fee | String | 订单总金额,单位为分 |
| is_subscribe | String | 用户是否关注公众账号,Y-关注,N-未关注 |
| fee_type | String | 货币类型,符合ISO4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型 |
具体返回参数详情可参照微信支付结果通知
OrderList
OrderList 表示一次查询数据库所返回的订单列表以及元数据。
| 属性 | 类型 | 说明 |
|---|---|---|
| limit | Int | 返回内容的最大个数 |
| offset | Int | 返回内容的起始偏移值 |
| totalCount | Int | 实际返回的内容总数 |
| next | String | 下一页地址 |
| previous | String | 上一页地址 |
| orders | Array |
内容列表,每个元素为 Order 类型 |
订单状态
OrderStatus
| 类型 | 说明 |
|---|---|
| success | 支付成功 |
| pending | 待支付 |
| all | 全部,默认 |
BaaSOrderStatus
| 类型 | 说明 |
|---|---|
| BaaSOrderStatusSuccess | 支付成功 |
| BaaSOrderStatusPending | 待支付 |
| BaaSOrderStatusAll | 全部支付状态,默认 |
退款状态
RefundStatus
| 类型 | 说明 |
|---|---|
| complete | 退款成功 |
| partial | 部分退款 |
| all | 全部退款状态,默认 |
BaaSRefundStatus
| 类型 | 说明 |
|---|---|
| BaaSRefundStatusComplete | 退款成功 |
| BaaSRefundStatusPartial | 部分退款 |
| BaaSRefundStatusAll | 全部退款状态,默认 |
支付方式
GateWayType
| 类型 | 说明 |
|---|---|
| weixin | 微信支付 |
| alipay | 支付宝 |
| all | 全部支付方式,默认 |
BaaSGateWayType
| 类型 | 说明 |
|---|---|
| BaaSGateWayTypeWeixin | 微信支付 |
| BaaSGateWayTypeAlipay | 支付宝 |
| BaaSGateWayTypeAll | 全部支付方式,默认 |
