微信开发 返回链接_微信app开发 异步回调链接 返回xml为空 - CSDN
精华内容
参与话题
  • 微信公众平台开发-access_token获取及应用(含源码) 作者: 孟祥磊-《微信公众平台开发实例教程》  将一条长链接转成短链接。开发者用于生成二维码的原链接(商品、支付二维码等)太长导致扫码速度和成功率下降...

    微信公众平台开发-access_token获取及应用(含源码)
    作者: 孟祥磊-《微信公众平台开发实例教程》

      将一条长链接转成短链接。开发者用于生成二维码的原链接(商品、支付二维码等)太长导致扫码速度和成功率下降,将原长链接通过此接口转成短链接再生成二维码将大大提升扫码速度和成功率。

      一.实例调用

    接口说明

    http请求方式:GET

    接口调用地址:

    https://api.weixin.qq.com/cgi-bin/shorturl?access_token=ACCESS_TOKEN

    请求参数说明,如表所示:

    参数

    是否必须

    说明

    access_token

    调用接口凭证

    action

    此处填long2short,代表长链接转短链接

    long_url

    需要转换的长链接,支持http://、https://、weixin://wxpay 格式的url

    返回说明:

    正常情况下,微信会返回JSON数据包给公众号,如下所示:

    {"errcode":0,"errmsg":"ok","short_url":"http:\/\/w.url.cn\/s\/AvCo6Ih"}

    返回信息参数说明,如表所示:

    参数

    说明

    errcode

    错误码。

    errmsg

    错误信息。

    short_url

    短链接。

    使用程序调用接口获取:

    <?php
    /*
     *微信长链接转短链接
    */
    require('wei_function.php');
    $appid="wx78478e595939c538";
    $secret="5540e8ccab4f71dfad752f73cfb85780";
    $url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appcolor: #800080">$appid."&secret=".$secret."";
    $output=getdata($url);
    $tokenarr=(array)json_decode($output);
    $token=$tokenarr['access_token'];
    $date='{"action":"long2short","long_url":"https://item.jd.com/12041625.html"}';
    $shorturl="https://api.weixin.qq.com/cgi-bin/shorturl?access_token=".$token."";
    $shortarr=(array)json_decode(getshort($date,$shorturl));
    echo $shortarr['short_url'];
    
    function sendcontent($date, $url)
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $date);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $data = curl_exec($ch);
        curl_close($ch);
        return $data;
    }
    ?>

    ²代码解析

    require('wei_function.php');包含wei_function.php,使用getdata()函数,获取到access_token后,我们需要将指定数据发送到对应网址服务器,然后获取服务器返回的数据。

    $date='{"action":"long2short","long_url":"http://www.jikexueyuan.com/course/1578.html"}';

    为需要发送的数据,格式为JSON,这里转换的一个长链接为:

    https://item.jd.com/12041625.html

    将数据发送到:$shorturl="https://api.weixin.qq.com/cgi-bin/shorturl?access_token=".$token."";

    这里除了getdata()函数外,增加了一个sendcontent()的函数,该函数与getdata()不同的是,它除向服务器发送链接请求外,还可以发送单独的数据到对方服务器,对方服务器再根据所发送的数据,返回对应的结果。

    同样将sendcontent()函数写到wei_function.php文件中,此时wei_function.php文件内的函数分别有object_array()、get_weather()、getdata()、以及sendcontent(),该文件见《微信公众平台开发实例一书》第95页,优化后的代码:

    <?php
    /*
     *微信长链接转短链接
    */
    require('wei_function.php');
    $appid="wx78478e595939c538";
    $secret="5540e8ccab4f71dfad752f73cfb85780";
    $url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appcolor: #800080">$appid."&secret=".$secret."";
    $output=getdata($url);
    
    $tokenarr=(array)json_decode($output);
    $token=$tokenarr['access_token'];
    //发送xml数据
    $date='{"action":"long2short","long_url":"https://item.jd.com/12041625.html"}';
    //长链接转短链接接口地址
    $shorturl="https://api.weixin.qq.com/cgi-bin/shorturl?access_token=".$token."";
    $shortarr=(array)json_decode(sendcontent($date,$shorturl));
    echo $shortarr['short_url'];
    ?>

    运行该文件,得到如图所示的信息,长链接成功被转换为短链接。

     

    展开全文
  • 需要引导用户进行登录或者注册,此时需要发送一段文本消息给用户,包含(登录和注册的链接),同时,用户的openid(在关注事件中获取的)作为参数拼接在链接后面,那么java中是如何返回这段消息给微信的呢: ...

    工作汇总遇到一个场景:用户扫码关注后,需要引导用户进行登录或者注册,此时需要发送一段文本消息给用户,包含(登录和注册的链接),同时,用户的openid(在关注事件中获取的)作为参数拼接在链接后面,那么java中是如何返回这段消息给微信的呢:

     String loginurl = "<a href=\"http://www.baidu.com/signin.html?openid=" + openid + "\">登录/注册</a>";
                                    StringBuilder contentBuffer = new StringBuilder();
                                    contentBuffer.append("您好,正在登录xxx。\n");
                                    contentBuffer.append("1.有账号,请登录账号。\n");
                                    contentBuffer.append("2.没有账号,请先注册账号。\n\n");
                                    contentBuffer.append(loginurl).append("\n");
                                    contentBuffer.append("登录/注册后,下次扫码可直接登录哦。");
                                    String content = contentBuffer.toString();
                                    return getTextMessage(map, content);

    登录/注册用HTML中的a标签包裹起来,这里 \n  是一个换行符    然后contentBuffer为要回复的消息,转为xml发送给微信,就可以发送至用户微信上了,效果图如下:

    其中·登录注册就是超链接了,包含了openid的参数(http://www.baidu.com/signin.html?openid=xxxxxx);

    展开全文
  • 微信开发全局返回码说明

    千次阅读 2016-05-09 13:27:43
    微信开发全局返回码说明

    微信开发全局返回码说明

    返回码 说明
    -1 系统繁忙
    0 请求成功
    40001 获取access_token时AppSecret错误,或者access_token无效
    40002 不合法的凭证类
    40003 不合法的OpenID
    40004 不合法的媒体文件类型
    40005 不合法的文件类型
    40006 不合法的文件大小
    40007 不合法的媒体文件id
    40008 不合法的消息类型
    40009 不合法的图片文件大小
    40010 不合法的语音文件大小
    40011 不合法的视频文件大小
    40012 不合法的缩略图文件大小
    40013 不合法的APPID
    40014 不合法的access_token
    40015 不合法的菜单类型
    40016 不合法的按钮个数
    40017 不合法的按钮个数
    40018 不合法的按钮名字长度
    40019 不合法的按钮KEY长度
    40020 不合法的按钮URL长度
    40021 不合法的菜单版本号
    40022 不合法的子菜单级数
    40023 不合法的子菜单按钮个数
    40024 不合法的子菜单按钮类型
    40025 不合法的子菜单按钮名字长度
    40026 不合法的子菜单按钮KEY长度
    40027 不合法的子菜单按钮URL长度
    40028 不合法的自定义菜单使用用户
    40029 不合法的oauth_code
    40030 不合法的refresh_token
    40031 不合法的openid列表
    40032 不合法的openid列表长度
    40033 不合法的请求字符,不能包含\uxxxx格式的字符
    40035 不合法的参数
    40038 不合法的请求格式
    40039 不合法的URL长度
    40050 不合法的分组id
    40051 分组名字不合法
    41001 缺少access_token参数
    41002 缺少appid参数
    41003 缺少refresh_token参数
    41004 缺少secret参数
    41005 缺少多媒体文件数据
    41006 缺少media_id参数
    41007 缺少子菜单数据
    41008 缺少oauth code
    41009 缺少openid
    42001 access_token超时
    42002 refresh_token超时
    42003 oauth_code超时
    43001 需要GET请求
    43002 需要POST请求
    43003 需要HTTPS请求
    43004 需要接收者关注
    43005 需要好友关系
    44001 多媒体文件为空
    44002 POST的数据包为空
    44003 图文消息内容为空
    44004 文本消息内容为空
    45001 多媒体文件大小超过限制
    45002 消息内容超过限制
    45003 标题字段超过限制
    45004 描述字段超过限制
    45005 链接字段超过限制
    45006 图片链接字段超过限制
    45007 语音播放时间超过限制
    45008 图文消息超过限制
    45009 接口调用超过限制
    45010 创建菜单个数超过限制
    45015 回复时间超过限制
    45016 系统分组,不允许修改
    45017 分组名字过长
    45018 分组数量超过上限
    46001 不存在媒体数据
    46002 不存在的菜单版本
    46003 不存在的菜单数据
    46004 不存在的用户
    47001 解析JSON/XML内容错误
    48001 api功能未授权
    50001 用户未授权该api
    展开全文
  • 需求在公众号内的输入任意文字,文字相关的第三方网站链接实现简单后台设置我们在微信公众平台上,是可以进行简单的自定义消息回复的。这里的显然不能满足我们的需求。配置服务器配置域名略配置测试服务器略。和一般...

    需求

    在公众号内的输入任意文字,文字相关的第三方网站链接

    实现

    简单后台设置

    我们在微信公众平台上,是可以进行简单的自定义消息回复的。

    这里写图片描述

    这里的显然不能满足我们的需求。

    配置服务器

    配置域名

    配置测试服务器

    略。

    和一般我们配置项目没有区别,所以不再赘述。

    本次我们的测试域名是 http://***.***.**/***.php

    验证Token

    在微信的公众后台的开发 / 基本配置 / 填写服务器配置

    我们需要配置服务器的地址,在启用配置之前,需要经过微信的token验证。

    本文使用的实例代码为PHP.

    官方文档给出了验证流程图

    这里写图片描述

    下面为PHP实现的代码。

    //1 获取加密参数
    
    $token = "***";
    
    $signature = $_GET['signature'];
    
    $timestamp  =$_GET['timestamp'];
    
    $nonce = $_GET['nonce'];
    
    $echostr = $_GET['echostr'];
    
    //2 排序数组
    $list = [
        'token'=>$token,
        'timestamp'=>$timestamp,
        'nonce'=>$nonce,
    ];
    
    sort($list);
    //拼接字符串
    
    $str ="";
    foreach ($list as $value){
        $str .= $value;
    }
    
    //加密
    $encode_str = sha1($str);
    if($encode_str == $signature){
        echo  $echostr;
    
    }

    接收消息

    在官方文档中,有一个对应的事例代码。

    https://wximg.gtimg.com/shake_tv/mpwiki/cryptoDemo.zip

    第一步,接收普通消息

    这里我们采用明文的方式接收数据。

    下面采用官方的接口调试工具。

    这里写图片描述

    由于是被动调用接口,所以我们只需要从消息中得到最后的用户id以及消息文字就行了。

    $msg = file_get_contents("php://input");
    
    $xml = new DOMDocument();
    
    $xml->loadXML($msg);
    
    $from_user_name = $xml->getElementsByTagName("FromUserName")->item(0)->nodeValue;
    
    $msg_type = $xml->getElementsByTagName("MsgType")->item(0)->nodeValue;
    
    $content = $xml->getElementsByTagName("Content")->item(0)->nodeValue;
    
    echo  $from_user_name."  说的类型是".$msg_type.",  内容是".$content;

    发送消息

    当用户发送消息给公众号时(或某些特定的用户操作引发的事件推送时),会产生一个POST请求,开发者可以在响应包(Get)中返回特定XML结构,来对该消息进行响应(现支持回复文本、图片、图文、语音、视频、音乐)。严格来说,发送被动响应消息其实并不是一种接口,而是对微信服务器发过来消息的一次回复。

    也就是说,直接返回对应的xml就行。

    下面的简单实现代码,直接返回给用户自己说的话。

    $msg = file_get_contents("php://input");
    
    $xml = new DOMDocument();
    
    $xml->loadXML($msg);
    
    $from_user_name = $xml->getElementsByTagName("FromUserName")->item(0)->nodeValue;
    
    $to_user_name = $xml->getElementsByTagName("ToUserName")->item(0)->nodeValue;
    
    $msg_type = $xml->getElementsByTagName("MsgType")->item(0)->nodeValue;
    
    $content = $xml->getElementsByTagName("Content")->item(0)->nodeValue;
    
    $time = time();
    
    $str = "<xml>
    <ToUserName><![CDATA[".$from_user_name."]]></ToUserName>
    <FromUserName><![CDATA[".$to_user_name."]]></FromUserName>
    <CreateTime>".$time."</CreateTime>
    <MsgType><![CDATA[text]]></MsgType>
    <Content><![CDATA[".$content."]]></Content>
    </xml>";
    
    echo $str;

    下面是最终实现的效果

    这里写图片描述

    返回超链接

    //前后省略,跟上面的一样
    
    $str = "<xml>
    <ToUserName><![CDATA[".$from_user_name."]]></ToUserName>
    <FromUserName><![CDATA[".$to_user_name."]]></FromUserName>
    <CreateTime>".$time."</CreateTime>
    <MsgType><![CDATA[news]]></MsgType>
    <ArticleCount>1</ArticleCount>
    <Articles>
    <item>
    <Title><![CDATA[".$content."]]></Title> 
    <Description><![CDATA[我是文字描述]]></Description>
    <PicUrl><![CDATA[http://avatar.csdn.net/C/6/6/1_diandianxiyu.jpg]]></PicUrl>
    <Url><![CDATA[http://blog.coderfix.cn]]></Url>
    </item>
    <item>
    </xml>";

    实现效果

    这里写图片描述

    总结

    微信的文档还是十分详细的,我们能通过微信实现很多好玩的功能。

    参考资料

    展开全文
  • 微信开发返回【10003】错误

    万次阅读 2017-10-18 11:43:21
    今天上午开发中遇到这个错误,查了一下要么是微信公众号里的 接口权限->网页授权->修改 里面的东西没改 设置完成后,在代码中,把回调地址改成上面的链接,后面带什么参数都可以。 网上也看到说有的人...
  • 贴几个不错的链接: ... 有一个问题一直无法解决,就是在...在微信开发的过程中遇到了分享时自定义标题和图片的需求,通过微信分享的链接会出现无法指定标题和说明以及图片。 下面贴出代码: package com.ruhr.o...
  • 话不多说,直接上链接http://219.**.**.**/weixinServer3/WeixinOpenid?gtUrl=vipService/houseKeeping&code=081XZD9j0ISI4p1LRE6j0MYT9j0XZD9U&state=123&nsukey=5sIssURwYZCqzW0fOFUm5Tov8E%2...
  • 上一篇《微信开发学习总结(一)——微信开发环境搭建》我们已经完成了微信开发的准备工作,准备工作完成之后,就要开始步入正题了。 一、微信公众平台的基本原理  在开始做之前,先简单介绍了微信公众平台的基本...
  • 微信接口返回码对照表

    万次阅读 2017-12-21 21:33:14
    全局返回码说明 公众号每次调用接口时,可能获得正确或错误的返回码,开发者可以根据返回码信息调试接口,排查错误。 全局返回码说明如下: 返回码 说明 -1 系统繁忙,此时请...
  • 微信开发平台Api接口返回码说明

    万次阅读 2018-03-05 14:02:29
    返回码说明地址:点击打开链接返回码错误码描述说明40001invalid credential不合法的调用凭证40002invalid grant_type不合法的grant_type40003invalid openid不合法的OpenID40004invalid media type不合法的媒体文件...
  • 手把手教你springboot企业微信开发(二)1、企业微信开发第一步2、weixin-java-cp-demo-master1)、引入thymeleaf改造项目2)增加Configuration3)回到企业号4)穿透内外网5)完善 从这一篇开始,开始从实际项目探索...
  • 个人微信开发api文档

    2019-05-24 04:13:32
    个人微信开发api文档 个人微信开发api文档,个人微信开发sdk,个人微信开发协议接口 微信开发sdk服务端调用接口 1、基础消息类型 1、客户端发送的心跳包 HeartBeatReq = 1001; 2、消息接收确认回复...
  • 先去检查检查微信开发平台是否配置授权目录,授权配置的网址要比使用的网址高一级。 例如,授权目录配置 www.baidu.com/pay 使用的网址应该是 www.baidu.com/pay/order 项目路由也要配置正确,需要指向使用微信...
  • 微信公众号开发基本流程

    万次阅读 多人点赞 2019-04-26 09:40:21
    过年前后做了个微信公众号项目,已经过去一段时间了,抽空回忆总结下基本流程吧,不然很快估计自己就忘了。。 微信公众平台官网:https://mp.weixin.qq.com 文章目录一、注册公众号二、了解公众号管理页面三、必备...
  • 微信公众平台开发网页开发

    万次阅读 2018-07-11 14:28:43
    以前写过一篇《微信公众平台开发的一点收获》,这一篇说说微信公众平台网页开发的知识。微信公众平台应该是国内最大的开放平台,对于技术开发人员来说,不管有没有自己的公众号,应该也要有一定的了解,其实只要有一...
  • 解决iOS微信底部返回横条问题

    千次阅读 2019-01-30 14:57:28
    参考文章: 1、iOS新版微信底部返回横条问题 https://blog.csdn.net/u013513053/article/details/82464989 2、用cookie解决新版微信中H5页面底部白条问题 ...3、微信开发 Weixin JS接口 隐藏微信中网页底部导航栏...
  • 微信开发 IOS 返回键问题

    千次阅读 2016-09-09 14:31:11
    场景 进入微信公众号  点菜单 跳到 自己开发的jsp页面  ...点返回按钮没用 ios 不能返回到自己开发的jsp页面 (安卓里是好的) 解决方案: 在跳转路径后面加上: #wechat_redirect
  • 微信开发之——接口返回

    千次阅读 2017-01-18 17:20:16
    公众号每次调用接口时,可能获得正确或错误的返回码,开发者可以根据返回码信息调试接口,排查错误。 全局返回码说明如下: 返回码 说明 -1 系统繁忙,此时请开发者稍候再试 0 请求成功 ...
  • 微信开发源码注释

    千次阅读 2016-06-11 18:11:55
    本文用于解释微信开发中的中PHP代码意义,用于学习先关基础知识。
1 2 3 4 5 ... 20
收藏数 31,623
精华内容 12,649
关键字:

微信开发 返回链接