萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 網路程式設計 >> PHP 程式設計

ThinkPHP 整合微信 JSSDK 自定義分享標題、描述、圖片完整步驟

前置條件

  1. 已認證的服務號(訂閱號無 JSSDK 權限)。
  2. 配置 JS 介面安全域名:公眾號後台 → 設定 → 功能設定 → JS 介面安全域名,下載驗證檔放網站根目錄,填寫域名(不帶協議)。

下載並部署 JSSDK

  • 官方下載:https://github.com/wechat-php/wechat-php-sdk 或微信官方提供的 jssdk.php。
  • 放入 ThinkPHP 擴展目錄:ThinkPHP/Library/Vendor/Wechat/JSSDK.php。

配置 AppID / AppSecret

Application/Common/Conf/config.php

return [
    'WECHAT_APPID'  => 'wx_your_appid',
    'WECHAT_SECRET' => 'your_appsecret',
];

通用初始化函式

Application/Common/Common/function.php

function getSignPackage() {
    vendor('Wechat.JSSDK'); // 載入 JSSDK 類
    $jssdk = new \JSSDK(C('WECHAT_APPID'), C('WECHAT_SECRET'));
    return $jssdk->GetSignPackage(); // 回傳含 appId、nonceStr、timestamp、signature 等陣列
}

控制器設定分享內容

public function index() {
    $sign = getSignPackage();
    $this->assign('signPackage', $sign);

    // 自定義分享資料
    $share = [
        'title'   => '自訂分享標題',
        'desc'    => '自訂分享描述內容,吸引使用者點擊',
        'link'    => 'https://yourdomain.com/share/page', // 分享後落地頁
        'imgUrl'  => 'https://yourdomain.com/images/share.jpg', // 300x300 建議
    ];
    $this->assign('shareData', $share);
    $this->display();
}

模板頁引入 JS 並注入配置

<script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
<script>
wx.config({
    debug: false,
    appId: '{$signPackage.appId}',
    timestamp: {$signPackage.timestamp},
    nonceStr: '{$signPackage.nonceStr}',
    signature: '{$signPackage.signature}',
    jsApiList: [
        'onMenuShareTimeline',
        'onMenuShareAppMessage',
        'onMenuShareQQ',
        'onMenuShareWeibo',
        'updateAppMessageShareData',      // 1.4.0+ 新介面
        'updateTimelineShareData'
    ]
});

wx.ready(function() {
    var data = {
        title: '{$shareData.title}',
        desc:  '{$shareData.desc}',
        link:  '{$shareData.link}',
        imgUrl: '{$shareData.imgUrl}',
        success: function() { console.log('分享設定成功'); },
        cancel: function() { console.log('使用者取消分享'); }
    };

    // 新版介面(優先)
    wx.updateAppMessageShareData(data);
    wx.updateTimelineShareData(data);

    // 舊版相容
    wx.onMenuShareAppMessage(data);
    wx.onMenuShareTimeline(data);
});
</script>

效果對比

未自訂自訂後
未修改分享 修改後分享

常見坑點

  • 域名不匹配:安全域名必須與當前頁面域名一致(含子域名需分別填寫)。
  • signature 失效:GetSignPackage() 依賴 access_token 與 jsapi_ticket,需快取 7200 秒,頻繁請求會被限流。
  • HTTPS 必須:微信強制要求分享頁面為 HTTPS。
  • 圖片外鏈:imgUrl 建議使用絕對 HTTPS 路徑,相對路徑在某些客戶端會失效。
copyright © 萬盛學電腦網 all rights reserved