对接抖店API-04 批量解密

因为国家政策原因, 电商平台对用户信息进行保密处理, 所有会返回有用户敏感信息的接口都会发现变成了密文,所有只有调用开发平台API 对密文进行解密操作。

官方文档 : 抖店开放平台

请求入参

JsonArray [{"auth_id" :“商品id”,"cipher_text":“密文”  },{"auth_id" :“商品id” ,,"cipher_text":“密文”  },{"auth_id":""}]

参数名称参数类型是否必须示例值参数描述
cipher_infosJsonArray待解密的密文列表,每次调用不超过50条
auth_idString123业务标识,value为抖音订单号
cipher_textString待解密密文,具体内容参考[数据安全加密对接文档](https://op.jinritemai.com/docs/guide-docs/56/589)密文

当开始写批量解密的测试Demo的时候, 发现数据格式无论怎么样都是错的, 一直返回签名失败等....... 然后突然想起来之前看到的一个简单介绍,好像解密的时候需要对特殊字符进行一个转义的说明 , 然后我就翻到了那篇说明:

如果param_json字段过长,或者param_json内有‘#‘等特殊符号(需要转译),可以使用http post请求方式,并将param_json的值(比如 {"cid":"12","page":"1"})放在请求body里面,原有的url paramter中的param_json不传或者传空即可(其他字段比如timestamp,app_key,method,v,sign,accesstoken等还是按照原有方式传,body中的param_json仍然参与签名计算

抖店开放平台

当时看见这个说明的时候一头雾水,不知道该转义成什么格式 。完全不知道怎么处理,只好下了一个工单,请教专业人员。

结果这个工作人员的回答非常的敷衍, 不知道在哪复制出的答案,还有遗漏的字 ,完全无语了,但是看了后还是发现了华生 。

        请求参数param_json中有"#"等需要urlencode

直接使用 URLEncoder.encode(param_json.toString())
然后就可以正常获取到解密数据了,真的是无语。
下面是测试Demo:

/***************************************   接口批量解密      **********************************/
    public static String batchDecrypt(JSONArray jsonArray){
        //请求示例 : https://openapi-fxg.jinritemai.com/order/batchDecrypt?app_key=your_appkey_here&method=order.batchDecrypt&access_token=your_accesstoken_here&param_json={}&timestamp=2018-06-19%2016:06:59&v=2&sign=your_sign_here
        String order_id = "订单编号";
        String cipherText = "加密字符串----#U/kHlfAE#g/aF1KRQSM6kIPSf1+ScpQU/CXXQ+z1ZLpiQbpjDYpfdQwBLaaOpzP35bhIaMOIFA/DLnU0wYUwD9IbytCYDIS+N14jJiKIV9mAK*CgkIARCtHCAB##";
        //字符串转义
        String method = "order.batchDecrypt";
        String methodStrUrl = "/order/batchDecrypt";

        JSONObject json = new JSONObject(true);
        json.put("auth_id",order_id);
        json.put("cipher_text",cipherText);
        jsonArray.add(json);

        //之前获取到的token
        String accessToken = "本地accessToken";
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String time = simpleDateFormat.format(new Date());

        //参数加密
        JSONObject param_json = new JSONObject(true);
        param_json.put("cipher_infos",jsonArray);
        //获取签名
        String sign = fetchSign(method, param_json.toString(), time);
        //地址后的参数
        StringBuffer param = new StringBuffer();
        param.append("app_key").append("=").append(APP_KEY).append("&");
        param.append("method").append("=").append(method).append("&");
        param.append("access_token").append("=").append(accessToken).append("&");
        param.append("param_json").append("=").append( URLEncoder.encode(param_json.toString())).append("&");
        param.append("timestamp").append("=").append(time).append("&");
        param.append("v").append("=").append("2").append("&");
        param.append("sign").append("=").append(sign);

        // 发送请求
        String response = HttpUtils.sendPost(DOUDIAN_URL + methodStrUrl, param.toString());

        JSONObject jsonObject = JSONObject.parseObject(response);
        if (jsonObject.getIntValue("err_no") == 0) {
            JSONObject data = jsonObject.getJSONObject("data");
            System.out.println(data);
            if (null != data || data.size()!=0){
//                return  data.getJSONObject("decrypt_text").toString();
            }

        }
        return null;
    }

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 21
    评论
### 回答1: 抖店是一个在线外卖平台, 它的订单数据加密密钥是用来保护订单数据安全的. 它是由一个较长的字符串组成的, 通常是包含数字, 大小写字母以及特殊字符的随机生成的字符串. 该密钥由抖店的系统生成, 且仅由系统内部的员工才能获得. 它是用来保护订单数据不被第三方非法获取和使用的. 如果您想要获得抖店订单数据加密密钥, 建议您直接联系抖店的客服人员, 他们会帮助您解决相关问题. ### 回答2: 抖店订单数据的加密密钥是一种安全算法中使用的密钥,用于对订单数据进行加密和解密的过程中。通过使用密钥,可以确保订单数据在传输和存储过程中的安全性。 抖店订单数据加密密钥采用了一种高强度的加密算法,确保订单数据在传输和存储过程中不被未经授权的人员窃取或篡改。加密密钥是一个随机生成的字符串,长度较长,可达到数十个字符。 加密密钥的生成和管理是抖店保护订单数据安全的重要措施之一。只有经过授权的人员才能获得加密密钥,并且需要严格的身份验证和权限控制。抖店保证加密密钥的安全存储,避免泄露和不正当使用。 当订单数据需要传输或存储时,抖店使用加密密钥对订单数据进行加密。只有授权的人员才能获得相应的解密密钥,才能解密并访问订单数据。这种加密方式确保了订单数据的机密性和完整性,即使在传输或存储过程中被攻击者获取,也无法解析出订单的详细信息。 通过使用加密密钥,抖店保证了订单数据的安全性,对用户的隐私信息进行了有效的保护。加密密钥的使用是抖店为了防止数据被恶意获取和篡改而采取的重要策略之一。保证订单数据的安全和隐私对抖店和用户来说都非常重要。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值