抖音会员通接入

抖音会员通接入文档:Docs

一、下载SDK

sdk下载抖店开放平台

下载完成的jar包参考文章maven导入本地jar_开心是星星的博客-CSDN博客_maven 导入本地jar,生成pom包,引入依赖

<dependency>
	<groupId>douyin.mem</groupId>
	<artifactId>doudian-sdk-java</artifactId>
	<version>1.1.0</version>
</dependency>

二、参数接收

@GetMapping(value = "/bind", produces = {"application/json;charset=UTF-8"})
    @ResponseBody
    public Map<String, Object> bind(@RequestParam Map<String, String> params) {
        return dyService.bind(params);
    }

produces = {"application/json;charset=UTF-8"}设置为utf-8编码接收模式

对接过程中,出现了url为 xxxxx/app_key=3409409348479354011&timestamp=2021-06-06 13:39:42&sign=8abb21bcfc4cc7ba4a501e2dc73a5e0c',请求体为{"shop_id":13455,"change_id":"2737186442101036","open_id":"#zuLyd4U4J3p+czzXkwg+ZQ673h7KTcrKOddb5iPGAAE0K3MYJmgXEXof9LDtoScAfMKvdVRqpAL4CEI3SrLwYATIzTF9Qw==","amount":100,"action_type":"PointActivity","code":"57454564676","union_id":"#gYlBEpb2U7HGl4PJ7wMgU3o5fdGsCyt4f1GeLfH4AKsirprEU75eFzQfxH/n0bONVbXzfQ=="},既要接收url上的部分参数也要接收请求体中的参数。解决方案:

 @PostMapping(value = "/inpoint", produces = {"application/json;charset=UTF-8"})
    @ResponseBody
    public Map<String, Object> inpoint(@RequestParam("app_key") String app_key,@RequestParam("timestamp") String timestamp,@RequestParam("sign") String sign,@RequestBody DyPoints dyPoints) {

        Map<String, Object> map = dyPointsService.inpoint(dyPoints,timestamp,sign);
        System.out.println(map);
        return map;
    }

三、接收的参数转实体

接收参数类型 Map<String, String> params
String param_json = params.get("param_json").toString();
DyMem mem = JSON.parseObject(param_json, DyMem.class);

DyMem实体一一对应json中的字段

四、获取Response中的"":""不同类型的数据

OrderSearchListResponse response = request.execute(accessToken);
//获取response.toString()中"code"的值
String code = DylkUtil.getString(response.toString(), "code");

public static String getString(String result, String responce) {
    JSONObject s = JSON.parseObject(result);
    String data = s.getString(responce);
    return data;
}

//转换"[{},{},{}]"为List<Map<String, Object>> 
String jsonValue = DylkUtil.getString((DylkUtil.getString(nresponse.toString(), "data")), "shop_order_list");
List<Map<String, Object>> maps = DyJsonUtil.jsonStr2List(jsonValue);

public static List<Map<String, Object>> jsonStr2List(String jsonStr) throws Exception {
    List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
    JSONArray ja = new JSONArray(jsonStr);
    for (int j = 0; j < ja.length(); j++) {
        String jm = ja.getString(j);
        if (jm.indexOf("{") == 0) {
            Map<String, Object> m = jsonStr2Map(jm);
            list.add(m);
        }
    }
    return list;
}

//判断值的不同类型
if (productName instanceof String) {
    //String类型
    detailpojo.setProduct_name((String) detailmap.get("product_name"));
} else if (productName instanceof ArrayList) {
    //ArrayList类型
    String list_str = StringUtils.join((ArrayList<String>) detailmap.get("product_name"), ",");
    detailpojo.setProduct_name(list_str);
} else {
    detailpojo.setProduct_name("产品名称存储类型出错");
}

五、时间戳的处理

获取13位或10位时间戳,13位时间戳是到毫秒级的,10位时间戳是到秒级的

@len :传入的位数
public static String genTimestamp(int len) {
    String ts = String.valueOf(System.currentTimeMillis()).toString().substring(0, len);
    return ts;
}


Long timeend = Long.parseLong(DateUtil.genTimestamp(10));
//可以增加、减少秒级
Long timestart = timeend + minute * 60;

六、Get方式前端传值存在特殊符号

如这种xxxx?params={"name":"zs","age":18}类型的url,使用postman测试时会出现404的报错

解决方案:

@Bean
public TomcatServletWebServerFactory webServerFactory() {
   TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
   factory.addConnectorCustomizers(new TomcatConnectorCustomizer() {
      @Override
      public void customize(Connector connector) {
         connector.setProperty("relaxedPathChars", "\"<>[\\]^`{|}");
         connector.setProperty("relaxedQueryChars", "\"<>[\\]^`{|}");
      }
   });
   return factory;
}

注意:在项目中有gateway网关的情况下,需要在网关中进行bean注入

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值