支付
获取支付单详情
进入收银台时调用,获取支付单详情信息。
- URL:
/app-api/pay/order/get - Method:
GET - 需要鉴权:是
请求参数
| 参数 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | Long | 必传 | 支付单编 号 |
| sync | Boolean | - | 是否同步订单状态,默认 true |
请求示例
GET /app-api/pay/order/get?id=472&sync=true
响应示例
{
"code": 0,
"data": {
"appId": 1,
"channelId": null,
"channelCode": null,
"merchantOrderId": "383",
"subject": "商品标题",
"body": "商品描述",
"notifyUrl": "http://127.0.0.1:48081/app-api/trade/order/update-paid",
"price": 1801,
"channelFeeRate": 0,
"channelFeePrice": 0,
"status": 0,
"userIp": "0:0:0:0:0:0:0:1",
"expireTime": 1743673502000,
"successTime": 1743587090000,
"extensionId": null,
"no": null,
"refundPrice": 0,
"channelUserId": null,
"channelOrderNo": null,
"walletCombinationPaymentPrice": 0,
"walletCombinationRefundPrice": 0,
"id": 383,
"createTime": 1743587102000,
"isVirtualSpuBoolean": true
},
"msg": "成功"
}
响应说明
| 参数 | 类型 | 说明 |
|---|---|---|
| id | Long | 支付订单编号 |
| appId | Long | APPID,对应 APP 应用 |
| channelId | Long | 渠道编号 |
| channelCode | String | 渠道编码 |
| merchantOrderId | String | 商户侧订单编号 |
| subject | String | 商品标题 |
| body | String | 商品描述 |
| notifyUrl | String | 异步通知地址 |
| price | Long | 支付金额,单位:分 |
| channelFeeRate | Double | 渠道手续费,单位:百分比 |
| channelFeePrice | Long | 渠道手续金额,单位:分 |
| status | Long | 支付状态 |
| userIp | String | 用户 IP |
| expireTime | Long | 订单失效时间 |
| successTime | Long | 订单支付成功时间 |
| extensionId | Long | 支付成功的订单拓展单编号 |
| no | String | 支付订单号 |
| refundPrice | Long | 退款金额,单位:分 |
| channelUserId | Long | 渠道用户编号 |
| channelOrderNo | String | 渠道订单号 |
| createTime | Long | 创建时间 |
| walletCombinationPaymentPrice | Long | 钱包支付金额,默认 0。组合支付时大于 0,此时订单总支付金额为 price + walletCombinationPaymentPrice |
| walletCombinationRefundPrice | Long | 组合支付退款时,钱包退回的金额 |
| isVirtualSpuBoolean | Boolean | true 含虚拟商品,不能使用钱包支付;false 不含虚拟商品,可以钱包支付 |
说明
部分字段暂时用不到,可以忽略。
获取支付方式列表
进入收银台时调用,获取可用的支付方式列表。
- URL:
/app-api/pay/channel/get-enable-code-list - Method:
POST - 需要鉴权:是
请求参数
| 参数 | 类型 | 约束 | 说明 |
|---|---|---|---|
| appId | Long | 必传 | APPID 编号,固定值:1-商城应用,8-钱包应用 |
请求示例
{
"appId": 1
}
响应示例
{
"code": 0,
"data": [
"wallet",
"wx_lite",
"wx_app",
"alipay_app"
],
"msg": "成功"
}
响应说明
| 参数 | 类型 | 说明 |
|---|---|---|
| data | Array | 支付方式字符串数组 |
支付方式枚举:
| 值 | 说明 |
|---|---|
wallet | 钱包支付 |
wx_lite | 微信小程序支付 |
wx_app | 微信 APP 支付 |
alipay_app | 支付宝 APP 支付 |
获取用户钱包信息
进入收银台时调用,获取用户钱包余额信息。
- URL:
/app-api/pay/wallet/get - Method:
GET - 需要鉴权:是
请求参数
无请求参数。
请求示例
GET /app-api/pay/wallet/get
响应示例
{
"code": 0,
"data": {
"balance": 0,
"totalExpense": 0,
"totalRecharge": 0
},
"msg": "成功"
}
响应说明
| 参数 | 类型 | 说明 |
|---|---|---|
| balance | Long | 余额,单位:分 |
| totalExpense | Long | 累计支出,单位:分 |
| totalRecharge | Long | 累计充值,单位:分 |
提交支付单(唤起支付方式)
提交支付单,唤起对应的支付方式完成支付。
- URL:
/app-api/pay/order/submit - Method:
POST - 需要鉴权:是
请求参数
| 参数 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | Number | 必传 | 交易订单编号 |
| userId | Number | 必传 | 用户 ID |
| channelCode | String | 必传 | 支付方式,见下方枚举 |
| channelExtras | Map | - | 额外信息,如微信支付需要传 openid |
| displayMode | String | 必传 | 展示模式,见下方说明 |
| returnUrl | URL | 必传 | 支付回调地址 |
channelCode 枚举:
| 值 | 说明 |
|---|---|
wx_lite | 微信小程序支付 |
wx_app | 微信 APP 支付 |
wx_native | 微信 PC 支付 |
alipay_app | 支付宝 APP 支付 |
alipay_pc | 支付宝 PC 支付 |
wallet | 钱包支付 |
displayMode 枚举:
| 值 | 说明 |
|---|---|
url | Redirect 跳转链 接方式 |
iframe | IFrame 内嵌链接方式 |
form | HTML 表单提交 |
qr_code | 二维码文字内容 |
qr_code_url | 二维码图片链接 |
bar_code | 条形码 |
app | 应用自定义处理(Android/iOS/微信小程序/微信公众号等) |
钱包余额组合支付
组合支付条件
- 钱包余额为 0 时,不能选择组合支付(也不能选择钱包支付)。
- 钱包余额大于等于订单金额时,只能单独钱包支付或其他支付方式。
- 仅当
0 < balance < price时,才能使用组合支付。
组合支付时,channelExtras 必传 wallet_combination_payment_price 字段:
不使用组合支付时:
{
"id": 523,
"channelCode": "alipay_app",
"displayMode": "APP",
"channelExtras": {
"wallet_combination_payment_price": "0"
},
"returnUrl": "https://test.com/app-api/pay/order/submit"
}
使用组合支付时:
{
"id": 523,
"channelCode": "alipay_app",
"displayMode": "APP",
"channelExtras": {
"wallet_combination_payment_price": "100"
},
"returnUrl": "https://test.com/app-api/pay/order/submit"
}
说明
wallet_combination_payment_price 的值为钱包支付的金额,单位为分。
请求示例
普通支付:
{
"id": 1024,
"channelCode": "wx_pub",
"channelExtras": {},
"displayMode": "url",
"returnUrl": ""
}
小程序支付:
{
"id": 498,
"channelCode": "wx_lite",
"displayMode": "APP",
"channelExtras": {
"openid": "oqZru667JhUy0D3kuRz9M1hT4yAk"
}
}
支付宝 PC 支付:
{
"id": 586,
"channelCode": "alipay_pc",
"displayMode": "URL",
"channelExtras": {
"wallet_combination_payment_price": "0"
},
"returnUrl": "https://example.com/callback"
}
响应示例
第三方支付(支付宝等):
{
"code": 0,
"data": {
"status": 0,
"displayMode": "app",
"displayContent": "预支付参数字符串"
},
"msg": "成功"
}
钱包支付余额不足时:
{
"code": 1007002004,
"data": null,
"msg": "发起支付报错,错误码:1007007001,错误提示:钱包余额不足"
}
钱包支付直接成功时(status=10):
{
"code": 0,
"data": {
"status": 10,
"displayMode": null,
"displayContent": null
},
"msg": "成功"
}
响应说明
| 参数 | 类型 | 说明 |
|---|---|---|
| code | Number | 0 成功,其他失败 |
| status | Number | 支付状态,0-待支付,10-支付成功,20-已退款,30-支付关闭 |
| displayMode | String | 展示模式,同请求参数枚举 |
| displayContent | String | 展示内容,包含预支付 ID 等参数 |
说明
当 channelCode 为 wallet 且钱包余额充足时,直接返回 status=10(支付成功),无需唤起第三方支付。