属性 说明
适用范围 充电桩 / 智能柜 / 二轮充电等运营商,将「交易 + 收款物料 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 结构」)

签名与应答验签

请求签名(商户 → 宝付)

  1. 取 bizContent 的 JSON 原文(与实际上送的完全一致,勿重新格式化)。
  2. 用商户 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
&timestamp=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