微信根据 accessToken 获取 JsApiTicket

private static final Logger LOGGER = Logger.getLogger(XXX.class);

/**
     * 获取jsapi_ticket
     *
     * @return
     */
    public static Map<String, String> getJsApiTicket(String accessToken) {
        Map<String, String> data = new HashMap();
        String url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + accessToken + "&type=jsapi";
        LOGGER.info("request user info from url: {" + url + "}");
        JsonObject jsApiTicket = null;
        try {
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpGet httpGet = new HttpGet(url);
            HttpResponse httpResponse = httpClient.execute(httpGet);
            HttpEntity httpEntity = httpResponse.getEntity();
            String response = EntityUtils.toString(httpEntity, "utf-8");
            Gson token_gson = new Gson();
            jsApiTicket = token_gson.fromJson(response, JsonObject.class);
            LOGGER.info("get accessTokenInfo success. [result={" + jsApiTicket + "}]");
            data.put("ticket", jsApiTicket.get("ticket").toString().replaceAll("\"", ""));
            data.put("expires_in", jsApiTicket.get("expires_in").toString().replaceAll("\"", ""));
        } catch (Exception ex) {
            LOGGER.error("fail to request wechat user info. [error={" + ex + "}]");
        }
        return data;
    }

 

在PHP中实现微信自定义分享功能,通常需要以下几个步骤: 1. **获取微信JS接口的签名**: - 首先需要在服务器端获取`access_token`,然后使用`access_token`获取`jsapi_ticket`。 - 接着根据微信的规则生成签名(signature)。 2. **前端调用微信JS SDK**: - 在前端页面中引入微信JS SDK,并配置`wx.config`。 - 设置分享的内容,如标题、描述、图片链接和链接。 以下是一个简单的示例: ### 后端PHP代码(获取签名) ```php <?php function getSignPackage() { $appId = 'YOUR_APP_ID'; $appSecret = 'YOUR_APP_SECRET'; // 获取access_token $accessToken = file_get_contents("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appId}&secret={$appSecret}"); $accessToken = json_decode($accessToken, true); // 获取jsapi_ticket $jsapiTicket = file_get_contents("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={$accessToken['access_token']}&type=jsapi"); $jsapiTicket = json_decode($jsapiTicket, true); // 生成随机字符串 $nonceStr = generateNonceStr(); // 当前时间戳 $timestamp = time(); // URL $url = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; // 签名 $string = "jsapi_ticket={$jsapiTicket['ticket']}&noncestr={$nonceStr}&timestamp={$timestamp}&url={$url}"; $signature = sha1($string); $signPackage = array( "appId" => $appId, "nonceStr" => $nonceStr, "timestamp" => $timestamp, "url" => $url, "signature" => $signature, "rawString" => $string ); return $signPackage; } function generateNonceStr($length = 16) { $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; $str = ""; for ($i = 0; $i < $length; $i++) { $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1); } return $str; } // 输出签名包 $signPackage = getSignPackage(); ?> ``` ### 前端HTML代码(调用微信JS SDK) ```html <!DOCTYPE html> <html> <head> <title>微信自定义分享</title> <script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script> </head> <body> <script> wx.config({ debug: false, appId: '<?php echo $signPackage["appId"]; ?>', timestamp: <?php echo $signPackage["timestamp"]; ?>, nonceStr: '<?php echo $signPackage["nonceStr"]; ?>', signature: '<?php echo $signPackage["signature"]; ?>', jsApiList: ['updateAppMessageShareData', 'updateTimelineShareData'] }); wx.ready(function () { wx.updateAppMessageShareData({ title: '自定义标题', desc: '自定义描述', link: 'http://yourdomain.com', imgUrl: 'http://yourdomain.com/image.jpg', success: function () { // 设置成功 } }); wx.updateTimelineShareData({ title: '自定义标题', link: 'http://yourdomain.com', imgUrl: 'http://yourdomain.com/image.jpg', success: function () { // 设置成功 } }); }); </script> </body> </html> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值