订单查询
订单查询包括查询订单详情和获取订单列表。
查询订单详情
通过订单的流水号(transactionNo),来查询该订单的详细信息。通常用于:
- 查询订单列表中某个订单的详细信息;
- 用户发起支付,并在微信或支付宝完成支付后,调用该接口获取订单的详细信息。开发者可以根据该订单的状态进行后续操作,比如订单状态(status)为 success 时,给用户发送商品。
{% tabs swift1=”Swift”, oc1=”Objective-C” %} {% content “swift1” %}
let transactionNo = "xxxxxxxxxx"Pay.shared.order(transactionNo) { (order, error) in}
{% content “oc1” %}
NSString *transactionNo = @"xxxxxxxxxx";[BaaSPay.shared order:transactionNo completion:^(BaaSOrder * _Nullable order, NSError * _Nullable error) {}];
{% endtabs %}
参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| transactionNo | String | Y | 知晓云平台所记录的流水号 |
返回结果
| 名称 | 类型 | 说明 |
|---|---|---|
| order | Order | 订单信息,详见 数据类型 小节 |
| error | NSError | 错误信息,参考错误处理和错误码 |
订单查询
OrderQuery 继承 Query, 并定义了订单状态、退款状态、支付方式、trade_no、transaction_no、merchandise_record_id、merchandise_schema_id 等 7 种查询条件。
{% tabs swift2=”Swift”, oc2=”Objective-C” %} {% content “swift2” %}
// 1. 创建查询条件let query = OrderQuery()// 2. 设置查询条件// 通过订单状态查询:订单状态为 successquery.status = .success// 通过订单状态查询:订单状态为 pendingquery.status = .pending// 通过退款状态查询:退款状态为 completequery.refundStatus = .complete// 通过退款状态查询:订单状态为 partialquery.refundStatus = .partial// 通过支付方式查询:支付方式为 weixinquery.gateWayType = .weixin// 通过支付方式查询:订单状态为 alipayquery.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 = 10query.offset = 0// 3. 开始查询Pay.shared.orderList(query: query) { (result, error) in}
{% content “oc2” %}
// 1. 创建查询条件BaaSOrderQuery *query = [[BaaSOrderQuery alloc] init];// 2. 设置查询条件// 通过订单状态查询:订单状态为 successquery.status = BaaSOrderStatusSuccess;// 通过订单状态查询:订单状态为 pendingquery.status = BaaSOrderStatusPending;// 通过退款状态查询:退款状态为 completequery.status = BaaSRefundStatusComplete;// 通过订单状态查询:退款状态为 partialquery.status = BaaSRefundStatusPartial;// 通过支付方式查询:支付方式为 weixinquery.status = BaaSGateWayTypeWeixin;// 通过支付方式查询:支付方式为 alipayquery.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) {}];
{% endtabs %}
参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| 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 类型 |
订单状态
{% tabs swift4=”Swift”, oc4=”Objective-C” %} {% content “swift4” %}
OrderStatus
| 类型 | 说明 |
|---|---|
| success | 支付成功 |
| pending | 待支付 |
| all | 全部,默认 |
{% content “oc4” %}
BaaSOrderStatus
| 类型 | 说明 |
|---|---|
| BaaSOrderStatusSuccess | 支付成功 |
| BaaSOrderStatusPending | 待支付 |
| BaaSOrderStatusAll | 全部支付状态,默认 |
{% endtabs %}
退款状态
{% tabs swift5=”Swift”, oc5=”Objective-C” %} {% content “swift5” %}
RefundStatus
| 类型 | 说明 |
|---|---|
| complete | 退款成功 |
| partial | 部分退款 |
| all | 全部退款状态,默认 |
{% content “oc5” %}
BaaSRefundStatus
| 类型 | 说明 |
|---|---|
| BaaSRefundStatusComplete | 退款成功 |
| BaaSRefundStatusPartial | 部分退款 |
| BaaSRefundStatusAll | 全部退款状态,默认 |
{% endtabs %}
支付方式
{% tabs swift6=”Swift”, oc6=”Objective-C” %} {% content “swift6” %}
GateWayType
| 类型 | 说明 |
|---|---|
| weixin | 微信支付 |
| alipay | 支付宝 |
| all | 全部支付方式,默认 |
{% content “oc6” %}
BaaSGateWayType
| 类型 | 说明 |
|---|---|
| BaaSGateWayTypeWeixin | 微信支付 |
| BaaSGateWayTypeAlipay | 支付宝 |
| BaaSGateWayTypeAll | 全部支付方式,默认 |
{% endtabs %}
