转:企业微信会话内容存档PHP版SDK编译详细步骤

发布时间:2023-10-31 10:56:11编辑:文明阅读(1324)

    感谢这位老哥编写的SDK:

    https://github.com/pangdahua/php7-wxwork-finance-sdkReadme.md讲太简单,可能会有坑,我这里借花献佛,把详细步骤写一下:

    1、将github上下载源代码包,再从企微官网API下载C版本的最新sdk,一起上传到服务器,

    进入到该目录。

    https://wwcdn.weixin.qq.com/node/wework/images/sdk_20201116.rar

    目录大概是这个样子的,注意红框两个文件就是企微官网c版sdk,必不可少。

    2、找到服务器上 phpize php-config目录$PHP_PATH,根据目录进行编译:

    $PHP_PATH/bin/phpize./configure --with-php-config=$PHP_PATH/php-config --with-wxwork-finance-sdk=./makemake testmake install

    如果make test通过,那就基本没问题了。如果以上有问题,可能原因:

    (1)php版本不对,php8版本arginfo不再是可选。

    (2)php不是编译安装的,导致编译器版本不一致。

    3、php.ini 增加 extension=wxwork_finance_sdk.so

    4、重启php-fpm、Nginx,不然扩展不生效。

    测试一下:

    <?php//phpinfo(); //phpinfo显示扩展已加载,也可能是无效的,必须用extension_loaded测试var_dump(extension_loaded('wxwork_finance_sdk'));

    或者服务器端:

    php -m

    以上配置成功环境参数如下:

    宝塔linux面板,centos 7.9,php 7.4,nginx 1.20 

    注意:如果有报错:

    Error loading shared library ld-linux-x86-64.so.2

    解决方法:

    ld-linux.so是专门负责寻找库文件的库

    需要动态链接libc库(在Linux里是glibc),由于Apline的Linux版本没有libc库,使用musl:musl是一个轻量级的libc库。Apline的Linux版本里自带musl库

    查看系统的LIBRARY_PATH路径

    在对应的LIBRARY_PATH中做ld-linux-x86-64.so.2的软链即可

    ln -s /lib/libc.musl-x86_64.so.1 /usr/local/lib/ld-linux-x86-64.so.2

    拉取企微会话消息demo:

    <?php
    try {
    $obj = new WxworkFinanceSdk("xxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxxxxxxx");
    // 私钥,必须注意对应的公钥的版本,我这里设置了两个
    // 还有文本格式是Unix,在Windows编辑器下需要特别注意
    $privateKey5 = '-----BEGIN RSA PRIVATE KEY-----
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    -----END RSA PRIVATE KEY-----';
    $privateKey6 = '-----BEGIN RSA PRIVATE KEY-----
    
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    -----END RSA PRIVATE KEY-----';
    $chats = json_decode($obj->getChatData(0, 10), true);
    foreach ($chats['chatdata'] as $val) {
        echo '公钥版本号:'.$val['publickey_ver'];
        // @param1为需要解密的数据(base64),@param2为解密后的数据,@param3为私钥
        // @param4为对应的密钥格式(PKCS1开头:begin rsa private key,PKCS8开头:begin private key),都可以,只要@param4选择了正确的私钥读取参数
        openssl_private_decrypt(base64_decode($val['encrypt_random_key']), $decryptRandKey, $privateKey6, OPENSSL_PKCS1_PADDING);
        var_dump($decryptRandKey);
        echo "<hr/>";
        $msg = $obj->decryptData($decryptRandKey, $val['encrypt_chat_msg']);
        echo $msg;
        //$obj->downloadMedia($sdkFileId, "/media.mp4");
    }
    
    }catch(\WxworkFinanceSdkException $e) {
        var_dump($e->getMessage(), $e->getCode());
    }
    /**
    openssl_pkey_get_private这个函数可用来判断私钥是否是可用的,可用,返回资源
    @return bool
    /
    function getPrivateKey($privateKey)
    {
        return openssl_pkey_get_private($privateKey);
    }
    /*
    openssl_pkey_get_public这个函数可用来判断公钥是否是可用的,可用,返回资源
    @return bool
    */
    function getPublicKey($publicKey)
    {
        return openssl_pkey_get_public($publicKey);
    }
    原文链接:https://blog.csdn.net/chaishen10000/article/details/123929950

上一篇:nginx正向代理

下一篇:没有了

    还没有小伙伴评论,快来抢沙发啦~~!