All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.jfinal.weixin.sdk.api.QrcodeApi Maven / Gradle / Ivy

/**
 * Copyright (c) 2011-2015, Unas 小强哥 ([email protected]).
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 */

package com.jfinal.weixin.sdk.api;

import java.util.HashMap;
import java.util.Map;

import com.jfinal.weixin.sdk.utils.HttpUtils;
import com.jfinal.weixin.sdk.utils.JsonUtils;

/**
 * 生成带参数的二维码 API
 * https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN
 */
public class QrcodeApi
{
    private static String apiUrl = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=";

    public static ApiResult create(String jsonStr) {
        String jsonResult = HttpUtils.post(apiUrl + AccessTokenApi.getAccessTokenStr(), jsonStr);
        return new ApiResult(jsonResult);
    }

    /**
     * 创建临时二维码
     * @param expireSeconds 该二维码有效时间,以秒为单位。 最大不超过604800(即7天)。
     * @param sceneId 场景值ID,临时二维码时为32位非0整型
     * @return ApiResult 二维码信息
     */
    public static ApiResult createTemporary(int expireSeconds, int sceneId) {
        Map params = new HashMap();
        params.put("expire_seconds", expireSeconds);
        params.put("action_name", "QR_SCENE");

        Map actionInfo = new HashMap();
        Map scene = new HashMap();
        scene.put("scene_id", sceneId);

        actionInfo.put("scene", scene);
        params.put("action_info", actionInfo);
        return create(JsonUtils.toJson(params));
    }

    /**
     * 创建临时二维码
     * @param expireSeconds 该二维码有效时间,以秒为单位。 最大不超过604800(即7天)。
     * @param sceneStr 场景值ID(字符串形式的ID),字符串类型,长度限制为1到64
     * @return ApiResult 二维码信息
     */
    public static ApiResult createTemporary(int expireSeconds, String sceneStr) {
        Map params = new HashMap();
        params.put("expire_seconds", expireSeconds);
        params.put("action_name", "QR_STR_SCENE");

        Map actionInfo = new HashMap();
        Map scene = new HashMap();
        scene.put("scene_str", sceneStr);

        actionInfo.put("scene", scene);
        params.put("action_info", actionInfo);
        return create(JsonUtils.toJson(params));
    }

    /**
     * 创建永久二维码
     * @param sceneId 场景值ID,永久二维码时最大值为100000(目前参数只支持1--100000)
     * @return ApiResult 二维码信息
     */
    public static ApiResult createPermanent(int sceneId) {
        Map params = new HashMap();
        params.put("action_name", "QR_LIMIT_SCENE");

        Map actionInfo = new HashMap();
        Map scene = new HashMap();
        scene.put("scene_id", sceneId);

        actionInfo.put("scene", scene);
        params.put("action_info", actionInfo);
        return create(JsonUtils.toJson(params));
    }

    /**
     * 创建永久二维码
     * @param sceneStr 场景值ID(字符串形式的ID),字符串类型,长度限制为1到64,仅永久二维码支持此字段
     * @return ApiResult 二维码信息
     */
    public static ApiResult createPermanent(String sceneStr) {
        Map params = new HashMap();
        params.put("action_name", "QR_LIMIT_STR_SCENE");

        Map actionInfo = new HashMap();
        Map scene = new HashMap();
        scene.put("scene_str", sceneStr);

        actionInfo.put("scene", scene);
        params.put("action_info", actionInfo);
        return create(JsonUtils.toJson(params));
    }

    private static String showQrcodeUrl = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=";

    /**
     * 通过ticket换取二维码地址
     * @param ticket 换取二维码参数
     * @return String url
     */
    public static String getShowQrcodeUrl(String ticket) {
        return showQrcodeUrl + ticket;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy