API取数-获取美团企业版数据

  • 产品级协助
  • 文档创建者:Roxy
  • 历史版本:7
  • 最近更新:Roxy 于 2025-01-20
  • 1. 概述

    1.1 应用场景

    用户需要将美团企业版的接口数据取出,例如希望将 订单列表查询 中的数据取出,如下图所示:

    而「美团企业版」的所有接口调用需要对请求参数进行加密,响应参数进行解密,详情参见:签名实例

    1.2 实现思路

    • 准备 accessKey、entId 等,并拼接获取签名参数。

    • 通过调用订单列表接口,使用循环容器获取所有的 sqtBizOrderId;

    • 使用循环容器和 sqtBizOrderId 列表,再次拼接获取签名参数,调用订单列表接口获取全量的订单数据。

    1.3 任务展示

    2. 操作步骤

    2.1 构建认证参数

    使用「数据转换」下的 SparkSQL 和 json 生成构建 content 明文。

    select UNIX_TIMESTAMP()* 1000 as ts,46574 as entId,1000 as pageSize,${loopTimes} as pageNum

    然后使用 JSON生成进行拼接,拼接形式如下图所示:

    点击「数据预览」即可看到转化好的 JSON 字符串,如下图所示:

    加密获取 content 字段:使用 SparkSQL 进行加密,并构建请求的 body 参数,如下图所示:

    select concat('{"accessKey":"E4P1BF10P8TYS-TK",','"content":"',content,'"}'as content from (
    SELECT replace(base64(aes_encrypt(text, unbase64('VPvrgf293fyPufvsarxe9x/g=='),'ECB')),"\r\n",""as content from $[JSON生成]
      )

    预览即可看到获取的 content 参数,如下图所示:

    将其设置为参数 body 并输出,如下图所示:

    2.2 获取 sqtBizOrderId 列表

    调用接口获取 sqtBizOrderId 全量数据,以便后续使用其获取全量的订单数据。

    2.2.1 调用订单列表接口

    使用「数据转换」,连接 2.1 节的节点,如下图所示:

    进入数据转换编辑界面,使用 API输入算子,选择请求方式,输入订单列表查询接口,并在 body 中输入 2.1 节输出的构建并输出的参数,如下图所示:

    预览即可看到 data 值,即将响应参数JSON序列化后进行加密的结果值,如下图所示:

    2.2.2 data 数据解密

    美团的解密算法中 base64 需要指定字符集是:alphabet 设置为A-Za-z0-9-_,这块需要自定义加密算法,将下面的 jar 放置到%tomcat%\webapps\webroot\WEB-INF\lib,然后重启 FDL。

    secret1.jar

    使用 SparkSQL 对 data 进行解密,输入如下 SQL,如下图所示:

    select  decode(aes_decrypt(unhex(frombase64(data)), unbase64('VPvrgfreaaPufvsarxe74x/g=='),'ECB'),'utf-8'as json from $[API输入]

    点击预览即可看到解码后的订单列表数据,如下图所示:


    2.2.3 将订单列表中指定数据输出

    将解密后的订单列表数据使用 JSON解析算子解析出需要的字段,如下图所示:


    预览数据即可看到解析出的数据,如下图所示:

    同时将数据输出至数据库中,存储获取的 sqtBizOrderId 等,并将其设置为参数,以便使用循环容器,将其作为获取所有 id 数据的循环条件,如下图所示:

    2.2.4 设置循环

    由于订单列表的 body 请求 content 是加密过的密文,API 自带的自循环无法实现分页取数,需要使用循环容器的 ${loopTimes} 构建页码,并进行加密,得到 content 实现分页取数。循环容器需要实现循环取数直到接口数据取完。

    新建「数据转换」使用  SparkSQL 构建 id 参数,赋值1,让循环容器循环起来,如下图所示:

    将 2.1 节和 2.2.1 节设置的数据转换节点拖入至循环容器,同时将 2.2.3 节的初始id 节点与循环容器相连,如下图所示:

    设置循环结束条件,循环容器设置按照条件循环,执行条件为:${id}非空,如下图所示:

    2.2.5 运行任务

    运行任务,将订单id写入数据库表。

    2.3 遍历订单id调用接口获取全量数据

    将 2.2 节写入数据库的订单id取出,如下图所示:

    设置其为参数,如下图所示:

    新增循环容器节点,遍历订单id,如下图所示:

    新建数据转换节点,再次构建签名认证,查看订单列表查询,需要使用 SparkSQL 构建 content 加密前数据结构,如下图所示:

    语法:

    select UNIX_TIMESTAMP()* 1000 as ts,46574 as entId,${sqtBizOrderId} as sqtBizOrderId

    使用 JSON生成算子生成 JSON 格式的 content,如下图所示:

    使用加密函数进行加密,构建 body 请求体,如下图所示:

    select concat('{"accessKey":"E4si950P8WLE-TK",','"content":"',content,'"}'as content from (
    SELECT replace(base64(aes_encrypt(text, unbase64('VPvrg9485UPufvsarxe94x/g=='),'ECB')),"\r\n",""as content from $[JSON生成]
      )

    将加密后的密文进行参数输出,如下图所示:

    再拖入一个数据转换节点到循环容器中,和上一个数据转换节点连接,然后进入数据转换编辑界面,使用API输入算子,如下图所示:

    将取出的订单数据进行解密,使用 SparkSQL 函数进行解密,解密后得到明文的 JSON 数据,如下图所示:

    select  decode(aes_decrypt(unhex(frombase64(data)), unbase64('VPvrgie34fvsarxe94x/g=='),'ECB'),'utf-8'as json from $[API输入]

    解析 JSON,将需要的订单详情字段进行DB表输出,如下图所示:

    设置 DB 输出,如下图所示:

    2.4 运行任务

    运行任务将订单详情进行入库,如下图所示:



    附件列表


    主题: 数据开发-定时任务
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    9s后关闭



    AI

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持

    反馈已提交

    网络繁忙