Maison >Applet WeChat >Développement WeChat >Développement de la plateforme publique WeChat pour obtenir un code QR personnalisé

Développement de la plateforme publique WeChat pour obtenir un code QR personnalisé

高洛峰
高洛峰original
2017-03-03 10:06:491735parcourir

1. Introduction à la fonction

Lors de la promotion, nous pouvons dire à l'autre partie quel est notre compte public WeChat, et les clients peuvent le rechercher puis le suivre. Le code QR nous offre une grande commodité. Il suffit de le scanner et vous pourrez le suivre.

Si vous l'avez déjà suivi, accédez immédiatement à l'écran de conversation. Lorsque nous faisons de la promotion, ce n'est plus un simple texte, il peut s'agir d'un code QR personnalisé, qui sera certainement très vivant.

WeChat offre un bon support pour les codes QR et peut également générer des codes QR pour différents scénarios selon les besoins. Ci-dessous, nous expliquerons comment obtenir et utiliser les codes QR.

Remarque : limité au compte de service et à l'authentification WeChat, frais 300

微信公众平台开发获取个性二维码

Interfaces associées

Afin de répondre aux besoins d'analyse de la promotion des canaux utilisateurs, la plateforme publique propose une interface de génération de codes QR avec paramètres. Grâce à cette interface, plusieurs codes QR avec différentes valeurs de scène peuvent être obtenus. Une fois que l'utilisateur les a scannés, le compte officiel peut recevoir le push d'événement.

Il existe actuellement deux types de codes QR, à savoir les codes QR temporaires et les codes QR permanents. Le premier a un délai d'expiration, jusqu'à 1800 secondes, mais peut générer un nombre plus grand, tandis que le second n'a pas de délai d'expiration. , le nombre est petit (actuellement, les paramètres ne prennent en charge que 1 à 1 000). Les deux codes QR conviennent respectivement à la liaison de compte, aux statistiques de source d'utilisateurs et à d'autres scénarios.

Lorsque l'utilisateur scanne le code QR avec la valeur de scène, les deux événements suivants peuvent être poussés :

  1. Si l'utilisateur n'a pas suivi le compte officiel, l'utilisateur peut suivez le compte officiel, après avoir prêté attention, WeChat transmettra l'événement d'attention avec une valeur de scène au développeur.

  2. Si l'utilisateur a suivi le compte officiel, l'utilisateur entrera automatiquement dans la session après la numérisation, et WeChat transmettra également l'événement de numérisation avec la valeur de la scène au développeur.

Le processus d'obtention d'un code QR avec des paramètres comprend deux étapes. Tout d'abord, créez un ticket de code QR, puis utilisez le ticket vers l'URL spécifiée pour échanger le code QR.

Créer un ticket de code QR

Chaque fois que vous créez un ticket de code QR, vous devez fournir un paramètre (scene_id) défini par le développeur. Nous introduisons le code QR temporaire et le QR permanent. code respectivement. Le processus de création d’un ticket de code QR.

Instructions de demande de code QR temporaire

http请求方式: POST
URL: https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKENPOST数据格式:json
POST数据例子:{"expire_seconds": 1800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": 123}}}

Instructions de demande de code QR permanent

http请求方式: POST
URL: https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKENPOST数据格式:json
POST数据例子:{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": 123}}}

Description du paramètre

参数 说明
expire_seconds 该二维码有效时间,以秒为单位。 最大不超过1800。
action_name 二维码类型,QR_SCENE为临时,QR_LIMIT_SCENE为永久
action_info 二维码详细信息
scene_id 场景值ID,临时二维码时为32位整型,永久二维码时最大值为1000

Description du retour

Résultat de retour Json correct :

{"ticket":"gQG28DoAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL0FuWC1DNmZuVEhvMVp4NDNMRnNRAAIEesLvUQMECAcAAA==","expire_seconds":1800}

参数 说明
ticket 获取的二维码ticket,凭借此ticket可以在有效时间内换取二维码。
expire_seconds 二维码的有效时间,以秒为单位。最大不超过1800。

Exemple de retour Json incorrect :

{"errcode":40013,"errmsg":"invalid appid"}

Description du code de retour global

Utiliser les outils de débogage Web pour déboguer l'interface

Échanger un ticket contre un code QR

Obtenir un ticket de code QR Ensuite, les développeurs peuvent échanger billets pour les images de code QR. Veuillez noter que cette interface peut être appelée sans vous connecter.

Demande d'instructions

HTTP GET请求(请使用https协议)
https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=TICKET

Instructions de retour

Lorsque le ticket est correct, le code de retour http est 200, qui est une image qui peut être affichée ou téléchargée directement.

L'en-tête HTTP (exemple) est le suivant :

Accept-Ranges:bytes
Cache-control:max-age=604800Connection:keep-alive
Content-Length:28026Content-Type:image/jpg
Date:Wed, 16 Oct 2013 06:37:10 GMT
Expires:Wed, 23 Oct 2013 14:37:10 +0800Server:nginx/1.4.1

En cas d'erreur ( tel qu'un ticket illégal) renvoie le code d'erreur HTTP 404.

3. Implémentation spécifique

Toujours en ajoutant des fonctions basées sur le cas du robot précédent, regardez directement le code.

/// <summary>
    /// 二维码管理者
    /// </summary>
    public class DimensionalCodeManager
    {
        /// <summary>
        /// 临时二维码地址
        /// </summary>
        /// 使用string.format时,报:字符串格式错误,因为其中有{
        //private const string TEMP_URL = "{\"expire_seconds\": 1800, \"action_name\": \"QR_SCENE\", \"action_info\": {\"scene\": {\"scene_id\": {0}}}}";
        /// <summary>
        /// 解决办法,将原有字符串中的一个{用两个{代替
        /// </summary>
        private const string TEMP_JSON_DATA = "{{\"expire_seconds\": 1800, \"action_name\": \"QR_SCENE\", \"action_info\": {{\"scene\": {{\"scene_id\": {0}}}}}}}";
        /// <summary>
        /// 永久二维码地址
        /// </summary>
        private const string PERMANENT_URL = "{{\"action_name\": \"QR_LIMIT_SCENE\", \"action_info\": {{\"scene\": {{\"scene_id\": {0}}}}}}}";
        /// <summary>
        /// 获取ticket的URL
        /// </summary>
        private const string GET_TICKET_URL = " https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token={0}";
        /// <summary>
        /// 获取二维码URL
        /// </summary>
        private const string GET_CODE_URL = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket={0}";
        /// <summary>
        /// 根据场景ID获取ticket
        /// </summary>
        /// <param name="sceneID">场景ID</param>
        /// <param name="isTemp">是否是临时二维码</param>
        /// <returns></returns>
        private static string GetTicket(int sceneID, bool isTemp)
        {
            string result = null;
            string data = string.Empty;
            if (isTemp)
            {
                data = string.Format(TEMP_JSON_DATA, sceneID.ToString());
            }
            else
            {
                if (sceneID > 0 && sceneID <= 1000)
                {
                    data = string.Format(PERMANENT_URL, sceneID);
                }
                else
                {
                    //scene_id不合法
                    return null;
                }
            }

            string ticketJson = HttpUtility.GetData(string.Format(GET_TICKET_URL,Context.AccessToken));

            XDocument doc = XmlUtility.ParseJson(ticketJson, "root");
            XElement root = doc.Root;
            if (root != null)
            {
                XElement ticket = root.Element("ticket");
                if (ticket != null)
                {
                    result = ticket.Value;
                }
            }

            return result;
        }
        /// <summary>
        /// 创建临时二维码
        /// </summary>
        /// <param name="sceneID">场景id,int类型</param>
        /// <returns></returns>
        public static string GenerateTemp(int sceneID)
        {
            string ticket = GetTicket(sceneID,true);
            if (ticket == null)
            {
                return null;
            }

            return HttpUtility.GetData(string.Format(GET_CODE_URL, ticket));
        }
        /// <summary>
        /// 创建临时二维码
        /// </summary>
        /// <param name="sceneID">场景id,int类型</param>
        /// <returns></returns>
        public static string GeneratePermanent(int sceneID)
        {
            string ticket = GetTicket(sceneID, false);
            if (ticket == null)
            {
                return null;
            }

            return HttpUtility.GetData(string.Format(GET_CODE_URL, ticket));
        }
    }

Pour plus de développement de plateforme publique WeChat afin d'obtenir des codes QR personnalisés, veuillez faire attention au site Web chinois PHP pour les articles connexes !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn