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

全国霸王餐开放API接口

外卖霸王餐接口文档

一、接入说明


订单流转图

api流程图.png


接入流程


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、订单截图规范

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



分享给朋友:

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。