微信小程序获取urlscheme解决办法


@Service
public class WCTestService {

    @Autowired
    WeChatService weChatService = new WeChatService();
    public SchemeDto getSchemeTest() {
        WechatSchemeReq req = new WechatSchemeReq();
        SchemeDto schemeDto = new SchemeDto();
        // 第一步 校验时间是否合法
//        Long now = System.currentTimeMillis();
//        if (req.getCurrentTime() == null || (now - req.getCurrentTime()) > 5000) {
//            schemeDto.setCode(1001);
//            schemeDto.setMsg("time expire");
//            return schemeDto;
//        }

        // 第二步 校验 originId 是否是业务方自己的
//        String originId = "1222"; // 此处是业务方自己的小程序原始 id
//        if (!originId.equals(req.getOriginId())) {
//            schemeDto.setCode(1002);
//            schemeDto.setMsg("origin error");
//            return schemeDto;
//        }
//
//        // 第三步 校验 sign 是否合法
//        String str="currentTime="+req.getCurrentTime()+"&originId="+req.getOriginId();
//        String sign= DigestUtils.md5Hex(str.toLowerCase());
//        if (!sign.equals(req.getSign())) {
//            schemeDto.setCode(1003);
//            schemeDto.setMsg("sign error");
//            return schemeDto;
//        }

        // 第四步 调用微信 API1 获取 accessToken

//
//       String accessToken = "";
//        accessToken = weChatService.getAccessToken();
//        System.out.println(accessToken+"12312312");


//        try {
//            Map<String, String> httpParamMap = new HashMap<>();
//            httpParamMap.put("grant_type", "client_credential");
//            httpParamMap.put("appid", "123"); // 请填写业务方自己的
//            httpParamMap.put("secret", "123123");
//            // 请填写业务方的
//            String response = HttpUtils.getRequest("https://api.weixin.qq.com/cgi-bin/token",
//                    httpParamMap);
//            JSONObject object = JSON.parseObject(response);
//            if (!object.containsKey("access_token")) {
//                accessToken = object.getString("access_token");
//            }
//        } catch (Exception e) {
//            log.error("sendMessage error.", e);
//        }

        // 第五步 调用微信 API2 获取 scheme
//        String host = "https://api.weixin.qq.com/wxa/generatescheme?access_token=" + accessToken;

        //accessToken 为第四步调用微信的结果
        Map<String, Object> map = new HashMap<>();
        JumpInfo jumpInfo = new JumpInfo();
        String Path = req.getPath();
        String query = req.getQuery();
        jumpInfo.setPath(Path);
        jumpInfo.setQuery(query);
        map.put("jump_wxa", jumpInfo);
        map.put("expire_time", (System.currentTimeMillis() / 1000) + 24 * 60 * 60);
        map.put("is_expire", true);

        String result = weChatService.getURLScheme();
        System.out.println(result);

        JSONObject resultJsonObject = JSON.parseObject(result);
        System.out.println("这是obj对象"+resultJsonObject);
        if (resultJsonObject != null &&
                resultJsonObject.containsKey("errcode") && resultJsonObject.get("errcode").equals(0)) {
            if (resultJsonObject.get("openlink") != null) {
                String scheme = resultJsonObject.get("openlink").toString();
                schemeDto.setCode(0);
                schemeDto.setMsg("success");
                SchemeDto.Result r = new SchemeDto.Result();
                r.setScheme(scheme);
                schemeDto.setResult(r);

//                Gson gson = new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().create();
//                String json = gson.toJson(schemeDto, new TypeToken<SchemeDto>(){}.getType());
                System.out.println(schemeDto);

                return schemeDto;
            }
        }
        //如果走到这里 没有拿到微信的结果 辛苦分析您微信结果的返回
        schemeDto.setCode(1005);
        schemeDto.setMsg("error");
        return schemeDto;
    }
}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值