| 属性 | 说明 |
|---|---|
| 适用范围 | 充电桩 / 智能柜 / 二轮充电等运营商,将「交易 + 收款物料 URL」关联数据回传至宝付,由宝付转发至对应渠道(本期微信行业返佣)。本接口为通用活动回传,后续新增活动以 activity_type + biz_data.policy_id 区分,接口形态不变 |
| 协议 | HTTPS;请求与应答均为表单参数(application/x-www-form-urlencoded);业务数据放在 bizContent(JSON 字符串,UTF-8);请求方法均为 POST |
| 响应格式 | 统一信封 returnCode / returnMsg / dataContent / signStr;业务结果在 dataContent(JSON 字符串)中 |
接口地址
| 环境 | 示例 |
|---|---|
| 生产 | https://api.baofu.com/mch-service/api(以实际部署域名为准) |
| 联调 / 沙箱 | 以联调环境实际域名为准,路径固定为 /mch-service/api |
完整地址 = 域名 + 固定路径
/mch-service/api;业务接口由请求参数method区分,本接口固定method = activity_rebate_transactions。
1. 接口调用说明
1.1 开发指引 · 整体说明
公共请求参数(表单字段)
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
| merId | string | true | 宝付分配的商户号 |
| terId | string | true | 宝付分配的终端号 |
| method | string | true | 业务方法名,本接口固定 activity_rebate_transactions |
| charset | string | true | 字符集,固定 UTF-8 |
| version | string | true | 接口版本,固定 1.0 |
| format | string | true | 报文格式,固定 json |
| timestamp | string | true | 请求时间,格式 yyyyMMddHHmmss;与服务器时间相差超过 10 分钟视为过期 |
| signType | string | true | 签名算法,取值 RSA / SM2 |
| signSn | string | true | 签名证书序号,固定 1 |
| ncrptnSn | string | true | 加密证书序号,固定 1 |
| dgtlEnvlp | string | false | 数字信封(含敏感字段时必填;本接口当前无敏感字段,可传空串) |
| signStr | string | true | 签名值,见下文 |
| bizContent | string | true | 业务参数 JSON 字符串(结构见「bizContent 结构」) |
签名与应答验签
请求签名(商户 → 宝付)
- 取
bizContent的 JSON 原文(与实际上送的完全一致,勿重新格式化)。 - 用商户 API 证书私钥按
signType指定算法签名(RSA= SHA256WithRSA /SM2),结果 Base64 放入signStr。
应答验签(宝付 → 商户):应答返回 signStr,商户用宝付证书公钥对 dataContent 的 JSON 原文验签。
统一应答信封
| 参数名 | 类型 | 描述 |
|---|---|---|
| returnCode | string | OK 表示请求被成功受理(业务成败看 dataContent.resultCode);其他值表示请求本身失败 |
| returnMsg | string | 结果描述(失败时为中文错误信息) |
| dataContent | string | 业务应答数据(JSON 字符串) |
| signStr | string | 宝付对应答数据的签名值 |
应答示例
成功(信封)
{
"returnCode": "OK",
"returnMsg": "OK",
"dataContent": "{\"resultCode\":\"SUCCESS\",\"orderNo\":\"CR20260918A0000123\",\"activityType\":\"CHARGE_REBATE\",\"channel\":\"WX\",\"outTradeNo\":\"CR20260918000001\",\"policyId\":\"1135\"}",
"signStr": "XXXXXX"
}
应答示例
失败(验签 / 商户终端 / 时间戳等进线拦截)
{
"returnCode": "FAIL",
"returnMsg": "验签错误",
"dataContent": "{}",
"signStr": "XXXXXX"
}
公共错误码(returnCode=FAIL)
| 场景 | returnCode | returnMsg 示例 | 处理建议 |
|---|---|---|---|
| 验签失败 | FAIL |
验签错误 | 检查签名算法、待签串与证书 |
| 商户/终端不存在或不匹配 | FAIL |
接口发起商户号不存在 / 终端号与商户号不匹配 | 核对 merId / terId |
| 时间戳过期 | FAIL |
请求已过期 | 校准服务器时间后重试 |
| 系统异常 | FAIL |
系统繁忙,请稍后再试 | 稍后用相同订单号重试(接口幂等) |
1.2 活动回传(物料&交易)
运营商在渠道行业返佣活动下完成一笔交易后,将「交易 + 收款物料 URL」关联数据回传,渠道据此计算返佣。
幂等:以进线 merId(宝付商户号)+ bizContent.out_trade_no 作为唯一键。成功记录重复上送且内容一致 → 返回首次结果;失败记录可重入(同单号同内容会重新转调渠道);内容不一致 → 返回业务错误,不覆盖首次记录。
重试:宝付不做服务端自动重试。上送失败后,请使用相同 out_trade_no 重试;请勿更换新的订单号重试,否则会产生重复回传。
物料前置条件(微信):渠道侧会校验「收款链接已登记物料 + 该物料已报名对应政策」,未满足时受理会失败。请先完成微信侧的物料登记与政策报名。
接口说明
请求方式:POST /mch-service/api
请求域名:见「接口地址」
请求参数:表单公共参数 + method = activity_rebate_transactions;业务字段放 bizContent(JSON 字符串)
请求参数
表单公共参数
见「开发指引 · 整体说明」中的公共请求参数表;本接口 method 固定为 activity_rebate_transactions。
bizContent 结构(公共字段 + 业务 JSON)
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
| activity_type | string(1–32) | true | 活动类型。本期取值 CHARGE_REBATE(充电返佣) |
| channel | string(1–32) | true | 渠道。本期取值 WX(微信支付);预留 ALIPAY / UNIONPAY / DOUYIN |
| out_trade_no | string(1–64) | true | 商户订单号(服务商侧订单号);与进线 merId 组成幂等键 |
| biz_data | object | false | 业务字段 JSON,活动/渠道专有;宝付原样透传渠道并落库。字段清单见下方分册 |
校验口径:宝付只校验公共字段(
activity_type/channel/out_trade_no必填与长度)。biz_data内字段不做拦截校验,由渠道侧校验并原样回传错误。
分册:充电返佣(activity_type = CHARGE_REBATE,channel = WX)
适用政策(biz_data.policy_id):1135 四轮充电 / 1085 智能柜 / 1138 二轮充电。
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
| trade_mchid | string(1–64) | true | 微信支付收款商户号(服务商模式下为子商户号) |
| policy_id | string(1–32) | true | 活动政策 ID:1135 / 1085 / 1138 |
| code_url | string(1–2048) | true | 交易收款链接(物料);须已在微信官方物料库登记并报名该政策 |
| device_id | string(1–64) | true | 设备编号 |
| station_name | string(≤256) | false | 场站名称 |
| device_longitude | string(≤32) | false | 设备经度;若上送须在 [-180, 180] |
| device_latitude | string(≤32) | false | 设备纬度;若上送须在 [-90, 90] |
必填含义:上表「必填」为对接提醒——宝付不对
biz_data做拦截校验(含必填、长度与范围)。缺字段 / 超长 / 越界会原样透传给微信,由微信返回错误(如400 INVALID_REQUEST),宝付将渠道错误原样回传。请务必按上表上送必填字段。
未声明字段:
biz_data中分册以外的字段同样原样透传并落库,不拦截、不丢弃。
请求示例
bizContent 为下方 JSON 的字符串形式(签名时使用该原文):
{
"activity_type": "CHARGE_REBATE",
"channel": "WX",
"out_trade_no": "CR20260918000001",
"biz_data": {
"trade_mchid": "1507871311",
"policy_id": "1135",
"code_url": "https://qr.weixin.qq.com/xxx",
"device_id": "DEV-0001",
"station_name": "XX充电站(人民广场店)",
"device_longitude": "121.473701",
"device_latitude": "31.230416"
}
}
表单上送示意(字段值需 URL Encode;signStr 为对 bizContent 原文的签名):
merId=100000001
&terId=10000001
&method=activity_rebate_transactions
&charset=UTF-8
&version=1.0
&format=json
×tamp=20260918143000
&signType=RSA
&signSn=1
&ncrptnSn=1
&dgtlEnvlp=
&bizContent={"activity_type":"CHARGE_REBATE","channel":"WX","out_trade_no":"CR20260918000001","biz_data":{"trade_mchid":"1507871311","policy_id":"1135","code_url":"https://qr.weixin.qq.com/xxx","device_id":"DEV-0001","station_name":"XX充电站(人民广场店)","device_longitude":"121.473701","device_latitude":"31.230416"}}
&signStr=XXXXXX
应答参数
dataContent 内的 JSON 字段:
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
| resultCode | string | true | 受理结果:SUCCESS / FAIL |
| errCode | string | false | 失败时的业务错误码 |
| errMsg | string | false | 失败时的中文描述 |
| orderNo | string | false | 宝付订单号(受理时系统生成,用于后续查询与对账) |
| activityType | string | false | 原样回显(活动类型) |
| channel | string | false | 原样回显(渠道) |
| outTradeNo | string | false | 原样回显(商户订单号) |
| policyId | string | false | 原样回显(biz_data.policy_id) |
| respCode | string | false | 渠道返回码(成功时为空;原样回传) |
| respMsg | string | false | 渠道返回信息(原样回传) |
应答示例
成功(
dataContent解析后)
{
"resultCode": "SUCCESS",
"orderNo": "CR20260918A0000123",
"activityType": "CHARGE_REBATE",
"channel": "WX",
"outTradeNo": "CR20260918000001",
"policyId": "1135"
}
应答示例
业务失败(
returnCode=OK,dataContent解析后)
{
"resultCode": "FAIL",
"errCode": "REBATE_CHANNEL_BIZ_FAIL",
"errMsg": "渠道侧受理失败:政策 ID 非法",
"orderNo": "CR20260918A0000124",
"activityType": "CHARGE_REBATE",
"channel": "WX",
"outTradeNo": "CR20260918000002",
"policyId": "9999",
"respCode": "INVALID_REQUEST",
"respMsg": "政策 ID 非法"
}
错误码
业务错误码(returnCode=OK + dataContent.errCode)
| returnCode | errCode | 描述 | 解决方案 |
|---|---|---|---|
OK |
REBATE_PARAM_INVALID |
公共字段参数校验失败(activity_type / channel / out_trade_no 缺失或超长) |
按 errMsg 修正后重试 |
OK |
REBATE_DUPLICATE_CONFLICT |
同一订单号已上送且内容不一致 | 使用新的 out_trade_no,或核对上送内容与首次一致 |
OK |
REBATE_CHANNEL_BIZ_FAIL |
渠道侧受理失败(含物料未登记/未报名、政策非法、字段不合法等) | 按 respMsg / errMsg 修正后,用相同 out_trade_no 重试 |
OK |
CALL_CHANNEL_ERROR |
调用渠道系统异常(网络 / 超时 / 5xx) | 稍后用相同 out_trade_no 重试 |
OK |
NOT_SUPPORT_CONCURRENT |
该订单号正在处理中 | 稍后用相同 out_trade_no 重试 |
说明:请求被成功受理后,业务成败一律通过
returnCode=OK+dataContent.resultCode表达;仅当请求本身不合法(验签、商户/终端、时间戳、系统异常)时returnCode=FAIL。
2. 异步通知(notify_url)
不适用:本接口为同步受理,宝付不向商户发起异步通知。受理结果以同步应答为准。
3. 数据字典
3.1 activity_type
| 取值 | 含义 |
|---|---|
CHARGE_REBATE |
充电返佣 |
3.2 channel
| 取值 | 含义 | 本期 |
|---|---|---|
WX |
微信支付 | 支持 |
ALIPAY |
支付宝 | 预留 |
UNIONPAY |
云闪付 | 预留 |
DOUYIN |
抖音 | 预留 |
3.3 policy_id(属 biz_data,仅充电返佣)
| 取值 | 含义 |
|---|---|
1135 |
四轮充电 |
1085 |
智能柜 |
1138 |
二轮充电 |
3.4 resultCode
| 取值 | 含义 |
|---|---|
SUCCESS |
受理成功(渠道已受理该次回传) |
FAIL |
受理失败,见 errCode / errMsg |