当前位置:首页 > 全国外卖霸王餐开放API接口文档

全国外卖霸王餐开放API接口文档

一、接入说明

订单流转图

api流程图.png


接入流程(对接前请先联系商务18072725357拉技术群)


1、接入域名


●测试环境:http://bwcapidev.msxshow.cn
●生产环境:找对接技术员提供


接入参数说明

●clientId:由接口提供方分配,接入时请联系相关人员提供

●clientSecret:由接口提供方分配,接入时请联系相关人员提供

●notifyUrl:由接口对接方提供(推送订单状态变更信息)

●deductUrl:由接口对接方提供(推送订单扣款信息)

●cpsQueryUrl:由接口对接方提供(供接口提供方查询cps订单信息)


2、API签名方法


//签名方法(params中value禁止传null)
public static String signForMap(Map<String, String> params, String clientSecret) {
    if(params == null) {
        return null;
    }
    List<String> paramKeyList = new ArrayList<String>();
    for(Entry<String, String> entry : params.entrySet()) {
        if(entry.getKey().equals("sign")) {
            continue;
        }
        paramKeyList.add(entry.getKey());
    }
    Collections.sort(paramKeyList);

    String signStr = "";
    for(String key : paramKeyList) {
        String value = (String)params.get(key);
        signStr += key + value;
    }
    signStr = clientSecret + signStr + clientSecret;
    String sign = MD5Util.md5(signStr);
    return sign;
}

public class MD5Util {
    public final static String md5(String s) {
        char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
        try {
            byte[] btInput = s.getBytes("UTF-8");
            // 获得MD5摘要算法的 MessageDigest 对象
            MessageDigest mdInst = MessageDigest.getInstance("MD5");
            // 使用指定的字节更新摘要
            mdInst.update(btInput);
            // 获得密文
            byte[] md = mdInst.digest();
            // 把密文转换成十六进制的字符串形式
            int j = md.length;
            char str[] = new char[j * 2];
            int k = 0;
            for(int i = 0; i < j; i++) {
                byte byte0 = md[i];
                str[k++] = hexDigits[byte0 >>> 4 & 0xf];
                str[k++] = hexDigits[byte0 & 0xf];
            }
            return new String(str);
        }
        catch(Exception e) {
            e.printStackTrace();
            return null;
        }
    }
}



3、mobile参数加密示例


public String encrypt(String data, String clientId) throws Exception {
    //截取前16位作为key和v
    String key = clientId.substring(0, 16);
    String ivKey = clientId.substring(0, 16);

    //创建密钥和IV参数
    SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "AES");
    IvParameterSpec ivParameterSpec = new IvParameterSpec(ivKey.getBytes("UTF-8"));

    //创建cipher实例,指定AES/CBC/PKC55Padding模式
    Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
    cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, ivParameterSpec);

    //加密数据
    byte[] encryptedBytes = cipher.doFinal(data.getBytes("UTF-8"));
    //使用Base64编码
    String encryptMobile = Base64.getEncoder().encodeToString(encryptedBytes);
    return encryptMobile;
}



4、回调通知签名示例


public static void main(String[] args) throws Exception {      
        String clientId = "12345678901234567890";
        String clientSecret = "abcdefgabcdefgabcdefgabcdefg";
        Long timestamp = System.currentTimeMillis();
        
        JSONObject obj = new JSONObject();
        obj.put("orderNum", "bwc2025082310303012345678");
        obj.put("orderStatus", 1);

        Map<String, String> params = new HashMap<String, String>();
        params.put("clientId", clientId);
        params.put("timestamp", timestamp + "");
        params.put("data", obj.toString());
        String sign = SignUtil.signForMap(params, clientSecret);
        
        System.out.println(sign);   
}



5、回调通知


POST请求,Content-Type:application/json
●回调请求参数

参数名

类型

必传

描述

clientId

String

是

由接口提供方分配

timestamp

Long

是

时间戳(毫秒)

sign

String

是

签名(由请求参数除去sign以外所有字段加密生成)

data

String

是

业务数据

●回调参数示例

{
	"clientId": "12345678901234567890",
	"data": {
		"orderNum": "bwc2025082310303012345678",
		"orderStatus": 1
	},
	"sign": "5473CCD94B086DBA390B3A73673CFD14",
	"timestamp": 1755918723439
}



●应答示例
code = 200 代表业务方处理成功,平台将不在进行通知,其余code码将按一定间隔重试推送

{
  "code":200,
  "msg":"success"
}



●回调通知重试间隔
平台会发送POST请求,业务方在收到通知处理成功后请按照要求正确返回。如果反馈失败,将按照1min间隔重试通知

二、常见问题说明

订单超时时间

1、订单超时取消分为超时取消和过期取消。用户报名后三小时内未上传外卖单号会自动超时取消。
2、用户提交后次日12:00前未上传订单信息(订单完成截图和订单评价截图),订单会过期取消。接入方请注意处理己方订单状态。

订单扣款问题

1、订单完成前扣款,即订单提交审核后,不满足活动要求发生的扣款(例如实付不满,反馈折叠等),扣款金额会在订单扣款通知中通知,也可通过订单详情接口查询。
2、订单完成后扣款,即订单已经完成,扣款金额会在订单扣款通知中通知,用户可能已经拿到返现金额。订单一般是多平台参加返利活动或别的欺骗原因,商家不予结算,需要向用户追回返现金额。

活动是否需要评价

对于商家报名明确不需要评价的活动,在活动列表接口中给出无需评价标识。对于活动名额中部分需要评价的情况,在活动详情接口中根据当前活动反馈数量、报名用户以往分配到的反馈名额等数据来确定本次活动是否需要反馈。


三、活动接口


活动相关接口需要签名,要传下列公共Query参数:

参数名

类型

必传

描述

clientId

String

是

由接口提供方分配

timestamp

Long

是

时间戳(毫秒)

sign

String

是

签名(由请求参数除去sign以外所有字段加密生成,签名方法见接入流程)

活动列表

GET /open/bwc/TaskAction/getList


Query参数

参数名

类型

必传

描述

mobile

String

是

AES加密的手机号或唯一标识(加密前最多32位),该参数需要urlEncode处理一下再传递

longitude

Double

是

经度

latitude

Double

是

维度

keywords

String

否

活动搜索关键字

pageNum

Integer

否

页码,不传默认1

pageSize

Integer

否

每页数据,不传默认20

返回数据
●店铺

参数名

类型

必传

描述

storeId

Integer

是

店铺ID

platformCode

String

是

平台code 美团:mt,饿了么:ele,京东:jd

cover

String

是

店铺图片

distance

Double

是

店铺距离(千米)

name

String

是

店铺名

longitude

Double

是

店铺经度

latitude

Double

是

店铺维度

taskList

List

是

活动列表

●活动

参数名

类型

必传

描述

id

Integer

是

活动ID

storeId

Integer

是

店铺ID

mealPrice

Double

是

餐标

settlementAmount

Double

是

结算金额

startTime

String

是

开始时间

endTime

String

是

结束时间

remainingQuota

Integer

是

剩余名额

activeStatus

Integer

是

活动状态 -1:今日已抢光 0:未开始 1:进行中

isPraise

Integer

否

是否需要反馈 0:否 1:是

活动详情

GET /open/bwc/TaskAction/getDetail


Query参数

参数名

类型

必传

描述

mobile

String

是

AES加密的手机号或唯一标识(加密前最多32位),该参数需要urlEncode处理一下再传递

longitude

Double

是

经度

latitude

Double

是

维度

id

Integer

是

活动ID


返回数据

参数名

类型

必传

描述

id

Integer

是

活动ID

storeId

Integer

是

店铺id

name

String

是

店铺名称

cover

String

是

店铺封面

mealPrice

Double

是

餐标

startTime

String

是

活动开始时间

endTime

String

是

活动结束时间

remind

String

否

活动备注提示

remainingQuota

Integer

是

剩余名额

address

String

是

店铺地址

longitude

String

是

经度

latitude

String

是

纬度

distance

String

是

店铺距离

settlementAmount

Double

是

结算金额

appletJumpInfo

Object

是

进店信息

praiseType

Integer

是

反馈类型 0:用餐反馈,1:图文反馈,2:无需反馈

praiseName

String

是

反馈类型名称

repurchaseInterval

Integer

否

复购间隔,单位天。大于0表示有复购间隔限制
例如3,表示该店铺3天限下一单

AppletJumpInfo

参数名

类型

必传

描述

appId

String

否

小程序appId

appSourceId

String

否

小程序原始id

path

String

否

小程序路径

shortLink

String

否

小程序短链


活动报名

GET /open/bwc/TaskAction/apply


Query参数

参数名

类型

必传

描述

mobile

String

是

AES加密的手机号或唯一标识(加密前最多32位),该参数需要urlEncode处理一下再传递

id

Integer

是

活动ID

longitude

Double

是

经度

latitude

Double

是

维度


返回数据

参数名

类型

必传

描述

orderNo

String

是

订单号



四、订单接口


订单相关接口需要签名,要传下列公共Query参数:

参数名

类型

必传

描述

clientId

String

是

由接口提供方分配

timestamp

Long

是

时间戳(毫秒)

sign

String

是

签名(由请求参数除去sign以外所有字段加密生成,签名方法见接入流程)

订单详情

GET /open/bwc/OrderAction/orderDetail


Query参数

参数名

类型

必传

描述

orderNo

String

是

订单号


返回数据

参数名

类型

必传

描述

orderNo

String

是

平台订单号

takeoutOrderNo

String

否

外卖订单号

orderStatus

Integer

是

订单状态 -3已驳回 -1已取消 0已报名 1已提交 2待审核 3已完成

mealPrice

Double

是

餐标 必需 单位元,两位小数

preCompletionDeductionAmount

Double

否

完成前扣款金额 单位元,两位小数。订单完成前扣款(实付不满扣款或反馈这折叠扣款)

postCompletionDeductionAmount

Double

否

完成后扣款金额 单位元,两位小数。订单完成后发现是骗子或者别的情况。会进行扣款,需要对用户进行追回

expireTime

String

否

失效时间 格式yyyy-mm-dd HH:mm:ss

reason

String

否

驳回原因  ,取消原因  ,扣款原因

appletJumpInfo

Object

是

一键进店信息

postCompletionDeductionList

List<Object>

否

完成后扣款记录 可能存在多次部分扣款,多次部分扣只取最近一次扣款金额,不是累加的。有效数据只有1条。

settlementAmount

Double

是

结算金额

praiseType

Integer

是

反馈类型 0:用餐反馈,1:图文反馈,2:无需反馈

praiseName

String

是

反馈类型名称

isSettled

Integer

是

订单结算状态 必需 0:未结算 1:已结算

needAfterSaleImg

Integer

否

驳回后 是否需要提交售后截图 0不需要售后图 1需要售后图

needVideo

Integer

否

驳回后 是否需要提交录屏 0不需要,1需要


postCompletionDeduction

参数名

类型

必传

描述

deductionId

Integer

是

扣款记录id

orderNo

String

是

平台订单号

deductionMoney

Double

是

扣款金额(总)

deductionReason

Double

是

扣款原因

realDeductionMoney

Double

是

扣款金额(本次)

createTime

String

是

扣款发生时间



提交外卖单号

GET /open/bwc/OrderAction/submitTakeoutNo


Query参数

参数名

类型

必传

描述

orderNo

String

是

平台订单号

takeoutOrderNo

String

是

外卖订单号

{
    "msg": "success",
    "code": 200
}

订单提交

POST /open/bwc/OrderAction/submit


已报名、已驳回状态提交订单信息审核。

body参数

参数名

类型

必传

描述

orderNo

String

是

平台订单号

feedbackImg

String

否

评价截图

orderImg

String

是

订单截图


返回数据

{
    "msg": "success",
    "code": 200
}



取消订单

GET /open/bwc/OrderAction/cancel


Query参数

参数名

类型

必传

描述

orderNo

String

是

平台订单号


返回数据

{
    "msg": "success",
    "code": 200
}



预审核

GET /open/bwc/OrderAction/preAudit


如果接入方审核觉得该单可信,可调用该接口。我方审核订单时会参考该信息。

Query参数

参数名

类型

必传

描述

orderNo

String

是

平台订单号


返回数据

{
    "msg": "success",
    "code": 200
}


五、回调通知


订单状态变更通知


data参数

参数名

类型

必传

描述

orderNo

String

是

平台订单号

takeoutOrderNo

String

是

外卖订单号

orderStatus

Integer

是

订单状态 -3已驳回 -1已取消 0已报名 1已提交 2待审核 3已完成

updateTime

String

是

更新时间 格式yyyy-MM-dd HH:mm:ss

{
    "clientId": "drfqwetyh435j78yrtet",
    "data": {
        "orderNo": "BWC20250926090257l46ph1kp",
        "takeoutOrderNo": null,
        "orderStatus": 1,
        "updateTime": "2025-09-26 09:43:37"
    },
    "sign": "78E3C0000CDFFA7F0DC55497C1E618E5",
    "timestamp": 1758851613770
}



订单扣款通知


body参数

参数名

类型

必传

描述

deductionId

Integer

是

扣款标识

orderNo

String

是

平台订单号

deductionMoney

Double

是

扣款金额

deductionReason

String

是

扣款原因

createTime

String

是

发生时间

{
  "clientId": "c4e71e7e7e1ea39f",
  "data": {
    "deductionReason": "实付不足",
    "orderNo": "2701848553767702386",
    "createTime": "2025-11-05 09:43:37",
    "deductionMoney": "1.8",
    "deductionId": "1222"
  },
  "sign": "BFA79C1B809E7A4644E6D63CB1A334A6",
  "timestamp": "1762320984346"
}


六、cps相关


获取cps订单信息

get请求Query参数

参数名

类型

必传

描述

takeoutOrderNo

String

是

外卖订单号

source

String

是

外卖平台类型:mt,ele,jd


返回数据

参数名

类型

必传

描述

takeoutOrderNo

String

是

外卖订单号

orderStatus

Integer

是

订单状态 -1:订单失效 1: 订单付款 2:订单结算

payAmount

Double

是

实付金额

payTime

String

是

付款时间

{
  "payAmount": 10,
  "takeoutOrderNo": "2701848553767702386",
  "payTime": "2025-11-05 12:12:12",
  "orderStatus": 1
}


其他注意事项:

1、订单截图规范

mtdd.png

2、评价截图规范(店铺名、日期时间、反馈内容)

360截图20260402153514607.jpg



分享给朋友: