旺POS服务调用接入指南

1. 概述

旺POS平台专注于为开发者提供业务接入的能力,目前已经支持的接入方式有业务APP接入服务接入。本文档是作为 旺POS业务接入指南的补充, 重点介绍服务接入相关过程。

业务APP接入 需要开发者自己开发应用APP,并对接相应的服务端,最终在旺商市场上架,POS设备安装相应业务APP后,既可在POS上完成BP的业务场景支持。

服务接入是相对于业务APP接入的轻量级接入解决方案, 此方案不需要BP上架APP,直接在服务端对接即可完成接入,降低了BP的接入门槛。旺POS平台为业务方(BP)提供了一些基础的服务能力,现在已经开 放的有消息,收银,订单等基础服务。业务方可以在 旺POS BP平台 中选择开通此类服务,业务方就具备了调用相应基础服务的能力。 此文档重点介绍服务接入的相关过程。

基本流程如下:

BP针对设备发起服务调用操作后,需要设备授权接受调用才能继续操作。目前提供两种方式支撑这一操作。

1.4.1 设备主动授权

这种模式适用于旺POS设备,在业务方首次发起服务调用,设备上会有授权确认弹框,操作人员点击确认授权按钮,系统会记录这一授权动作,以后的调用将不再影响。

1.4.2 通过html5页面授权

这种模式适用于旺立方设备,需要在BP平台中的菜单:我的服务-->详情中设置好授权页面,设备使用者需要扫描设备二维码,选择具体服务接入,这一过程会跳转到上一步设置好的页面,完成授权即可。

2. 消息服务

消息服务适用于消息推送这一业务场景,当业务方有消息需要推送的POS设备上时,可以通过开通消息服务,将业务消息推送到POS设备上。

旺POS设备接收消息的载体主要有三个:

此处,消息服务专为载体为消息服务APP的场景做支撑。其他两个载体其实是业务接入方式的消息推送。

这里重点介绍消息服务的接入过程,其他服务的接入都类似,请参考此章节内容。

2.1 开通服务

登录BP平台,进入菜单路径:服务管理 --> 服务列表,如图:

选择标红列详情,进入详情页,点击开通按钮即可,效果如图:

以上,即已开通消息服务.

2.2 服务端对接

进入菜单路径服务管理--> 我的服务,如图:

选择API对接配置,进入对接配置页面:

填写好对接的URL和token,完成对接测试。

注意,此处对接机制遵守旺POS平台业务接入AccessToken机制

2.3 发起服务调用

发起服务调用的本质是将业务方自己的业务数据通过旺POS提供的通道发送到旺POS设备上。

旺POS提供的服务调用接口遵循旺POS平台业务接入AccessToken机制访问控制协议,也采用access_token加上https来实现访问的权限和数据安全。

服务调用接口的相关说明如下:

http://pos.weipass.cn/WeiposAcc/service/PushDataV2
POST
// 基本参数
access_token=ACCESS_TOKEN,          //访问旺POS接口的唯一身份id               
device_en=xxxxx,                    //目标设备en号
msg_type=service_invoke,  //常量,标识此次接口调用类型为服务调用
data={a:1,b:2 ...}                  //业务数据,为JSON结构的字符串

// 平台对业务参数data节点有着严格的格式定义,以下是各种格式的说明及示例

### 1. 收款成功消息

   device_en=b7a0bc2b,
   msg_type=service_invoke,
   access_token=5563daa2d548093131c3cfe8,
   data={  
      "template_code":"CASHSUCCESS002",      //常量,标识此消息格式内容
      "key1":"星港粥道",                      //店铺名称
      "key2":"b7a0bc2b",                    //设备EN号
      "key3":"微信支付",                     //收款方式
      "key4":"吴谦",                       //付款人信息
      "key5":"yee",                       //收款人员                     
      "key6":1432607395185,              //交易号
      "key7":"¥1080",                   //金额
      "key8":"2015-05-26 10:29:55",     //交易时间
      "key9":"一些附加信息"              //附加数据(可选填)
   }   

### 2. 卡券核销成功消息

   device_en=b7a0bc2b,
   msg_type=service_invoke,
   access_token=5563df3ed5480937265219fa,
   data=   {  
      "template_code":"CARDSUCCESS003", //常量,标识此消息格式内容
      "key1":"罗莎蛋糕",                 //商户名称
      "key2":"b7a0bc2b",                //设备EN号
      "key3":"美团",                    //卡券发行商
      "key4":"50元代金券,券码:12344343232,有效期:2014-12-31",
                                      //权益内容
      "key5":"2015-05-26 10:49:34",   //核销时间
      "key6":"yee",                   //核销人员
      "key7":"一些附加信息"             //附加数据(可选填)
   }

### 3. 点菜成功消息

       device_en=b7a0bc2b,
       msg_type=service_invoke,
       access_token=5563dfadd548093726521ba4,
       data=   {  
          "template_code":"MSG100004",
          "key1":"东北饺子馆",               //店铺名称
          "key2":"12号桌",                  //桌号
          "key3":"1432608685519",           //订单编号
          "key4":"2015-02-04 13:30",        //下单时间
          "content":[                       //订单内容总节点
             {  
                "name":"name_0",            //菜品
                "number":"0",               //数量
                "price":"0.0"               //价格
             },
             {  
                "name":"name_1",
                "number":"1",
                "price":"1.5"
             },
             {  
                "name":"name_2",
                "number":"2",
                "price":"3.0"
             }
          ],
          "totalPrice":"100",               //总价
          "discount":"满40减2",             // 折扣信息
          "discountPrice":"91.00"          // 折后价格   
       }

2.4 异步接受服务调用响应结果

参见数据上行(DataReceived)接口

3. 收银服务

4. 订单服务

订单服务适用于远程提交订单这一业务场景。当用户从网站,微信等入口提交订单后,旺POS平台支持BP通过此服务实时将订单信息推送至旺POS设备。

4.1 开通服务

参考消息服务2.1

4.2 服务端对接

参考消息服务2.2

4.3 发起服务调用

订单服务调用的基础机制参考消息服务,以下是订单服务调用接口的相关说明:

http://pos.weipass.cn/WeiposAcc/service/PushDataV2
POST
// 基本参数
access_token=ACCESS_TOKEN,          //访问旺POS接口的唯一身份id               
device_en=xxxxx,                    //目标设备en号
msg_type=service_invoke,  //常量,标识此次接口调用类型为服务调用
data={a:1,b:2 ...}                  //业务数据,为JSON结构的字符串

// 平台对业务参数data节点有着严格的格式定义,以下是各种格式的说明及示例

### 1. 标准打印格式订单

    device_en=b7a0bc2b,
    msg_type=service_invoke,
    access_token=55641270d54809390bcad724,
    data={
        "template_code": "MSG100006",   //常量,标识此消息类型
        "out_order_no": "052600004",    //外部订单号
        "msg_content": {                //消息内容结构体,显示在旺POS设备的标题栏
            "title": "美团外卖订单"       //消息标题
            ,"voice":"您有未处理订单"     //消息语音
            ,"desc":"未处理美团外卖订单"  // 消息描述 
            ,"desc_detail":"订单编号:123456789\n桌号:3号桌\n订单时间:2015-5-26 12:30"
                                        //消息内容详情
        },
        "show_content": "html code",   //显示内容,HTML片段 
        "print_mode": 1,               //打印模式:1-标准打印, 2-旺POS标签打印 
        "print_content": "y82yzbXY1rc6IM37vqlTT0hPCsGqz7W157uwOiAxODY4NHh4eHh4eAogIMGqz7XIyzog1cXI/QoK\nz8K1pcqxvOQ6IDIwMTUtMDUtMjEgMTA6Mjg6MzYKy82yzcqxvOQ6ILDr0KHKsdLUxNoKoaqhqqGq\noaqhqqGqoaqhqqGqoaqhqqGqoaqhqqGqoaoKINChvMYgICAgyv3BvyAgICAgw/uzxgogNy4wMCAg\nICAgMbfdICAgICDO97rsysG4x8Lrt7kKIDguMDAgICAgIDG33SAgICAgz+O4ycjiy7+4x8Lrt7kK\nMTAuMDAgICAgIDG33SAgICAgwunAscWjyOK4x8Lrt7kKoaqhqqGqoaqhqqGqoaqhqqGqoaqhqqGq\noaqhqqGqoaoKtqm1pb3wtu46IDI1LjAw1KoK08W73civICA6IC0yLjAw1KoKyrW8ytanuLY6IDIz\nLjAw1Ko=",
                                      //标准打印内容,这是对原始内容进行Base64编码(GBK)后的内容  
        "command": [1,2]              //指令集合, 1-接单打印, 2-拒绝接单
    }

 ###  2. POS标签格式订单 


    device_en=da8618af,
    msg_type=service_invoke,
    access_token=55642782d54809390bcaf660,
    data={
         "template_code": "MSG100006",   //常量,标识此消息类型
        "out_order_no": "052600004",    //外部订单号
        "msg_content": {                //消息内容结构体,显示在旺POS设备的标题栏
            "title": "美团外卖订单"       //消息标题
            ,"voice":"您有未处理订单"     //消息语音
            ,"desc":"未处理美团外卖订单"  // 消息描述 
            ,"desc_detail":"订单编号:123456789\n桌号:3号桌\n订单时间:2015-5-26 12:30"
                                        //消息内容详情
        },
        "show_content": "html code",   //显示内容,HTML片段 
        "print_mode": 2,               //打印模式:1-标准打印, 2-旺POS标签打印 
        "print_content": [             //旺POS标签打印内容

                {
                    "content":"点菜单"   //本行内容
                    ,"gravity":"CENTER", //显示位置
                    "font_style":"BOLD"  //字体设置
                },

                {"content":"分店名称:东北饺子馆"},
                {"content":"桌号:12号桌"},
                {"content":"订单编号:1234567890"},
                {"content":"下单时间:2015-05-22 08:30"},
                {"content":"小计            数量         名称"},
                {"content":"¥12.0   *2    青椒炒肉"},
                {"content":"¥10.0   *1    麻婆豆腐"},
                {"content":"¥14.0   *2    土豆丝肉泥"},
                {"content":"合计:62元"},
                {"content":"折扣:满40减2"},
                {"content":"折扣后合计60元"}
        ],
        "command": [1,2]                 //指令集合, 1-接单打印, 2-拒绝接单
    }

订单服务的重点数据格式罗列如下:

msg_content 是指订单到达设备时的提醒消息内容

数据示例:

{
    "title": "点菜成功",
    "voice": "您有未处理点菜成功消息",
    "desc": "未处理点菜成功消息",
    "desc_detail": "分店名称:东北饺子馆\n桌号:12号桌\n订单编号:1234567890\n订单时间:2015-05-22 08:30\n\n\n菜品信息:\nname_0    *0    ¥0.0\nname_1    *1    ¥1.5\nname_2    *2    ¥3.0\n\n\n\n合计:¥100\n折扣:\n合计:¥满40减2\n折扣后合计:¥91.0"
}

显示效果为:

打印模式,旺POS定义了两种打印模式,分别是:
- print_mode=1,
标准打印格式,业务方可以自己拼凑打印内容,设备将以为单位分别打印。
- print_mode=2,
旺POS标签打印格式,旺POS定义了一套轻量级打印标签,业务方可以使用这些标签实现较为复杂的打印效果

标签的定义如下:

参数 是否必须 说明 默认值
content 打印的内容
font_family 打印字体,目前支持:
SONG:宋体;
SONG
font_size 打印的字体大小,目前支持:
SMALL:16x16大小;
MEDIUM:24x24大小;
LARGE:32x32大小;
一行的宽度为384
MEDIUM
font_style 打印的字体样式,目前只支持:
NORMAL:正常;
BOLD: 加粗
NORMAL
gravity 打印对齐方式,目前只支持:
LEFT:居左对齐;
CENTER:居中对齐;
RIGHT:居右对齐
LEFT
qr_or_one 是否为二维码或者条码,目前只支持:
ONECODE:打印条码;
QRCODE:打印二维码;
不填写该内容表示打印标准内容
ONECODE

标签打印数据示例:

[
  {
    "content":"[点菜单]\n",
    "gravity":"CENTER",
    "font_style":"BOLD",
    "font_size":"LARGE"
  },
  {
    "content":"1234567890",
    "gravity":"CENTER",
    "qr_or_one":"ONECODE"
  },
  {
    "content":"1234567890\n\n",
    "gravity":"CENTER"
  },
  {
    "content":"分店名称:东北饺子馆\n桌号:12号桌\n订单编号:1234567890\n下单时间:2015-05-22 08:30\n\n"
  },
  {
    "content":"名称          数量    小计\nname_0       *0      ¥0.0\n很好吃的麻婆豆腐\n             *1      ¥1.5\nname_2       *2      ¥3.0\n\n"
  },
  {
    "content":"合计:¥100\n折扣:满40减2\n折扣后合计:¥96.0\n\n\n\n\n\n\n"
  }
]

显示效果为:

show_content表示显示内容。旺POS限制此节点内容为html代码片段,用户可以自定义标准的HTML代码片段进行展示。

显示数据示例:

 <div class="voucher_main">
          <P><span>分店名称:</span>东北饺子馆</P>
          <P><span>桌号:</span>12号桌</P>
          <P><span>订单编号:</span>1234567890</P>
          <P><span>下单时间:</span>2015-05-22 08:30</P>
          <table cellpadding="0" cellspacing="0">
                <tbody>
                        <tr class="baby_details_title">
                              <td>¥0.0</td>
                              <td>*0</td>
                              <td>name_0</td>
                        </tr>
                        <tr class="baby_details_title">
                              <td>¥1.5</td>
                              <td>*1</td>
                              <td>name_1</td>
                        </tr>
                        <tr class="baby_details_title">
                              <td>¥3.0</td>
                              <td>*2</td>
                              <td>name_2</td>
                        </tr>
                </tbody>
          </table>
          <P><span>合计:</span>¥62</P>
          <P><span>折扣:</span>满40减2</P>
          <P><span>折扣后合计:</span>¥60.0</P>
      </div>

显示效果为: