ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
一、回调接口设计 ~~~\[api\] post:/xxx/xxx ~~~ **Content-Type类型:** application/json;charset=UTF-8 ## 请求参数 | 类型 | 是否必填 | 最大长度 | 描述 | 示例值 | | --- | --- | --- | --- | --- | | String | 是 | 1024| 3DES加密字符串| ....| Java请求示例 ``` MUhMwhNCPD70Z41v246BKLN7pp7Y2plYwrxWpSdnAD6IPfk14ixR40QAGkjPTv38lql30htU0rSJMluXjQOlZDDqTxvHsRCIr1nAmrdKn2KuDoj9BX6dFu4x+kgPvJ6TigRTJYxgZapwwuVljNav2jxz1gpIMsS0ZI+fZS2U2dw= ``` 解析参数(3DES解密后JSON说明) | 请求参数 | 类型 | 是否必填 | 最大长度 | 描述 | 示例值 | | --- | --- | --- | --- | --- | --- | | text| String | 是 | 2048| 内容| ....| | time| String | 是 | 1024| 时间| 1970-01-15 14:56:07| | type| String | 是 | 1024| 类型| 短信| | userId| String| 是 | 1024| 用户ID| 666| | sign| String | 是 | 32 | 商户请求参数的签名串,详见签名 | 响应参数 | 类型 | 是否必填 | 最大长度 | 描述 | | --- | --- | --- | --- | --- | | String | 是 | 11 | 正确:SUCCESS;错误:ERROR| SUCCESS| java接口示例: ``` @RestController @RequestMapping("/api/callBack") public class CallBackApi { /* * key 回调密钥,用于app端与服务端数据加密协议 * 格式位24位大写字母和数字的组合,用户自定义设置 */ private String key = "EAC5391E1A4FBB4A1319BD80"; @Autowired private VipHuidiaoService vipHuidiaoService; @Autowired private SysUserService sysUserService; /** * @ Description : API获取回调接口 * @ author : superMartin * @ param : data:3DES-ECB加密字符串 * @ return : String:成功SUCCESS;失败ERROR * @ exception : * @ date : 2020/7/4 14:13 */ @PostMapping("/save") public String save(@RequestBody String data) throws Exception { //通过key对data进行3DES-ECB解密 String json = ThreeDes.decryptThreeDESECB(data,key); //将解密后的字符串转JSON格式 JSONObject jsonObject = JSONObject.parseObject(json); //将JSON字符转转键值对格式 Map<String, String> params = JSONObject.parseObject(jsonObject.toJSONString(), new TypeReference<Map<String, String>>(){}); /* * 验签,Map去掉sign,,排序通过key的ASCII值排序,通过"key=value&key2=value2...&"+"key="+key; * 得到字符串通过MD5加密后与data解密后获取的sign进行比较,如果一致则为验签成功 */ boolean verify = SignUtil.verifySign(params, key); if (verify) { //TODO 验签成功,做后续的操作 SysUserEntity user = sysUserService.queryObject(Long.valueOf(params.get("userId"))); VipHuidiaoEntity vipHuidiao = new VipHuidiaoEntity(); vipHuidiao.setText(params.get("text")); vipHuidiao.setTime(params.get("time")); vipHuidiao.setType(params.get("type")); vipHuidiao.setUserId(Integer.valueOf(params.get("userId"))); vipHuidiao.setDeptId(user.getDeptId()); vipHuidiao.setDeptName(user.getDeptName()); vipHuidiaoService.save(vipHuidiao); return "SUCCESS"; } //TODO 验签失败 return "ERROR"; } } ```