# 臻选计划 - 合作方接口文档
文档说明:本文档描述宜享花(我方)与合作方之间关于"臻选计划"权益产品的接口交互规范。该接口兼容先享后付(BNPL)、直接支付、续订、退款、行权、取消续订等各种特殊业务场景。
# 目录
# 1. 通用约定
# 1.1 宜享花调用合作方(主动调用)
通信协议:HTTP POST,Content-Type: application/json
统一请求地址:/api/gateway(通过 apiCode 参数区分不同接口,Header 需传 ApiCode)
完整URL:https://xxxx.com/api/gateway
公共请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
appId | String | 是 | 合作方应用号,由合作方分配 |
version | String | 是 | 版本号,固定 1.0 |
apiCode | String | 是 | 接口编码,见各接口说明 |
timestamp | Long | 是 | 时间戳,毫秒 |
signType | String | 是 | 签名类型,固定 MD5 |
sign | String | 是 | MD5签名值(大写),详见签名算法 |
| 业务参数 | - | - | 各接口特有参数 |
签名算法(MD5):
- 获取所有请求参数,不包括字节类型参数(如文件、字节流或base64),剔除
sign字段,剔除值为空的参数 - 按字段名 ASCII 码递增排序(字母升序),相同则按第二个字符排序,以此类推
- 拼接为
key1=value1&key2=value2&...&keyN=valueN,用&连接 - 最后拼接
&key=APP_SECRET - 对拼接字符串做 MD5,转大写
签名示例:
appId=APP001&apiCode=AP101&openId=12345×tamp=1700000000000&version=1.0&key=YOUR_APP_SECRET
→ MD5 → ABCDEF1234567890ABCDEF1234567890
2
3
Java 代码示例:
import java.security.MessageDigest;
import java.util.Map;
import java.util.TreeMap;
public class SignUtil {
/**
* 生成签名
*
* @param params 所有请求参数(不含sign)
* @param appSecret 签名密钥
* @return MD5签名值(大写)
*/
public static String generateSign(Map<String, Object> params, String appSecret) {
// 1. 按字段名ASCII码递增排序
TreeMap<String, Object> sortedMap = new TreeMap<>(params);
// 2. 拼接参数(跳过null和空字符串,跳过fileContent)
StringBuilder sb = new StringBuilder();
for (Map.Entry<String, Object> entry : sortedMap.entrySet()) {
if (entry.getValue() == null) {
continue;
}
String value = entry.getValue().toString();
if (value.isEmpty() || "fileContent".equals(entry.getKey())) {
continue;
}
sb.append(entry.getKey()).append("=").append(value).append("&");
}
// 3. 拼接key=APP_SECRET
sb.append("key=").append(appSecret);
// 4. MD5转大写
return md5(sb.toString()).toUpperCase();
}
private static String md5(String input) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] digest = md.digest(input.getBytes("UTF-8"));
StringBuilder hex = new StringBuilder();
for (byte b : digest) {
hex.append(String.format("%02x", b));
}
return hex.toString();
} catch (Exception e) {
throw new RuntimeException("MD5计算失败", e);
}
}
// 使用示例
public static void main(String[] args) {
TreeMap<String, Object> params = new TreeMap<>();
params.put("appId", "APP001");
params.put("version", "1.0");
params.put("apiCode", "AP101");
params.put("timestamp", System.currentTimeMillis());
params.put("signType", "MD5");
params.put("couponPackageId", "mbp1443320037241782272");
params.put("openId", "123456");
params.put("payWay", "EXTERNAL");
params.put("externalOrderNum", "LD202507171001");
params.put("orderAmount", "29.90");
params.put("shareFlag", "N");
String sign = generateSign(params, "YOUR_APP_SECRET");
params.put("sign", sign);
System.out.println("签名结果: " + sign);
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
通用应答报文:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
apiCode | String | 是 | 请求码,同请求报文 |
rspCode | String | 是 | 应答码,0000=成功,其他视为失败 |
rspMsg | String | 是 | 应答描述 |
data | Object | 否 | 业务数据 |
应答报文示例:
{
"apiCode": "AP101",
"rspCode": "0000",
"rspMsg": "成功",
"data": {
"code": "1",
"msg": "处理成功",
"data": {
// 业务数据
}
}
}
2
3
4
5
6
7
8
9
10
11
12
成功判断:rspCode == "0000" 且 data.code == "1"
响应码:
| 应答码 | 说明 |
|---|---|
0000 | 成功 |
9998 | 失败 |
9999 | 系统繁忙,请稍后重试 |
配置参数:
| 配置项 | 说明 |
|---|---|
appId | 应用ID,由合作方分配 |
appSecret | 签名密钥(APP_SECRET) |
baseUrl | 合作方接口基础URL |
couponPackId | 臻选计划券包号 |
aesKey | AES解密密钥(Base64编码) |
# 1.2 加密机制
# 1.2.1 宜享花调用合作方 - 签名加密
使用 MD5 签名,详见 1.1 签名算法。
# 1.2.2 合作方返回数据 - AES解密
合作方返回的行权URL(AP002接口)为 AES 加密的 Base64 字符串:
| 项目 | 值 |
|---|---|
| 算法 | AES/ECB/PKCS5Padding |
| 密钥 | lidai.aesKey(Base64编码) |
| 数据 | Base64编码的密文 |
# 1.2.3 合作方调用宜享花 - AES加密
合作方调用宜享花的查询/试算接口使用 SecretTextBO 传输密文:
{
"text": "AES加密后的Base64密文"
}
2
3
| 项目 | 值 |
|---|---|
| 算法 | AES/ECB/PKCS5Padding |
| 密钥 | 固定密钥(双方约定) |
| 明文 | JSON格式业务数据 |
| 密文 | Base64编码 |
退款回调接口使用
encryptOrder字段传递加密的退款信息,同样使用 AES 解密。
# 2. 宜享花 → 合作方 接口
# 2.1 AP101 权益订单购买(先享后付/直接购买)
接口编码:AP101
业务场景:
- 先享后付(BNPL):用户先享权益,后续划扣还款。
payWay=EXTERNAL,不传paymentNo - 直接支付:支付成功后创建订单。
payWay=实际支付通道,必传paymentNo - 续订:月卡续费场景,同直接支付
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
couponPackageId | String | 是 | 券包号,由合作方提供 |
openId | String | 是 | 宜享花userId |
payWay | String | 是 | 支付方式,先享后付传 EXTERNAL |
paymentNo | String | 条件必填 | 支付流水号,payWay!=EXTERNAL 时必填 |
payTime | String | 否 | 支付时间,格式 yyyy-MM-dd HH:mm:ss,不传默认当前时间 |
externalOrderNum | String | 是 | 宜享花订单号(user_coupon_pack.order_id) |
orderAmount | String | 是 | 订单金额,单位元,如 1.00 |
merId | String | 否 | 扣款商户号,不填使用默认配置 |
note | String | 否 | 订单备注,透传字段 |
shareFlag | String | 是 | 是否分账,N-不分账 / Y-分账 |
shareInfoList | Array | 条件必填 | 分账信息列表,shareFlag=Y 时必填 |
shareInfoList 分账信息:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
merId | String | 是 | 收款商户号 |
shareMerId | String | 是 | 分账商户号 |
shareType | Integer | 是 | 分账类型,1-金额分账 / 2-比例分账 |
amount | String | 条件必填 | shareType=1 时必填,分账金额(元),如 1.00 |
ratio | String | 条件必填 | shareType=2 时必填,分账比例,如 0.10 表示10% |
请求示例:
{
"appId": "APP001",
"version": "2.0",
"apiCode": "AP101",
"timestamp": 1700000000000,
"signType": "MD5",
"couponPackageId": "mbp1443320037241782272",
"openId": "123456",
"payWay": "EXTERNAL",
"externalOrderNum": "LD202507171001",
"orderAmount": "29.90",
"shareFlag": "N",
"sign": "ABCDEF1234567890ABCDEF1234567890"
}
2
3
4
5
6
7
8
9
10
11
12
13
14
响应参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
orderDetail | Object | 订单信息对象(见 4.8 orderDetail 对象) |
响应示例:
{
"rspCode": "0000",
"rspMsg": "成功",
"data": {
"code": "1",
"msg": "处理成功",
"data": {
"orderDetail": {
"orderNum": "LD20250717100001",
"orderStatus": "CREATE_SUCCESS"
}
}
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
关键返回字段:data.data.orderDetail.orderNum — 合作方订单号,后续行权/退款使用
# 2.2 AP002 行权H5入口
接口编码:AP002
业务场景:获取合作方行权页面URL,可引导客户跳转至该行权页进行行权操作
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
openId | String | 是 | 宜享花客户号唯一标识 |
orderNum | String | 是 | 合作方订单号 |
returnUrl | String | 否 | 返回链接,行权完成后跳转 |
响应参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
url | String | 行权H5链接,AES加密的Base64字符串,需使用 aesKey 解密后使用 |
响应示例:
{
"rspCode": "0000",
"data": {
"code": "1",
"data": {
"url": "AES加密的Base64行权URL"
}
}
}
2
3
4
5
6
7
8
9
# 2.3 AP108 权益订单退款申请
接口编码:AP108
业务场景:
- 由合作方发起申请,由权益平台向支付通道发起退款,退款结果以异步通知或订单结果查询查回
- 取消先享后付订单:BNPL订单取消时通知合作方退款
- 全额/部分退款申请
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
orderNum | String | 是 | 合作方权益平台订单号 |
refundAmount | String | 是 | 退款金额,单位元 |
externalRefundNum | String | 是 | 合作方退款申请单号 |
oriPaymentNo | String | 是 | 原渠道交易流水号 |
description | String | 否 | 退款原因 |
shareFlag | String | 否 | 是否分账,N/Y,默认 N |
shareInfoList | Array | 条件必填 | 分账信息列表,shareFlag=Y 时必填 |
响应参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
orderDetail | Object | 订单信息对象(见 4.8 orderDetail 对象) |
# 2.4 AP106 权益包订单退款通知
接口编码:AP106
业务场景:由合作方向支付通道发起退款,退款成功后通知权益平台方(带原交易流水号)
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
externalOrderNum | String | 是 | 宜享花订单号 |
paymentNo | String | 是 | 渠道退款单号 |
oriPaymentNo | String | 是 | 原渠道交易流水号 |
orderAmount | String | 是 | 退款金额,单位元 |
description | String | 否 | 退款描述,默认"用户退款" |
shareFlag | String | 否 | 是否分账 |
merId | String | 条件必填 | 扣款商户号,不分账时必填 |
shareInfoList | Array | 条件必填 | 分账信息列表,分账时必填 |
响应参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
orderDetail | Object | 订单信息对象(见 4.8 orderDetail 对象) |
# 2.5 AP104 还款结果通知
接口编码:AP104
业务场景:
- 先享后付划扣成功:BNPL订单后续划扣还款成功后通知合作方
- 续订划扣成功:月卡续费划扣成功后通知合作方
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
externalOrderNum | String | 是 | 宜享花订单号 |
repayAmt | String | 是 | 还款金额,单位元,如 29.90 |
paymentNo | String | 是 | 支付单号(渠道交易流水号) |
payWay | String | 是 | 支付方式 |
shareFlag | String | 是 | 是否分账,N/Y |
merId | String | 条件必填 | 收款商户号,shareFlag=N 时必填 |
shareInfoList | Array | 条件必填 | 分账信息列表,shareFlag=Y 时必填 |
请求示例:
{
"appId": "APP001",
"version": "1.0",
"apiCode": "AP104",
"timestamp": 1700000000000,
"signType": "MD5",
"externalOrderNum": "LD202507171001",
"repayAmt": "29.90",
"paymentNo": "TXN20250717001",
"payWay": "TONGLIAN_PAY",
"shareFlag": "N",
"merId": "660584060122MHW",
"sign": "ABCDEF1234567890ABCDEF1234567890"
}
2
3
4
5
6
7
8
9
10
11
12
13
14
响应参数:无额外业务数据,仅返回通用应答报文(rspCode/rspMsg)
# 2.6 AP003 权益列表查询
接口编码:AP003
业务场景:查询合作方权益明细列表(含有效期、领取次数等)
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
openId | String | 是 | 宜享花客户号唯一标识 |
orderNum | String | 是 | 合作方订单号 |
响应参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
expireTime | String | 权益过期时间,格式 yyyy-MM-dd |
validTime | String | 权益生效时间,格式 yyyy-MM-dd |
pageCode | String | 权益编码 |
detailList | Array | 权益明细列表 |
detailList 权益明细对象:
| 参数名 | 类型 | 说明 |
|---|---|---|
totalPeriod | Integer | 可领取总次数 |
usedPeriod | Integer | 已领次数 |
availablePeriod | Integer | 剩余领取次数 |
detailTitle | String | 明细标题 |
skus | Array | 明细商品列表,结构同 3.1 rightDetailSku |
# 2.7 AP103 权益订单退款申请
接口编码:AP103
业务场景:由宜享花发起退款申请,由合作方向支付通道发起退款,退款结果以异步通知或订单结果查询查回。适用于取消先享后付订单、全额/部分退款等场景。
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
orderNum | String | 是 | 合作方权益平台订单号 |
externalOrderNum | String | 否 | 宜享花订单号 |
refundAmount | String | 是 | 退款金额,单位元 |
externalRefundNum | String | 是 | 宜享花退款申请单号 |
oriPaymentNo | String | 是 | 原渠道交易流水号 |
description | String | 否 | 退款原因 |
shareFlag | String | 否 | 是否分账,N/Y,默认 N |
shareInfoList | Array | 条件必填 | 分账信息列表,shareFlag=Y 时必填 |
响应参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
orderNum | String | 合作方权益平台订单号 |
externalOrderNum | String | 宜享花订单号 |
refundAmount | BigDecimal | 退款金额,单位元 |
orderAmount | BigDecimal | 订单金额,单位元 |
openId | String | 合作方客户号 |
payWay | String | 支付方式 |
orderStatus | String | 订单状态:PAY_ING-支付中 / PAY_SUCCESS-支付成功 / REFUND_ING-退款中 / REFUND_SUCCESS-退款成功 / REFUND_FAIL-退款失败 |
refundList | Array | 退款信息集合 |
refundList 退款信息对象:
| 参数名 | 类型 | 说明 |
|---|---|---|
refundNo | String | 合作方权益平台退款单号 |
refundAmount | BigDecimal | 退款金额,单位元 |
paymentNo | String | 合作方权益平台支付单号 |
shareInfoList | Array | 分账信息列表 |
# 3. 合作方 → 宜享花 接口
# 3.1 行权结果回调通知
接口路径:POST /api/v1/couponPartner/right/callback
业务场景:用户在合作方侧行权成功后,合作方回调通知宜享花行权结果
请求参数(明文JSON):
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
appId | String | 否 | 合作方应用号 |
version | String | 否 | 版本号 |
timestamp | Long | 否 | 时间戳,毫秒 |
externalOrderNum | String | 是 | 宜享花订单号 |
orderNum | String | 是 | 合作方订单号 |
openId | String | 是 | 合作方客户ID |
rightDetail | Object | 是 | 权益明细对象 |
rightDetailSku | Object | 是 | 本次行权的权益商品对象 |
entity | String | 否 | 主体标识,DNQY01=带恩,空/LD03=合作方 |
rightDetail 权益明细对象:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
couponPackageId | String | 是 | 券包号 |
couponPackageName | String | 是 | 券包名 |
totalPeriod | Integer | 是 | 可领取总次数 |
usedPeriod | Integer | 是 | 已领次数 |
availablePeriod | Integer | 是 | 剩余领取次数 |
detailTitle | String | 否 | 明细标题 |
rightDetailSku 权益商品对象:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
chargeType | String | 否 | 充值类型,RECHARGE-直充 / COUPON-卡密 |
rightCode | String | 是 | 权益商品编码 |
rightName | String | 否 | 权益商品名称 |
rightDesc | String | 否 | 权益描述 |
rightImg | String | 否 | 权益商品图片 |
rightPrice | String | 否 | 权益价格(市场价) |
salesPrice | String | 否 | 支付价格 |
useRightsTime | String | 是 | 商品行权时间,格式 yyyy-MM-dd HH:mm:ss |
请求示例:
{
"appId": "APP001",
"version": "2.0",
"timestamp": 1700000000000,
"externalOrderNum": "LD202507171001",
"orderNum": "LD20250717100001",
"openId": "123456",
"rightDetail": {
"couponPackageId": "mbp1443320037241782272",
"couponPackageName": "臻选计划会员月卡",
"totalPeriod": 1,
"usedPeriod": 1,
"availablePeriod": 0,
"detailTitle": "月卡权益"
},
"rightDetailSku": {
"chargeType": "RECHARGE",
"rightCode": "RIGHT_001",
"rightName": "30元话费充值",
"salesPrice": "29.90",
"useRightsTime": "2025-07-17 10:00:00"
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
响应:纯文本
| 返回值 | 说明 |
|---|---|
SUCCESS | 处理成功 |
FAILED | 处理失败 |
防重机制:基于 externalOrderNum + rightCode 加 Redis 分布式锁(5秒),不允许重复提交
# 3.2 异步通知(购买结果推送 / 退款结果推送)
⚠️ 回调地址须向合作方报备。以下两个场景合作方将会给宜享花推送结果通知,通知报文需使用 AESKey 解密。
接口路径:POST /api/v1/couponPartner/refund/notify?entity={entity}
通知场景:
- 权益购买结果推送:订单状态为
PAY_SUCCESS(支付成功) - 权益退款结果推送:订单状态为
REFUND_SUCCESS/REFUND_FAIL/PARTIAL_REFUND
请求参数(JSON,含加密字段):
{
"encryptOrder": "AES加密的Base64退款信息密文"
}
2
3
解密后的明文JSON结构如下(
LiDaiRefundCallbackForm):
| 参数名 | 类型 | 说明 |
|---|---|---|
appId | String | 应用号 |
version | String | 版本号 |
timestamp | String | 时间戳,毫秒 |
signType | String | 签名类型 |
sign | String | 签名 |
orderNum | String | 合作方订单号 |
externalOrderNum | String | 宜享花订单号 |
orderStatus | String | 订单状态,见下表 |
orderAmount | BigDecimal | 订单金额,单位元 |
paymentNo | String | 支付单号 |
openId | String | 宜享花客户号 |
userMobile | String | 宜享花客户手机号(AES加密) |
userName | String | 宜享花客户姓名 |
payWay | String | 支付方式 |
couponPackageId | String | 券包号 |
couponPackageName | String | 券包名 |
createTime | String | 下单时间 yyyy-MM-dd HH:mm:ss |
payTime | String | 支付完成时间 |
expireTime | String | 权益失效时间 |
refundable | String | 可退状态,true/false |
refundAmount | BigDecimal | 退款金额,单位元 |
negotiatedAmount | BigDecimal | 协商金额,单位元 |
refundTime | String | 退款时间 |
refundNo | String | 合作方退款单号 |
externalRefundNum | String | 宜享花退款申请单号 |
refundReason | String | 退款原因 |
refundFailMsg | String | 退款失败原因 |
shareList | Array | 分账信息列表 |
refundShareList | Array | 退款分账信息列表 |
specialRefundFlag | String | 特殊退款标识,false-原路退回 / true-线下退款 |
scenario | String | 场景,refund-退款 / cancel-取消订单 |
orderStatus 订单状态:
| 状态值 | 说明 |
|---|---|
PAY_SUCCESS | 支付成功 |
REFUND_SUCCESS | 退款成功 |
REFUND_FAIL | 退款失败 |
PARTIAL_REFUND | 部分退款成功 |
响应:纯文本
| 返回值 | 说明 |
|---|---|
SUCCESS | 处理成功 |
FAILED | 处理失败 |
防重机制:基于 externalOrderNum 加 Redis 锁(300秒),防止连续退两次;基于 refundNo 判断重复退款
# 3.3 退款金额试算
接口路径:POST /api/v1/couponPartner/partner/refundEstimate
业务场景:合作方发起退款前,调用宜享花预估可退金额
请求参数:
{
"text": "AES加密后的Base64密文"
}
2
3
解密后明文:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
externalOrderNum | String | 是 | 宜享花订单号 |
响应参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
text | String | AES加密的退款试算结果密文(Base64) |
响应示例:
{
"status": "0000",
"msg": "成功",
"data": {
"text": "AES加密的退款试算结果密文"
}
}
2
3
4
5
6
7
解密后返回参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
refundAmount | String | 可退金额,单位元 |
negotiatedAmount | String | 协商金额,单位元 |
# 3.4 合作方查询宜享花订单信息(含详细信息)
接口路径:POST /api/v1/couponPartner/order/detail/query?entity={entity}
业务场景:合作方通过手机号查询宜享花订单信息(含详细信息),支持多主体
URL参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
entity | String | 否 | 主体标识,DNQY01=带恩,空/LD03=合作方 |
请求参数(AES加密,SecretTextBO):
{
"text": "AES加密后的Base64密文"
}
2
3
解密后明文:包含手机号等查询条件
响应参数(R<SecretTextBO>):
| 参数名 | 类型 | 说明 |
|---|---|---|
text | String | AES加密的订单详细信息密文(Base64),解密后为订单列表JSON |
响应示例:
{
"status": "0000",
"msg": "成功",
"data": {
"text": "AES加密的订单详细信息密文"
}
}
2
3
4
5
6
7
# 3.5 合作方调用宜享花取消续订会员月卡
接口路径:POST /api/v1/vipMonthCardPack/partner/cancelRenew
通信协议:HTTP POST,Content-Type: application/json
业务场景:合作方调用宜享花取消会员月卡续订,支持按订单号或用户信息查询并取消续订中的订单。
请求参数(AES加密,SecretTextBO):
{
"text": "AES加密后的Base64密文"
}
2
3
解密后明文:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
partnerCode | String | 是 | 合作方标识,由宜享花约定 |
yxOrderNo | String | 条件必填 | 宜享花订单号,优先使用。与用户信息字段二选一 |
phone | String | 条件必填 | 手机号,yxOrderNo 为空时按用户信息查询 |
userId | Long | 条件必填 | 宜享花用户ID |
idNumber | String | 条件必填 | 身份证号 |
cardNo | String | 条件必填 | 银行卡号 |
operateType | String | 否 | 操作类型,默认 1。1-发起退款+取消未来期续订;2-本单不退款,取消未来期续订(仅主订单);3-取消先享后付(仅限先享后付未扣款状态) |
startDate | String | 否 | 开始时间 |
endDate | String | 否 | 结束时间 |
yxAmount | Long | 否 | 宜享花权益成本(单位:分) |
ldAmount | Long | 否 | 合作方行权成本(单位:分) |
refundAmount | Long | 否 | 总退款金额(单位:分) |
响应参数:无额外业务数据,仅返回通用 R 结构(status/msg)
响应示例:
{
"status": "0000",
"msg": "成功",
"data": null
}
2
3
4
5
取消续订规则:
- 当日购买不可取消
- 划扣中状态不可取消
- 已退订状态无需处理
- 已续订完成状态不可取消
加密说明:请求参数需使用双方约定的 AES 密钥加密为 Base64 字符串,放入
text字段。详见 1.2 加密机制。
# 4. 枚举定义
# 4.1 支付方式 (payWay)
| 合作方payWay | 说明 |
|---|---|
BFN | 宝付协议支付 |
TLTN | 通联协议支付(默认) |
CBN | 京东 |
YPN | 易宝 |
HFN | 汇付 |
NPN | 新生 |
YFBN | 苏宁 |
ZJN | 中金 |
EXTERNAL | 先享后付(BNPL场景固定值) |
# 4.2 订单状态 (orderStatus)
异步通知及 orderDetail 中的订单状态:
| 状态值 | 说明 |
|---|---|
PAY_SUCCESS | 支付成功 |
REFUND_ING | 退款中 |
REFUND_SUCCESS | 退款成功 |
REFUND_FAIL | 退款失败 |
PARTIAL_REFUND | 部分退款成功 |
# 4.3 分账类型 (shareType)
| 值 | 说明 |
|---|---|
1 | 金额分账 |
2 | 比例分账 |
# 4.4 是否分账 (shareFlag)
| 值 | 说明 |
|---|---|
N | 不分账 |
Y | 分账 |
# 4.5 主体标识 (entity)
- 线下约定
# 4.6 充值类型 (chargeType)
| 值 | 说明 |
|---|---|
RECHARGE | 直充 |
COUPON | 卡密 |
# 4.7 退款场景 (scenario)
| 值 | 说明 |
|---|---|
refund | 退款 |
cancel | 取消订单 |
# 4.8 orderDetail 订单信息对象
AP101/AP102/AP108/AP106 等接口响应中的 orderDetail 对象:
| 字段名 | 类型 | 必填 | 说明 |
|---|---|---|---|
orderNum | String | 是 | 合作方权益平台订单号 |
externalOrderNum | String | 是 | 宜享花订单号 |
orderStatus | String | 是 | 订单状态,见 4.2 订单状态 |
orderAmount | Number | 是 | 订单金额,单位元 |
paymentNo | String | 是 | 支付单号 |
openId | String | 是 | 合作方客户号 |
payWay | String | 是 | 支付方式 |
couponPackageId | String | 是 | 券包号 |
couponPackageName | String | 是 | 券包名 |
createTime | String | 是 | 下单时间 yyyy-MM-dd HH:mm:ss |
payTime | String | 是 | 支付完成时间 |
expireTime | String | 是 | 权益失效时间 |
refundable | String | 是 | 可退状态,true/false |
refundAmount | Number | 否 | 退款金额,单位元 |
refundTime | String | 否 | 退款时间 |
refundNo | String | 否 | 合作方退款单号 |
externalRefundNum | String | 否 | 宜享花退款申请单号 |
refundReason | String | 否 | 退款原因 |
refundFailMsg | String | 否 | 退款失败原因 |
shareList | Array | 否 | 分账信息列表 |
refundShareList | Array | 否 | 退款分账信息列表 |
specialRefundFlag | String | 否 | 特殊退款标识,false-原路退回 / true-线下退款 |
# 4.9 UsedRight 使用权益对象
AP105 查询已使用权益接口返回的 usedRightList 中的对象:
| 字段名 | 类型 | 必填 | 说明 |
|---|---|---|---|
rightId | String | 是 | 权益流水号 |
rightName | String | 是 | 权益名称 |
rightPrice | String | 是 | 权益价格 |
payAmount | String | 是 | 支付价格 |
useDate | String | 是 | 生效时间 yyyy-MM-dd HH:mm:ss |
# 4.10 shareList 分账信息列表(嵌套结构)
异步通知中的 shareList / refundShareList 采用嵌套结构:
| 字段名 | 类型 | 必填 | 说明 |
|---|---|---|---|
paymentNo | String | 是 | 合作方权益平台支付单号 |
shareInfoList | List | 是 | 分账信息列表,结构同 2.1 shareInfoList |
← Home