将一条长链接转成短链接。
主要使用场景: 开发者用于生成二维码的原链接(商品、支付二维码等)太长导致扫码速度和成功率下降,将原长链接通过此接口转成短链接再生成二维码将大大提升扫码速度和成功率。
接口调用请求说明
开发者可通过OpenID来获取用户基本信息。请使用https协议。
http请求方式: POST
https://api.weixin.qq.com/cgi-bin/shorturl?access_token=ACCESS_TOKEN
参数说明
参数 | 是否必须 | 说明 |
---|---|---|
access_token | 是 | 调用接口凭证 |
action | 是 | 此处填long2short,代表长链接转短链接 |
long_url | 是 | 需要转换的长链接,支持http://、https://、weixin://wxpay 格式的url |
官网例子
curl -d "{\"action\":\"long2short\",\"long_url\":\"http://wap.koudaitong.com/v2/showcase/goods?alias=128wi9shh&spm=h56083&redirect_count=1\"}" "https://api.weixin.qq.com/cgi-bin/shorturl?access_token=ACCESS_TOKEN"
返回说明
正常情况下,微信会返回下述JSON数据包给公众号:
{"errcode":0,"errmsg":"ok","short_url":"http:\/\/w.url.cn\/s\/AvCo6Ih"}
参数说明
参数 | 说明 |
---|---|
errcode | 错误码。 |
errmsg | 错误信息。 |
short_url | 短链接。 |
错误时微信会返回错误码等信息,JSON数据包示例如下(该示例为AppID无效错误):
{"errcode":40013,"errmsg":"invalid appid"}
我的调用例子
/**
* 微信生成短链
*
* @return 返回短链;如果生成短链失败,则返回原长链接
*/
public String shortUrl(String longUrl, String accessToken) {
try {
Map<String, String> params = new LinkedHashMap<String, String>();
params.put("action", "long2short");
params.put("long_url", longUrl);
WXClient wxClient = new WXClient();
JSONObject result = wxClient.postJson("https://api.weixin.qq.com/cgi-bin/shorturl?access_token=" + accessToken, JSONObject.fromObject(params).toString());
if ("ok".equals(result.getString("errmsg"))) {
return result.getString("short_url");
}
logger.error("长链:" + longUrl + ", 微信短链生成失败:" + result.toString());
} catch (Exception e) {
logger.error("微信短链生成异常", e);
}
return longUrl;
}