主頁 > 後端開發 > PHP微信開發包,微信開發SDK

PHP微信開發包,微信開發SDK

2020-09-16 12:19:22 後端開發

本人自己用PHP原生開發的微信SDK包,有興趣得可以了解一下,可以通過composer安裝,或者碼云下載,感興趣的可以加Q群:735713840 相互討論

專案地址:https://gitee.com/Taurus12C/wechat

 

使用詳情見 index.php 檔案內注釋

開發中使用本人申請的微信測驗號,如需自己體驗可前往 微信測驗號申請地址 申請

專案還在開發階段,如遇問題請聯系我.

目錄結構

|—— cache                       檔案快取驅動存盤空間
|—— lib                         包主檔案夾
|   |—— cache                   快取驅動
|   |—— core                    核心檔案
|   |—— http                    介面請求驅動
|   |—— Cache.php               快取類檔案
|   |—— Config.php              配置獲取類
|   |—— Http.php                介面請求類
|   |—— Wechat.php              主類
|—— vendor                      composer依賴
|—— config.php                  組態檔
|—— index.php                   方法示例描述

安裝方法 composer require taurus12c/wechat

使用方法

1、開始

配置好包根目錄的config.php檔案,匯入Wechat類,完成微信開發

use wechat\lib\Wechat;


實體化物件

$wechat = new Wechat();


2、鑒權

介面配置服務器驗證方法,一般只需用到一次

$wechat->checkSignature();


獲取微信全域access_token,公眾號給類介面呼叫時所用的access_token

$global_access_token = $wechat->getGlobalAccessToken();


微信網頁授權獲取用戶資訊

$userInfo = $wechat->getUserInfo();


單獨獲取用戶openid,此獲取不跳轉用戶授權界面,靜默授權

$openid = $wechat->getOpenId();


2、自定義選單

//設定公眾號選單,方法形參$data強制陣列,回傳bool型,選單設定方式請遵從微信自定義選單規則

$data = https://www.cnblogs.com/Taurus12C/p/[
     "button"=>[
         [
             "name"         =>"按鈕一",
             "type"         =>"view",
             "url"          =>"http://www.baidu.com",
         ],
         [
             "name"         =>"按鈕二",
             "sub_button"   =>[
                 [
                     "name"         =>"二級選單1",
                     "type"         =>"view",
                     "url"          =>"http://www.baidu.com"
                 ]
             ]
         ]
     ]
];

$setMenu = $wechat->menu->setMenu($data);

獲取當前自定義選單設定

$getMenu = $wechat->menu->getMenuInfo();


洗掉自定義選單

$delMenu = $wechat->menu->delMenu();


設定個性化選單,datadata選單設定樣式,matchrule個性化選單匹配規則,回傳bool型,詳情微信手冊

$data = https://www.cnblogs.com/Taurus12C/p/[
    "button"=>[
        [
            "name"         =>"按鈕一",
            "type"         =>"view",
            "url"          =>"http://www.baidu.com",
        ],
        [
            "name"         =>"按鈕二",
            "sub_button"   =>[
                [
                    "name"         =>"二級選單1",
                    "type"         =>"view",
                    "url"          =>"http://www.baidu.com"
                ]
            ]
        ]
    ],
];
$matchrule = [
    "matchrule"=>[
        "tag_id"=> "2",
        "sex"=> "1",
        "country"=> "中國",
        "province"=> "廣東",
        "city"=> "廣州",
        "client_platform_type"=> "2",
        "language"=> "zh_CN"
    ]
];

$setMenuConditional = $wechat->menu->setMenuConditional($data,$matchrule);

獲取個性化選單設定

$getMenuConditionalInfo = $wechat->getMenuConditionalInfo();


3、訊息管理

接收用戶發來的訊息,回傳陣列型別資料,資料內容見微信開發檔案

$msg = $wechat->getMsg();


被動回復文本訊息,引數1:接收方openid 引數2:開發者openid 引數3:發送內容,以下使用接收來的資料

$sendText = $wechat->sendText($msg['FromUserName'],$msg['ToUserName'],'您發送的內容是:'.$msg['Content']);


被動回復圖片訊息,引數1:接收方openid 引數2:開發者openid 引數3:上傳的圖片素材id

$sendImg = $wechat->sendImg($toUserName,$fromUserName,$mediaId);


被動回復語音訊息,引數1:接收方openid 引數2:開發者openid 引數3:上傳的語音素材id

$sendVoice = $wechat->sendVoice($toUserName,$fromUserName,$mediaId);


被動回復視頻訊息,引數1:接收方openid 引數2:開發者openid 引數3:陣列(格式見下方參考)

$content = [
        'title'     => '', //標題
        'desc'      => '', //描述
        'mediaId'   => '', //上傳的素材ID
    ];

$sendVideo = $wechat->sendVoice($toUserName,$fromUserName,$content);

被動回復音樂訊息,引數1:接收方openid 引數2:開發者openid 引數3:陣列(格式見下方參考)

$content = [
        'title'         => '', //標題
        'desc'          => '', //描述
        'url'           => '', //音樂鏈接
        'Hurl'          => '', //高品質音樂鏈接,WIFI狀態下默認播放這個
        'thumbMediaId'  => '', //訊息縮略圖,上傳的圖片素材ID
    ];

$sendMusic = $wechat->sendVoice($toUserName,$fromUserName,$content);

被動回復圖文訊息,引數1:接收方openid 引數2:開發者openid 引數3:陣列(格式見下方參考)

$articles = [
        '第一篇' => [
            'title'     => '', //標題
            'desc'      => '', //描述
            'picurl'    => '', //縮略圖url
            'url'       => '', //點擊跳轉頁面url
        ],
        '第二篇' => [],
        '第三篇' => [],
        ... //一次性最多發送8篇,數量限制詳情見微信開發檔案
    ];

$sendNews = $wechat->sendNews($toUserName,$fromUserName,$articles);

4、素材管理

素材上傳提示
圖片(image): 2M,支持PNG\JPEG\JPG\GIF格式
語音(voice):2M,播放長度不超過60s,支持AMR\MP3格式
視頻(video):10MB,支持MP4格式
縮略圖(thumb):64KB,支持JPG格式

上傳圖片臨時素材檔案,引數1:檔案路徑,回傳json格式字串資料內容見微信開發手冊

$tempMedia = $wechat->media->addImgTempMedia($filepath);


上傳語音臨時素材檔案,引數1:檔案路徑,回傳json格式字串資料內容見微信開發手冊

$tempMedia = $wechat->media->addVoiceTempMedia($filepath);


上傳視頻臨時素材檔案,引數1:檔案路徑,回傳json格式字串資料內容見微信開發手冊

$tempMedia = $wechat->media->addVideoTempMedia($filepath);


上傳縮略圖臨時素材檔案,引數1:檔案路徑,回傳json格式字串資料內容見微信開發手冊

$tempMedia = $wechat->media->addThumbTempMedia($filepath);


獲取臨時素材,引數1:素材media_id 圖片素材回傳圖片檔案流字串 視頻素材回傳json格式字串包含視頻url地址,以下示例將獲取的圖片素材檔案流保存為本地檔案

$getTempMedia = $wechat->media->getTempMedia($media_id);

$file = fopen('test.jpg','w+');
fwrite($file,$getTempMedia);
fclose($file);

獲取jssdk上傳的高清語音

$getJssdkMedia = $wechat->media->getJssdkMedia($media_id)


上傳圖片永久素材

$addImgMaterial = $wechat->media->addImgMaterial($file);


上傳語音永久素材

$addVoiceMaterial = $wechat->media->addVoiceMaterial($file);


上傳永久視頻素材,引數1:檔案路徑 引數2:視頻標題 引數3:視頻描述

$addVideoMaterial = $wechat->media->addVideoMaterial($file,$title,$introduction);


上傳永久縮略圖素材

$addThumbMaterial = $wechat->media->addThumbMaterial($file);


上傳圖文永久素材,引數1:圖文內容陣列,回傳素材media_id

$articles = [
    [
        "title"             =>      'TITLE',                //標題
        "thumb_media_id"    =>      'THUMB_MEDIA_ID',       //圖文訊息的封面圖片素材id(必須是永久mediaID)
        "author"            =>      'AUTHOR',               //作者
        "digest"            =>      'DIGEST',               //圖文訊息的摘要,僅有單圖文訊息才有摘要,多圖文此處為空,如果本欄位為沒有填寫,則默認抓取正文前64個字,
        "show_cover_pic"    =>      'SHOW_COVER_PIC(0 / 1)',//是否顯示封面,0為false,即不顯示,1為true,即顯示
        "content"           =>      'CONTENT',              //圖文訊息的具體內容,支持HTML標簽,必須少于2萬字符,小于1M,且此處會去除JS,涉及圖片url必須來源 "上傳圖文訊息內的圖片獲取URL"介面獲取,外部圖片url將被過濾,
        "content_source_url"=>      'CONTENT_SOURCE_URL',   //圖文訊息的原文地址,即點擊“閱讀原文”后的URL
        "need_open_comment" =>      '1',                    //Uint32 是否打開評論,0不打開,1打開
        "only_fans_can_comment"=>   '1'                     //Uint32 是否粉絲才可評論,0所有人可評論,1粉絲才可評論
    ],
    [
        //...
    ],
    //最多八篇
];

$addArticleMaterial = $wechat->media->addArticleMaterial($articles);

上傳圖文訊息內的圖片,回傳圖片url(圖片僅支持jpg/png格式,大小必須在1MB以下)

$addArticleImgMaterial = $wechat->media->addArticleImgMaterial($file);


獲取永久素材,引數1:素材media_ia,回傳 圖文素材視頻素材為json資料,其他則為檔案二進制檔案內容

$getMaterial = $wechat->media->getMaterial($meida_id);


獲取素材總數,回傳json資料型別

$getMaterialCount = $wechat->media->getMaterialCount();


獲取素材串列,引數1:查詢素材型別圖片(image)、視頻(video)、語音(voice)、圖文(news),引數2:從全部素材的該偏移位置開始回傳,0表示從第一個素材回傳,默認0,引數3:回傳素材的數量,取值在1到20之間,默認20,回傳json資料

$getMaterialList = $wechat->media->getMaterialList($type, $offset, $count);


洗掉永久素材

$delMaterial = $wechat->media->delMaterial($media_id);

5、用戶管理

創建用戶標簽,引數1:標簽名稱

$tag = $wechat->user->createTag($name);


獲取已創建的標簽

$tagList = $wechat->user->tagList();


修改標簽名稱,引數1:要修改的標簽ID,引數2:修改后的標簽名稱

$upTag = $wechat->user->upTag($id,$name);


洗掉標簽,引數1:標簽ID

$delTag = $wechat->user->delTag($id);


獲取標簽下粉絲串列,引數1:標簽ID,引數2:第一個拉取的OPENID,不填默認從頭開始拉取

$tagUserList = $wechat->user->tagUserList($id,$offset);


批量為用戶打標簽,引數1:openid陣列,引數2:標簽ID

$openid_list=[
    //粉絲串列
    "ocYxcuAEy30bX0NXmGn4ypqx3tI0",
    "ocYxcuBt0mRugKZ7tGAHPnUaOW7Y"
];
$tagUser = $wechat->user->tagUser($openid_list,$id);

批量為用戶取消標簽,引數1:openid陣列,引數2:標簽ID

$openid_list=[
    //粉絲串列
    "ocYxcuAEy30bX0NXmGn4ypqx3tI0",
    "ocYxcuBt0mRugKZ7tGAHPnUaOW7Y"
];
$tagUserDel = $wechat->user->tagUserDel($openid_list,$id);

獲取用戶身上的標簽串列,引數1:openid

$userTag = $wechat->user->userTag($openid);


指定用戶設定備注名,引數1:openid,引數2:備注名

$userRemark = $wechat->user->userRemark($openid,$remark);


獲取用戶基本資訊(UnionID機制),引數1:openid,引數2:國家地區語言版本,zh_CN 簡體,zh_TW 繁體,en 英語(不填默認簡中)

$userBasicInfo = $wechat->user->userBasicInfo($openid,$language);


獲取公眾號的關注者串列,引數1:第一個拉取的OPENID,不填默認從頭開始拉取

$getUserList = $wechat->user->getUserList($next_openid);


獲取公眾號的黑名單串列

$getBlackList = $wechat->user->getBlackList();


拉黑用戶,引數1:需要拉入黑名單的用戶的openid,一次拉黑最多允許20個

$openid_list=[
    //粉絲串列
    "ocYxcuAEy30bX0NXmGn4ypqx3tI0",
    "ocYxcuBt0mRugKZ7tGAHPnUaOW7Y"
];
$setBlackList = $wechat->user->setBlackList($openid_list);

取消拉黑用戶,引數1:需要拉入黑名單的用戶的openid,一次拉黑最多允許20個

$openid_list=[
    //粉絲串列
    "ocYxcuAEy30bX0NXmGn4ypqx3tI0",
    "ocYxcuBt0mRugKZ7tGAHPnUaOW7Y"
];
$delBlackList = $wechat->user->delBlackList($openid_list);

 

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/56979.html

標籤:PHP

上一篇:php開發中emoji表情的問題3種方法輕松處理【轉】

下一篇:PHP 學習筆記

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more