支付订单操作

获取订单

Order#getOrderList(params)

参数说明

params 是 Object 类型,为订单过滤条件,你可以参考后面的返回参数说明,进行筛选。

返回参数说明

部分关键字段:

参数类型说明
params.gateway_typeString支付方式,可选值有:weixin_tenpay(微信支付)、alipay(支付宝支付)
params.created_atNumber创建支付请求的时间戳
params.created_by_idNumber订单创建者 id
params.created_by_nameString订单创建者姓名
params.idNumber订单 id,用于退款的 order_id
params.ip_addressNumber-
params.merchandise_descriptionString商品详情上的文字描述
params.merchandise_record_idString商品记录 ID,可用于定位用户购买的物品
params.merchandise_schema_idNumber商品表 ID,可用于定位用户购买的物品
params.merchandise_snapshotString-
params.paid_atNumber付款时间, 未支付的话为 null
params.refund_amountNumber退款金额
params.refund_statusString退款状态,可能的值有:complete(退款成功)、partial(部分退款),也可能为 null
params.statusString订单状态, pending(待支付)、success(支付成功)
params.total_costNumber发起交易请求时的支付金额
params.trade_noString知晓云平台所记录的订单号
params.transaction_noString对应微信(或支付宝)支付成功后返回的 transaction_no,支付流水号
params.updated_atNumber订单更新时间
params.paid_atgteNumber付款时间区间的开始时间
params.paid_atlteNumber付款时间区间的结束时间

示例代码

查找微信支付订单

  1. var order = new BaaS.Order()
  2. // 通过 gateway_type 查询订单
  3. order.getOrderList({gateway_type: 'weixin_tenpay'}).then(res => {
  4. // success
  5. }).catch(e=>{
  6. // HError 对象
  7. })

根据订单号查找

  1. var order = new BaaS.Order()
  2. // 通过 trade_no 查询订单
  3. order.getOrderList({trade_no: '1gCeU9ZKQQAA8iQgUM0lWhEbnqr89Qtxxx'}).then(res => {
  4. // success
  5. }).catch(e=>{
  6. // HError 对象
  7. })
  8. // 通过 transaction_no 查询订单
  9. order.getOrderList({transaction_no: 'v4WoZ7aNyZPaZbNlFffOZLvagUKqDcOw'}).then(res => {
  10. // success
  11. }).catch(e=>{
  12. // HError 对象
  13. })

分页查询所有订单

  1. order.offset(20).limit(20).getOrderList().then(res => {
  2. // success
  3. }).catch(e=>{
  4. // HError 对象
  5. })

HError 对象结构请参考错误码和 HError 对象

返回示例

成功时 res 对象结构如下

  1. {
  2. "data": {
  3. "meta": {"limit": 20, "next": null, "offset": 0, "previous": null, "total_count": 1},
  4. "objects": [{
  5. "created_at": "2018-10-12T17:18:10.992125",
  6. "gateway_extra_info": "{'payment_parameters': {'nonceStr': '1gAtaFdVpelLBqH1iNu6Drny159aN7CL', 'timeStamp': '1539335891', 'appId': 'xxxxxxxxx', 'signType': 'MD5', 'paySign': '9A9277CEDBE9A47B5A0E4CD664E3A6E9', 'package': 'prepay_id=wx121718113084277cb388281e2112421151'}}",
  7. "id": 47963,
  8. "ip_address": "183.61.109.211",
  9. "merchandise_description": "一条支付描述",
  10. "merchandise_record_id": null,
  11. "merchandise_schema_id": null,
  12. "merchandise_snapshot": "{}",
  13. "paid_at": null,
  14. "refund_status": null,
  15. "status": "pending",
  16. "total_cost": "398.00",
  17. "trade_no": "1gAtaEFcmu6DyHm5b0ycBSmNO302NGzA",
  18. "transaction_no": "XDiXbfLFyd8DpxSWqBUcb2jW1AvhVORC",
  19. "updated_at": "2018-10-12T17:18:11.317089"
  20. }]
  21. },
  22. "status": 200
  23. }

微信直连商户分账

产品介绍,详见微信直连商户分账官方文档

“分账接收方操作”、“分账账单操作”,请查看微信直连商户分账文档

为了支持“微信微信直连商户分账”,在创建支付订单时,需要添加参数 profitSharing(值为 true),具体请参考 JS SDK 支付接口文档中微信支付部分。

  • 只支持使用微信支付的订单

  • 需要先添加分账接收方才能分账

订单单次分账

如果在调用分账接口的过程中遇到错误码为 SYSTEMERRORFREQUENCY_LIMITED 时,请发工单联系客服,不要重复调用接口,否则可能造成资金损失。(详见微信官方文档 中错误码列表)

Order#wechatPay.profitSharing(options)

参数说明

options 是 Object 类型,它包括以下几个属性:

参数类型必填说明
trade_noString支付订单订单号(必须为微信支付订单,并且在创建支付订单时,添加参数 profitSharing(值为 true))
receiversArray分账接收方列表
appidString微信分配的公众账号ID

Receiver 类型说明:

参数类型必填说明
typeReceiverType分账接收方类型
accountString分账接收方账户
amountNumber分账金额,单位为分,只能为整数,不能超过原订单支付金额及最大分账比例金额
descriptionString分账描述

ReceiverType 可选值说明:

说明
'MERCHANT_ID'商户 ID
'PERSONAL_WECHATID'个人微信号
'PERSONAL_OPENID'个人openid

示例代码

  1. var order = new BaaS.Order()
  2. order.wechatPay.profitSharing({
  3. trade_no: '...',
  4. appid: '...',
  5. receivers: [{
  6. type: '...',
  7. account: '...',
  8. amount: 10,
  9. description: '...',
  10. }],
  11. }).then(res => {
  12. // success
  13. }).catch(e=>{
  14. // HError 对象
  15. })

返回示例

成功时 res 对象结构如下

  1. {
  2. "data": {
  3. "return_code": "SUCCESS",
  4. "appid": "...",
  5. "mch_id": "...",
  6. "trade_no": "...",
  7. "wechat_order_no": "..."
  8. },
  9. "status": 200
  10. }

订单多次分账

如果在调用分账接口的过程中遇到错误码为 SYSTEMERRORFREQUENCY_LIMITED 时,请发工单联系客服,不要重复调用接口,否则可能造成资金损失。(详见微信官方文档 中错误码列表)

Order#wechatPay.multiProfitSharing(options)

参数说明

options 是 Object 类型,它包括以下几个属性:

参数类型必填说明
trade_noString支付订单订单号(必须为微信支付订单,并且在创建支付订单时,添加参数 profitSharing(值为 true))
receiversArray分账接收方列表
appidString微信分配的公众账号ID

Receiver 类型说明:

参数类型必填说明
typeReceiverType分账接收方类型
accountString分账接收方账户
amountNumber分账金额,单位为分,只能为整数,不能超过原订单支付金额及最大分账比例金额
descriptionString分账描述

ReceiverType 可选值说明:

说明
'MERCHANT_ID'商户 ID
'PERSONAL_WECHATID'个人微信号
'PERSONAL_OPENID'个人openid

示例代码

  1. var order = new BaaS.Order()
  2. order.wechatPay.multiProfitSharing({
  3. trade_no: '...',
  4. appid: '...',
  5. receivers: [{
  6. type: '...',
  7. account: '...',
  8. amount: 10,
  9. description: '...',
  10. }],
  11. }).then(res => {
  12. // success
  13. }).catch(e=>{
  14. // HError 对象
  15. })

返回示例

成功时 res 对象结构如下

  1. {
  2. "data": {
  3. "return_code": "SUCCESS",
  4. "appid": "...",
  5. "mch_id": "...",
  6. "trade_no": "...",
  7. "wechat_order_no": "..."
  8. },
  9. "status": 200
  10. }

支付宝商家分账

产品介绍,详见支付宝商家分账官方文档

“分账接收方操作”、“分账账单操作”,请查看支付宝商家分账文档

  • 只支持使用支付宝支付的订单

  • 需要先添加分账接收方才能分账

订单分账

Order#alipay.profitSharing(options)

参数说明

options 是 Object 类型,它包括以下几个属性:

参数类型必填说明
trade_noString支付订单订单号(必须为支付宝支付订单)
receiversArray分账接收方列表

Receiver 类型说明:

参数类型必填说明
typeReceiverType分账接收方类型
accountString分账接收方账户
amountNumber分账金额,单位为分,只能为整数,不能超过原订单支付金额
descriptionString分账描述

ReceiverType 可选值说明:

说明
'userId'付宝账号对应的支付宝唯一用户号
'loginName'支付宝登录号

示例代码

  1. var order = new BaaS.Order()
  2. order.alipay.profitSharing({
  3. trade_no: '...',
  4. receivers: [{
  5. type: '...',
  6. account: '...',
  7. amount: 10,
  8. description: '...',
  9. }],
  10. }).then(res => {
  11. // success
  12. }).catch(e=>{
  13. // HError 对象
  14. })

返回示例

成功时 res 对象结构如下

  1. {
  2. "data": {
  3. "return_code": "10000",
  4. "trade_no": "1iIUfhTxivu6RxvyQgkRRwp9VklswK46"
  5. },
  6. "status": 200
  7. }

退款

BaaS.refund(data)

使用了分账的订单,需要先调用分账回退接口将钱回退到订单商户号中,否则可能会退款失败

参数说明

data 是 Object 类型,它包括以下几个属性

参数类型必填说明
refund_amountNumber默认为退还剩余所有款项
order_idNumber订单 id
trade_noString-
transaction_noString-
memoString备注信息

返回参数说明

部分关键字段:

参数类型说明
error_msgString-
idNumber-
memoString备注信息
order_idNumber订单 id
refund_amountString退款金额
refund_noString退款单号
statusString订单支付状态(succeed:成功;failed:失败)

示例代码

调用退款接口,需要先通过上文的 Order#getOrderList API,拿取返回数据中的 id 字段作为 order_id 的值,来进行退款操作也可以通过 trade_notransaction_no 来退款。

  1. // 通过订单 ID 退款
  2. BaaS.refund({
  3. order_id: 29973,
  4. memo: '测试退款'
  5. }).then(res => {
  6. // success
  7. }).catch(e=>{
  8. // HError 对象
  9. })
  10. // 通过 trade_no 退款
  11. BaaS.refund({
  12. trade_no: '1gAtaEFcmu6DyHm5b0ycBSmNO302NGzA',
  13. memo: '测试退款'
  14. }).then(res => {
  15. // success
  16. }).catch(e=>{
  17. // HError 对象
  18. })
  19. // 通过 transaction_no 退款
  20. BaaS.refund({
  21. transaction_no: '1gAtaEFcmu6DyHm5b0ycBSmNO302NGzA',
  22. memo: '测试退款'
  23. }).then(res => {
  24. // success
  25. }).catch(e=>{
  26. // HError 对象
  27. })

HError 对象结构请参考错误码和 HError 对象