开发业务背景:因为公司有配送一小时达商品的需求,所以要和蜂鸟对接,使用蜂鸟的骑手配送服务。

蜂鸟接口参考官方文档请转跳:https://open.ele.me/documents
java代码开发demo:https://open.ele.me/extra/java.zip

  • 首先注意的地方是蜂鸟对接的接口按照顺序和最常使用的接口列如下

    关键的点有下面几点。逐一来说
    1.推单接口接口代码的逻辑参考
    2.获取token。开发一般会遇到签名错误。
    3.回调接口的开发
    4.从开发到上线的流程上注意点。
    5.门店问题

1.推单接口接口代码的逻辑参考

推单接口的入参封装按照业务逻辑都是一样的。可以仿照送餐的逻辑。需要的信息包括:

  • a.订单信息。包括多少钱,订单号,支付时间啥的。
  • b.购买的商品明细。客户买的东西不推送蜂鸟,骑手如何知道去店铺里取啥东西呢对吧?
  • c.店铺地址信息。骑手的知道去哪取货吧?
  • d.客户地址信息。骑手的知道送往哪里吧?
  • e.回调接口。蜂鸟系统在订单状态有改变时,通过那个入口可以通知到我们的系统?

上面五点差不多就是全部要推单的信息。当然具体参考官方文档。上面说的是思路

  • 2.获取token。开发一般会遇到签名错误。
    有了上面的订单入参,就可以生成签名了。下图就是调用签名前的入参封装。

    下面是贴出生成签名的方法。我也是参考官网的demo,一样的。
 /*** @Description 请求接口的签名* @Author zhanglifeng*/@Overridepublic String getBusinessSign(String json, int salt) {Map<String, Object> sigStr = new LinkedHashMap<>();// 应该如下面一样各个key值顺序一致sigStr.put("app_id", yml.getFnAppId());sigStr.put("access_token", getToken());sigStr.put("data", json);sigStr.put("salt", salt);StringBuilder seed = new StringBuilder();Set<String> set = sigStr.keySet();String sign = "";try {for (String key : set) {seed.append(key).append("=").append(sigStr.get(key)).append("&");}String queryString = StringUtils.stripEnd(seed.toString(), "&");LOGGER.info(String.format("---------------------MD5计算签名前的入参:"+queryString));sign = FnMd5Util.getMD5Code(queryString);LOGGER.info("计算出来的签名sign:"+sign);} catch (Exception e) {LOGGER.error("请求接口的签名获取出错:", e);}return sign;}

敲小黑板:方法中的MD5算法这里要特别注意字符转码的问题。不然本地能调通,线上会出现签名错误的问题。官网给的就是本地调试没问题,但上线后会出问题的代码。而我的是改过后的,是本地调试报签名问题,但线上没问题。所以这个地方本地调试通了后要改成指定为UTF-8的才行。

//我已上线,验证线上没问题的代码:public static String getMD5Code(String strObj) throws Exception {String resultString = null;try {resultString = strObj;MessageDigest md = MessageDigest.getInstance("MD5");resultString = byteToString(md.digest(strObj.getBytes("UTF-8")));} catch (NoSuchAlgorithmException ex) {ex.printStackTrace();}return resultString;}//官网给的demo:public static String getMD5Code(String strObj) {String resultString = null;try {resultString = strObj;MessageDigest md = MessageDigest.getInstance("MD5");// md.digest() 该函数返回值为存放哈希值结果的byte数组resultString = byteToString(md.digest(strObj.getBytes()));} catch (NoSuchAlgorithmException ex) {ex.printStackTrace();}return resultString;}
  • 3.回调接口的开发
    回调接口主要考虑的一个是域名是否外网访问的到,还有就是接口是否能通过回调的入参和请求方式。
    针对第一个问题:可以让别人帮你测测。这个找个前同事啥的用postman调调,能出来日志便说明能调通。
    针对第二个问题:可以用postman自己本地启服务调封转的接口即可。
    参考我的代码如下:
    @PostMapping("/fnOrder")public void fnOrder(@RequestBody String json) {LOGGER.info("==============蜂鸟订单状态回调成功!========================json"+json);try {service.fnOrder(JSONObject.parseObject(json));} catch (Exception e) {e.printStackTrace();}}
  • 4.从开发到上线的流程上注意点。
    开发到上线必须经过的两个点:
    1.必须先和蜂鸟的联调环境调试通过,才能申请线上环境。这个可以通过你们公司在蜂鸟平台的账号查看接口链条报告都有那些已经调通。
    地址:https://open.ele.me/account/developer

    2.测试用的门店要及早申请,并联系蜂鸟的人员通过才能进行推单测试。
    官方声明如下:若开发人员需要联调配送服务,可在联调过程中参考测试用例进行接口联调,同时可根据【账户中心-开发者信息】中的接口联调报告实时查看当前接口联调情况。联调报告是商户能否上线的主要参考依据,开发人员需要通过联调报告罗列的接口测试和状态测试,通过后才能申请服务上线,提交上线申请后等待平台业务人员审核通过方可正式推单。
  • 5.门店问题
    店铺申请时注意店铺code,店铺名字不得重复,不然蜂鸟系统会报错导致你无法排查接口异常的问题。另外。申请的店铺类型有测试和线上两种。测试的只能在联调环境用,而线上的可以在两个环境都能用。

对接蜂鸟系统推单遇到开发,流程的问题总结相关推荐

  1. php对接微信提醒,PHP对接微信公众平台消息接口开发流程教程

    PHP对接微信公众平台消息接口开发流程教程 发布于 2015-02-15 08:54:13 | 157 次阅读 | 评论: 1 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hyperte ...

  2. php网站怎么对接微信群,PHP对接微信公众平台消息接口开发流程教程

    PHP(外文名:PHP: Hypertext Preprocessor,中文名:"超文本预处理器")是一种通用开源脚本语言.语法吸收了C语言.Java和Perl的特点,利于学习,使 ...

  3. 智能分析网关微信端告警消息推送的开发流程

    智能分析网关是TSINGSEE青犀视频研发的AI边缘计算智能硬件设备,它具有AI智能检测与识别的能力,可对视频及图像中的人.车.物体.行为等进行检测识别与定位.追踪.统计,具体可包括人脸检测与识别.车 ...

  4. php微信公众号怎么开发_PHP对接微信公众平台消息接口开发流程详解及实例

    这篇文章主要介绍了PHP对接微信公众平台消息接口开发流程,如何使用PHP版接口操作公众平台消息,需要的朋友可以参考下 一.写好接口程序 在你的服务器上上传好一个接口程序文件内容如下: 代码如下:< ...

  5. 嵌入式系统需求分析_嵌入式开发流程是什么?

    嵌入式开发流程 当前,嵌入式开发已经逐步规范化,在遵循一般工程开发流程的基础上,嵌入式开发有其自身的一些特点.主要包括系统需求分析(要求有严格规范的技术要求).体系结构设计.软硬件及机械系统设计.系统 ...

  6. IOS推送通知开发流程

    最近开发IOS的推送通知,现把流程及遇到的问题整理一下: 一.证书的准备工作 1.在开发电脑MAC上申请证书 打开钥匙串访问 选择从证书颁发机构请求证书 这里的邮箱账号写你自己的,常用名称可以随便写 ...

  7. CRM系统概念与项目开发流程

    CRM基本概念 CRM系统即客户关系管理系统,顾名思义就是管理公司与客户之间的关系,是这一种以"客户关系一对一理论"为基础,旨在改善企业与客户之间关系的新型管理机制.客户关系管理的 ...

  8. 机器视觉检测系统完整解决方案以及开发流程

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 第一步是确定要求并确定是否可行 机器视觉一词可以想象是具有一组眼睛 ...

  9. 微信平台接口php实现的_PHP对接微信公众平台消息接口开发流程教程

    一.写好接口程序 在你的服务器上上传好一个接口程序文件,如http://www.yourdomain.com/weixin.php  内容如下: 复制代码 代码如下:<?php define(& ...

最新文章

  1. mono+jexus 部署之CompilationException
  2. 几何间隔、函数间隔和||W||
  3. 掌握 Angular2 的服务 (service)
  4. 第三次学JAVA再学不好就吃翔(part21)--局部变量与成员变量
  5. 多线程都调用一个函数,在这个函数中的一个局部变量什么情况会被修改
  6. Python eval 与 exec 函数区别 - Python零基础入门教程
  7. Skype一国通套餐不再提供无限制拨打中国大陆地区通知
  8. MapReduce源码刨析
  9. 吉利控股集团申请注册“富吉康”商标
  10. Jquery Ui AutoComplete自动填写的功能
  11. vue 后端数据成功返回 页面不渲染_vue能获取到数据数据却渲染不到页面上,为什么?...
  12. 勾股定理的html代码,有趣的数学——勾股定理
  13. MATLAB/Simulink双馈风机调频模型,风电调频模型,基于三机九节点搭建含双馈风机的电力系统模型
  14. (三)Lucene中Index.ANALYZED分词相关
  15. 七日杀服务器直连教程,七日杀连接服务器延迟几万 | 手游网游页游攻略大全
  16. 教你用直播大师在局域网内发布组播节目
  17. 数据安全评估体系建设
  18. 如何辨别移动硬盘的好坏
  19. 计算机无法发现网络共享打印机,网络打印机,无法被其它电脑识别
  20. IP地址 归属地查询

热门文章

  1. 浅析全自动停车场系统价格
  2. 用extundelete恢复Ubuntu Linux下删除的文件
  3. 计算机中代表什么意思啊,计算机里的%是什么意思
  4. SPSS 27安装包下载及详细图文安装教程
  5. MATLAB卷积神经网络cnn,Matlab编程之——卷积神经网络CNN代码解析
  6. MAC、OS系统上怎么安装MT4、MT5交易软件
  7. video downloadhelper 解除时间限制_亚马逊解除FBA发货限制?真相来了
  8. 神经网络的模型参数调优的方法有哪些
  9. Netty中的粘包拆包
  10. linux 内存显示多少g,Linux以GB显示内存大小