发布时间: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正向代理
下一篇:没有了
7
4
4
2
2