PHP实现企业微信 会话存档功能

想要实现企微会话存档的功能,但企微官方提供的SDK,只有C++和JAVA的版本。要使用PHP实现该功能,就要借助民间大佬的智慧。

PHP版本的SDK

  • github上的大佬 @majiameng, 实现了php会话存档SDK,下面是github地址:

https://github.com/majiameng/wework-finance-sdk-php

一、使用要求:

  • 需要用到php扩展 ext-wxwork_finance_sdk 或者 ext-ffi,二选一即可。

我这里使用的是 wxwork_finance_sdk扩展。

1.1 安装php7-wxwork-finance-sdk

扩展地址:https://github.com/pangdahua/php7-wxwork-finance-sdk

C版本SDK地址:https://wwcdn.weixin.qq.com/node/wework/images/sdk_20200401.zip

bash 复制代码
#  1.将php的SDK下载到服务器
 git clone https://github.com/pangdahua/php7-wxwork-finance-sdk.git
 # 2.下载C版本的SDK
 wget https://wwcdn.weixin.qq.com/node/wework/images/sdk_20200401.zip
 # 3.使用unzip解压zip包
 unzip sdk_20200401.zip
 # 4.进入 php7-wxwork-finance-sdk目录
 cd php7-wxwork-finance-sdk
 # 5.使用phpize进行扩展编译
 phpize # 宝塔的路径 /www/server/php/74/bin/phpize
 # 6.编译配置
 # /www/server/php/74/bin/php-config 为当前使用的php
 # /www/sdk_20200401/C_sdk 为上面下载的C版本的sdk路径
 ./configure --with-php-config=/www/server/php/74/bin/php-config --with-wxwork-finance-sdk=/www/sdk_20200401/C_sdk
 # 执行编译安装
 make && make install
  • 最终生成扩展文件路径
bash 复制代码
/www/server/php/74/lib/php/extensions/no-debug-non-zts-20190902/wxwork_finance_sdk.so

1.2 将扩展加入php配置中

bash 复制代码
[wxwork_finance_sdk]
extension=/www/server/php/74/lib/php/extensions/no-debug-non-zts-20190902/wxwork_finance_sdk.so
  • 保留后,重启php。

二、在代码中使用,使用框架:tp6

2.1 composer安装sdk代码

bash 复制代码
composer require tinymeng/wework-finance-sdk

2.2 在代码中实现

php 复制代码
<?php
namespace app\controller;

use app\BaseController;
use think\Request;

use tinymeng\WeWorkFinanceSDK\Exception\FinanceSDKException;
use tinymeng\WeWorkFinanceSDK\WxFinanceSDK;

class Session extends BaseController
{
    /**
     * 获取聊天对话记录(会话存档)
     * @param Request $request
     * @return void
     */
    public function history(Request $request)
    {
        // 企业配置
        $corpConfig = [
            'corpid'       => '企业ID',
            'secret'       => '应用密钥',
            'private_keys' => [
                1 => '-----BEGIN PRIVATE KEY-----
        -----END PRIVATE KEY-----',
            ],
            /**
             * includePath(使用php-ffi扩展时)
             * 可选 :默认使用组件内SDK(默认SDK只支持Liunx),如果想使用其他版本SDK,请填写对应SDK路径
             * 官网下载SDK https://developer.work.weixin.qq.com/document/path/91774
             */
            'includePath' => '',
        ];

        // 包配置
        $srcConfig = [
            'default' => 'php-ext',// 两种方式的切换: php-ext 或 php-ffi
        ];

        $seq = $request->param('seq', 1);
        $limit = $request->param('limit', 10);

        try {
            $wxFinanceSDK = WxFinanceSDK::init($corpConfig, $srcConfig);
            // 获取会话记录数据(解密)
            $list = $wxFinanceSDK->getDecryptChatData($seq, $limit);

            foreach ($list as $key => $item) {
                if ($wxFinanceSDK->isMedia($item['msgtype'])) {
                    // 下载媒体资源
                    $list[$key]['media_path'] = $wxFinanceSDK->getDownloadMediaData($item[$item['msgtype']], $item['msgtype']);
                }
            }
            var_dump($list);

        } catch (FinanceSDKException $exception) {
            echo $exception->getMessage();
            exit();
        }
    }


}
相关推荐
dapeng28709 小时前
分布式系统容错设计
开发语言·c++·算法
qq_417695059 小时前
代码热修复技术
开发语言·c++·算法
badhope14 小时前
Mobile-Skills:移动端技能可视化的创新实践
开发语言·人工智能·git·智能手机·github
码云数智-园园15 小时前
微服务架构下的分布式事务:在一致性与可用性之间寻找平衡
开发语言
C++ 老炮儿的技术栈15 小时前
volatile使用场景
linux·服务器·c语言·开发语言·c++
hz_zhangrl15 小时前
CCF-GESP 等级考试 2026年3月认证C++一级真题解析
开发语言·c++·gesp·gesp2026年3月·gespc++一级
Liu6288816 小时前
C++中的工厂模式高级应用
开发语言·c++·算法
IT猿手16 小时前
基于控制障碍函数的多无人机编队动态避障控制方法研究,MATLAB代码
开发语言·matlab·无人机·openclaw·多无人机动态避障路径规划·无人机编队
AI科技星16 小时前
全尺度角速度统一:基于 v ≡ c 的纯推导与验证
c语言·开发语言·人工智能·opencv·算法·机器学习·数据挖掘
sunwenjian88616 小时前
Java进阶——IO 流
java·开发语言·python