四时宝库

程序员的知识宝库

ThinkPHP 6 + UniApp环境下接入DeepSeek到微信生态的完整解决方案

以下是在 后端ThinkPHP 6 + 前端UniApp环境下接入DeepSeek到微信生态的完整解决方案,包含详细步骤和代码示例:

一、准备工作

1. 微信生态配置

小程序

- 设置服务器域名:登录微信公众平台 -> 开发管理 -> 服务器域名

request合法域名:https://yourdomain.com

socket合法域名:wss://yourdomain.com

公众号

- 服务器配置: URL:
https://yourdomain.com/wechat

Token:自定义令牌 EncodingAESKey:随机生成

2. ThinkPHP 6项目初始化

composer create-project topthink/think tp6_deepseek 
cd tp6_deepseek 
composer require topthink/think-multi-app # 多应用支持

二、后端开发(ThinkPHP 6)

1. 目录结构

app
├── deepseek
│ ├── controller
│ │ └── Index.php # DeepSeek接口控制器
│ └── service
│ └── DeepseekService.php # 服务层
└── wechat
└── controller
└── Index.php # 公众号消息处理

2. 核心代码

(1) DeepSeek服务类 //
app/deepseek/service/DeepseekService.php

 'deepseek-chat',
            'messages' => [['role' => 'user', 'content' => $prompt]],
            'max_tokens' => 1000
            ];

            $ch = curl_init();
            curl_setopt_array($ch, [
            CURLOPT_URL => $this->apiUrl,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_HTTPHEADER => [
            'Content-Type: application/json',
            'Authorization: Bearer ' . $this->apiKey
            ],
            CURLOPT_POST => true,
            CURLOPT_POSTFIELDS => json_encode($data)
            ]);

            $response = curl_exec($ch);
            curl_close($ch);

            return json_decode($response, true);
      }
}

(2) 控制器实现 //
app/deepseek/controller/Index.php

chat($input['prompt'] ?? '');

        return json([
        'code' => isset($result['choices']) ? 200 : 500,
        'data' => $result['choices'][0]['message']['content'] ?? '服务繁忙'
        ]);
    }
}

(3) 公众号消息处理 //
app/wechat/controller/Index.php

request->get('echostr')) {
            return $this->request->get('echostr');
            }

            // 处理消息
            $xml = $this->request->getContent();
            $data = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA);

            $service = new DeepseekService();
            $response = $service->chat((string)$data->Content);

            return $this->response->xml([
            'ToUserName' => $data->FromUserName,
            'FromUserName' => $data->ToUserName,
            'CreateTime' => time(),
            'MsgType' => 'text',
            'Content' => $response['choices'][0]['message']['content'] ?? '请稍后再试'
            ]);
      }
}

3. 路由配置

// config/route.php
use think\facade\Route;

// DeepSeek接口
Route::post('deepseek/chat', 'deepseek.Index/chat');

// 公众号消息入口
Route::any('wechat', 'wechat.Index/index');

三、前端开发(UniApp)

1. 页面实现