首页 > 代码库 > 微信支付之转换短链接

微信支付之转换短链接

应用场景

该接口主要用于扫码原生支付静态支付中的二维码链接转成短链接(weixin://wxpay/s/XXXXXX),减小二维码数据量,提升扫描速度和精确度。

官方在线文档:http://pay.weixin.qq.com/wiki/doc/api/index.php?chapter=9_9

接口地址

https://api.mch.weixin.qq.com/tools/shorturl

应用此接口前请保证你的扫码原生支付静态支付可以正常支付。

参考代码如下:

package com.wingo.action.config;

 

importjava.util.Date;

importjava.util.Map;

importjava.util.SortedMap;

importjava.util.TreeMap;

 

importcom.wingo.util.CommonUtil;

importcom.wingo.util.ConfigUtil;

importcom.wingo.util.PayCommonUtil;

importcom.wingo.util.XMLUtil;

 

/**

 *

 * @author 李欣桦

 * @date 2015-1-6下午5:14:01

 *

 * 将静态native支付链接转为短链接

 */

public classShortAction {

       public static void main(String[] args)throws Exception{

              SortedMap<Object,Object>paras = new TreeMap<Object,Object>();

              paras.put("appid",ConfigUtil.APPID);

              paras.put("mch_id",ConfigUtil.MCH_ID);

              paras.put("time_stamp",Long.toString(new Date().getTime()));

              paras.put("nonce_str",PayCommonUtil.CreateNoncestr());

              paras.put("product_id","No.201401051607001");//商品号要唯一

              String sign =PayCommonUtil.createSign("UTF-8", paras);

              paras.put("sign", sign);

              String url ="weixin://wxpay/bizpayurl?sign=SIGN&appid=APPID&mch_id=MCHID&product_id=PRODUCTID&time_stamp=TIMESTAMP&nonce_str=NOCESTR";

              String nativeUrl =url.replace("SIGN", sign).

                             replace("APPID", ConfigUtil.APPID).

                             replace("MCHID", ConfigUtil.MCH_ID).

                             replace("PRODUCTID",(String)paras.get("product_id")).

                             replace("TIMESTAMP",(String)paras.get("time_stamp")).

                             replace("NOCESTR", (String)paras.get("nonce_str"));

              System.out.println("nativeUrl="+nativeUrl);

             

             

               SortedMap<Object,Object> parameters =new TreeMap<Object,Object>();

               parameters.put("appid",ConfigUtil.APPID);

               parameters.put("mch_id",ConfigUtil.MCH_ID);

               parameters.put("nonce_str",PayCommonUtil.CreateNoncestr());

               parameters.put("long_url",CommonUtil.urlEncodeUTF8(nativeUrl));

               String sign2 =PayCommonUtil.createSign("UTF-8", parameters);

               parameters.put("sign", sign2);

               String requestXML = PayCommonUtil.getRequestXml(parameters);

               String result=CommonUtil.httpsRequest(ConfigUtil.SHORT_URL, "POST", requestXML);

               System.out.println(result);

               Map<String, String> map =XMLUtil.doXMLParse(result);

               String returnCode =map.get("return_code");

               String resultCode =map.get("result_code");

               if(returnCode.equalsIgnoreCase("SUCCESS")&&resultCode.equalsIgnoreCase("SUCCESS")){

                     String shortUrl =map.get("short_url");

                     //TODO 拿到shortUrl,写代码生成二维码

                     System.out.println("shortUrl="+shortUrl);

               }

       }

}

微信支付之转换短链接