|
|
|
|
<?php
|
|
|
|
|
// +----------------------------------------------------------------------
|
|
|
|
|
// | Description: CRM工作台
|
|
|
|
|
// +----------------------------------------------------------------------
|
|
|
|
|
// | Author: Michael_xu | gengxiaoxu@5kcrm.com
|
|
|
|
|
// +----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
namespace app\crm\controller;
|
|
|
|
|
|
|
|
|
|
use app\common\wework\api\Api;
|
|
|
|
|
use app\common\wework\callback\WXBizMsgCrypt;
|
|
|
|
|
use think\Controller;
|
|
|
|
|
use think\Log;
|
|
|
|
|
use think\Request;
|
|
|
|
|
|
|
|
|
|
class Callback extends Controller
|
|
|
|
|
{
|
|
|
|
|
public function index()
|
|
|
|
|
{
|
|
|
|
|
$wxcpt = new WXBizMsgCrypt(config('wework.token'), config('wework.encodingAesKey'), config('wework.corpId'));
|
|
|
|
|
if (Request::instance()->isPost()) {
|
|
|
|
|
$sReqMsgSig = Request::instance()->get('msg_signature');
|
|
|
|
|
$sReqTimeStamp = Request::instance()->get('timestamp');
|
|
|
|
|
$sReqNonce = Request::instance()->get('nonce');
|
|
|
|
|
|
|
|
|
|
$sReqData =Request::instance()->getContent();
|
|
|
|
|
$sMsg = ""; // 解析之后的明文
|
|
|
|
|
|
|
|
|
|
$errCode = $wxcpt->DecryptMsg($sReqMsgSig, $sReqTimeStamp, $sReqNonce, $sReqData, $sMsg);
|
|
|
|
|
if ($errCode == 0) {
|
|
|
|
|
// 解密成功,sMsg即为xml格式的明文
|
|
|
|
|
$simpleXMLElement = simplexml_load_string($sMsg,'SimpleXMLElement', LIBXML_NOCDATA);
|
|
|
|
|
switch ($simpleXMLElement->Event->__toString()) {
|
|
|
|
|
case 'change_external_contact':
|
|
|
|
|
$api = new Api(config('wework.corpId'), config('wework.corpSecret'));
|
|
|
|
|
$contactInfo = $api->contactInfo('wm9nLQEAAA6lshIXRN5xdd1iZjqevSyA');
|
|
|
|
|
foreach ($contactInfo['follow_user'] as $contactUserInfo) {
|
|
|
|
|
if ($contactUserInfo['userid'] == $simpleXMLElement->UserID->__toString()) {
|
|
|
|
|
$customerInfo = model('Customer')->where('name', $contactUserInfo['remark_corp_name'])->find();
|
|
|
|
|
if ($customerInfo) {
|
|
|
|
|
$contactsInfo = model('Contacts')->where([
|
|
|
|
|
'name' => $contactUserInfo['remark'],
|
|
|
|
|
'customer_id' => $customerInfo['customer_id']
|
|
|
|
|
])->find();
|
|
|
|
|
if (!$contactsInfo) {
|
|
|
|
|
$param = [
|
|
|
|
|
'business_id' => null,
|
|
|
|
|
'create_user_id' => 1,
|
|
|
|
|
'owner_user_id' => 1,
|
|
|
|
|
'customer_id' => $customerInfo['customer_id'],
|
|
|
|
|
'name' => $contactUserInfo['remark'],
|
|
|
|
|
'mobile' => $contactUserInfo['remark_mobiles'][0],
|
|
|
|
|
];
|
|
|
|
|
if (model('Contacts')->createData($param)) {
|
|
|
|
|
Log::record('联系人添加成功');
|
|
|
|
|
} else {
|
|
|
|
|
Log::record('联系人添加失败');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
print("ERR: " . $errCode . "\n\n");
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
$sVerifyMsgSig = Request::instance()->get('msg_signature');
|
|
|
|
|
$sVerifyTimeStamp = Request::instance()->get('timestamp');
|
|
|
|
|
$sVerifyNonce = Request::instance()->get('nonce');
|
|
|
|
|
$sVerifyEchoStr = Request::instance()->get('echostr');
|
|
|
|
|
// 需要返回的明文
|
|
|
|
|
$sEchoStr = "";
|
|
|
|
|
|
|
|
|
|
$errCode = $wxcpt->VerifyURL($sVerifyMsgSig, $sVerifyTimeStamp, $sVerifyNonce, $sVerifyEchoStr, $sEchoStr);
|
|
|
|
|
if ($errCode == 0) {
|
|
|
|
|
echo ($sEchoStr);
|
|
|
|
|
// 验证URL成功,将sEchoStr返回
|
|
|
|
|
// HttpUtils.SetResponce($sEchoStr);
|
|
|
|
|
} else {
|
|
|
|
|
print("ERR: " . $errCode . "\n\n");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|