初识微信公众平台开发与PHP

发布时间: 2023-12-18 20:48:58 阅读量: 51 订阅数: 43
PPTX

初识微信小程序.pptx

# 1. 介绍微信公众平台开发 ## 1.1 什么是微信公众平台 微信公众平台是一个基于微信开放平台的服务平台,提供了微信公众号的开发、管理和运营能力。通过微信公众平台,可以搭建自己的公众号,并利用微信的庞大用户基础进行信息传播、业务推广等操作。 ## 1.2 微信公众平台开发的意义和前景 微信公众平台开发具有重要的意义和广阔的前景。随着智能手机的普及和人们对移动互联网的需求增加,微信已经成为人们沟通、社交和获取信息的主要渠道之一。通过开发微信公众平台,可以迅速建立品牌形象、增加用户粘性、提升用户体验等。 ## 1.3 微信公众平台开发的基本原理 微信公众平台开发的基本原理是通过微信提供的开放接口,实现与微信服务器的交互。开发者需要在公众平台上注册账号,并进行身份验证。然后,根据自己的需求,使用微信提供的开发工具和接口,进行消息交互、用户管理、高级功能开发等操作。 在接下来的章节中,我们将详细介绍微信公众平台开发的准备工作、基础知识、消息交互、用户管理、高级功能以及发展趋势等方面内容,帮助读者全面了解和运用微信公众平台开发。 # 2. 准备工作 在进行微信公众平台开发之前,我们需要完成一些准备工作,包括注册微信公众号账号、了解微信公众平台的相关功能与限制,以及配置开发环境,准备开发所需的工具和资源。 ### 2.1 注册微信公众号账号 首先,我们需要在微信公众平台上注册一个微信公众号账号。通过微信公众号,我们可以与用户进行交互,提供各种服务和功能。在注册过程中,我们需要选择公众号的类型,包括订阅号、服务号和企业号。根据自己的需求和定位,选择适合的类型进行注册。 ### 2.2 了解微信公众平台的相关功能与限制 在注册完成之后,我们需要了解微信公众平台的相关功能和限制。微信公众平台提供了丰富的功能和接口,如消息推送、用户管理、模板消息、支付等。同时,微信公众平台也有一些限制,如接口调用次数的限制、素材文件大小的限制等。了解这些限制可以帮助我们更好地规划和设计开发的功能。 ### 2.3 配置开发环境,准备开发所需的工具和资源 在开始具体的开发之前,我们需要配置好开发环境,准备开发所需的工具和资源。根据自己选用的开发语言,可以选择相应的开发工具和框架。在开发过程中,我们还需要一些必要的资源,如微信公众平台的开发文档、SDK等。 完成这些准备工作之后,我们就可以开始微信公众平台的开发了。接下来,我们将进入下一章节,学习微信公众平台开发的基础知识。 # 3. 微信公众平台开发的基础知识 微信公众平台开发涉及一些基础知识,包括接入认证流程、接口配置信息的填写与验证,以及开发者权限与接口调用凭证的管理。在这一部分,我们将深入了解这些基础知识。 #### 3.1 接入微信公众平台的认证流程 在开始使用微信公众平台进行开发之前,首先需要完成微信公众平台的接入认证流程。这个过程包括申请成为开发者、验证消息的确来自微信服务器、设置服务器配置等步骤。只有完成了接入认证,开发者才能与微信公众平台进行消息交互和用户管理等操作。 #### 3.2 接口配置信息的填写与验证 接口配置信息包括URL、Token、EncodingAESKey等内容,开发者需要将这些信息填写到公众平台的开发者中心,并进行验证。验证通过之后,开发者的服务器才能与微信服务器进行通信,接收用户发送的消息并回复。 #### 3.3 开发者权限与接口调用凭证 在进行微信公众平台开发时,开发者需要注意自己的开发者权限,不同的权限对应着不同的接口调用凭证,包括普通接口调用凭证、网页授权接口调用凭证、微信支付接口调用凭证等。了解和管理这些权限和凭证对于开发基于微信公众平台的应用至关重要。 在接下来的章节中,我们将会更加详细地介绍和讲解这些基础知识的具体内容,帮助开发者更好地理解和应用微信公众平台开发。 # 4. 微信公众平台开发中的消息交互 微信公众平台开发中,消息交互是非常重要的部分,包括接收和处理微信服务器推送的消息,以及回复消息的类型和格式等内容。 #### 4.1 接收和处理微信服务器推送的消息 在微信公众平台开发中,我们可以通过接收和处理微信服务器推送的消息来实现与用户的交互。微信服务器会将用户的各类消息(文本、图片、语音、视频等)以POST请求的方式推送到开发者填写的URL上,开发者可以根据消息的类型和内容进行相应的处理。 ```python # 示例代码(Python) from flask import Flask, request app = Flask(__name__) @app.route('/wechat', methods=['GET', 'POST']) def wechat(): if request.method == 'GET': # 微信服务器验证接入 echo_str = request.args.get('echostr', '') return echo_str elif request.method == 'POST': # 处理接收到的消息 data = request.data # 解析消息内容,并根据需要进行回复处理 # (这部分具体内容需要根据开发需求进行实际编码) return "success" if __name__ == '__main__': app.run() ``` 以上代码中,我们使用Flask框架接收来自微信服务器的消息,并根据接收到的消息内容进行相应的处理,可以灵活应对不同类型的消息交互。 #### 4.2 回复消息的类型和格式 在收到用户消息后,我们通常需要根据消息类型和内容进行相应的回复。微信公众平台支持文本、图片、语音、视频、图文等多种类型的消息回复,开发者可以根据需求选择合适的回复类型进行相应的处理。 ```java // 示例代码(Java) public String replyMessage(Map<String, String> receivedMessage) { String msgType = receivedMessage.get("MsgType"); String replyXml = ""; if ("text".equals(msgType)) { // 回复文本消息 replyXml = "<xml><ToUserName><![CDATA[" + receivedMessage.get("FromUserName") + "]]></ToUserName><FromUserName><![CDATA[" + receivedMessage.get("ToUserName") + "]]></FromUserName><CreateTime>" + System.currentTimeMillis() + "</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[你好,这是文本回复]]></Content></xml>"; } else if ("image".equals(msgType)) { // 回复图片消息 // (根据实际情况进行回复图片消息的XML拼装) } // 其他回复类型的处理 return replyXml; } ``` 以上是Java语言的示例代码,根据接收到的消息类型,进行相应类型的消息回复XML拼装,开发者可以根据需求定制不同类型的消息回复内容。 #### 4.3 实例:开发一个简单的自动回复机器人 以下是一个使用Node.js开发的简单自动回复机器人示例代码,可以根据接收到的文本消息内容进行自动回复: ```javascript // 示例代码(Node.js) const express = require('express'); const bodyParser = require('body-parser'); const app = express(); app.use(bodyParser.text({ type: '*/xml' })); app.post('/wechat', (req, res) => { const receivedMessage = req.body; // 解析收到的消息并进行自动回复处理 // (根据实际需求编写自动回复逻辑) const autoReply = "这是一个自动回复"; res.send(autoReply); }); app.listen(80, () => { console.log('Server is running on port 80'); }); ``` 以上代码只是一个简单的示例,实际开发中可以根据业务需求扩展更复杂的自动回复逻辑,比如接入AI语义理解、自然语言处理等技术,实现更智能的消息回复功能。 # 5. 微信公众平台开发中的用户管理 微信公众平台开发涉及到与用户的交互,因此用户管理是其中非常重要的一部分。在这一章节中,我们将重点介绍如何获取用户基本信息的接口、网页授权的流程与实现以及用户标签的管理与运用。 #### 5.1 获取用户基本信息的接口 在微信公众平台开发中,我们经常需要获取用户的基本信息,比如用户的昵称、头像、性别等。为了实现这一功能,我们可以使用微信提供的接口来获取用户基本信息。接下来,我们将详细介绍如何调用这些接口,以及如何解析和处理返回的用户信息数据。 ```python # Python示例代码:使用requests库调用微信接口获取用户基本信息 import requests def get_user_info(access_token, openid): url = f"https://api.weixin.qq.com/cgi-bin/user/info?access_token={access_token}&openid={openid}&lang=zh_CN" response = requests.get(url) user_info = response.json() return user_info # 调用函数获取指定用户的基本信息 access_token = "your_access_token" openid = "user_openid" user_info = get_user_info(access_token, openid) print(user_info) ``` 通过以上代码示例,我们可以看到如何使用Python中的requests库来调用微信接口获取用户的基本信息。当然,在实际开发中,我们还需要处理返回的JSON数据,并根据自身业务需求进行相应的处理和展示。 #### 5.2 网页授权的流程与实现 在某些场景下,我们可能需要用户进行网页授权,并获取其基本信息或特定权限。微信提供了网页授权的功能,允许我们在用户同意的前提下获取其基本信息。接下来,我们将介绍网页授权的流程以及在开发中如何实现网页授权功能。 ```java // Java示例代码:构造网页授权链接并引导用户进行授权 String appId = "your_app_id"; String redirectUrl = "http://your_redirect_url"; String scope = "snsapi_userinfo"; String state = "STATE"; String authorizeUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + appId + "&redirect_uri=" + redirectUrl + "&response_type=code&scope=" + scope + "&state=" + state + "#wechat_redirect"; // 将authorizeUrl返回给前端页面,引导用户点击进行授权 ``` 以上代码示例演示了如何在Java中构造一个网页授权的链接,通过引导用户点击该链接来进行授权。在用户授权通过后,我们可以获取到一个特定的code,再通过该code去获取用户的access_token和openid等信息。 #### 5.3 用户标签的管理与运用 微信公众平台提供了用户标签的管理功能,允许开发者针对用户进行标签的管理和分类,便于针对性地发送消息或进行其他操作。接下来,让我们来看一下如何在微信公众平台开发中进行用户标签的管理与应用。 ```javascript // JavaScript示例代码:创建用户标签并为用户打标签 // 创建标签 let createTagData = { tag: { name: "VIP用户" } }; let createTagUrl = "https://api.weixin.qq.com/cgi-bin/tags/create?access_token=ACCESS_TOKEN"; // 发送HTTP POST请求到createTagUrl,创建名为“VIP用户”的标签 // 为用户打标签 let tagData = { openid_list: ["user_openid1", "user_openid2"], tagid: 100 }; let tagUrl = "https://api.weixin.qq.com/cgi-bin/tags/members/batchtagging?access_token=ACCESS_TOKEN"; // 发送HTTP POST请求到tagUrl,为指定用户打上标签 ``` 在以上示例中,我们展示了如何使用JavaScript发送HTTP请求来创建用户标签和为用户打标签的操作。通过用户标签的管理,开发者可以更加灵活地对用户进行管理和运营,提升用户体验和服务质量。 通过这一章节的学习,我们了解了微信公众平台开发中用户管理的关键内容,包括获取用户基本信息的接口、网页授权的流程与实现以及用户标签的管理与运用。对于微信公众平台的开发者来说,熟练掌握这些内容将有助于更好地与用户进行交互和管理,为用户提供更加个性化和优质的服务。 # 6. 微信公众平台开发中的高级功能与拓展 在微信公众平台开发中,除了基本的消息交互和用户管理功能外,还可以通过一些高级功能和拓展来增加更多的个性化功能。这些功能包括发送模板消息、微信支付的接入与配置以及通过API实现更多个性化功能等。 ### 6.1 发送模板消息 发送模板消息是微信公众平台开发中常用的功能之一,它可以实现向用户发送指定格式的模板消息,并提供一定的互动性。在使用该功能前,需要先到微信公众平台设置好模板消息的模板,并获取对应的模板ID。 以下是使用Python语言发送模板消息的示例代码: ```python import requests # 模板消息的接口地址 url = 'https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN' # 构造模板消息内容 data = { "touser": "openid", "template_id": "template_id", "data": { "name": { "value": "张三", "color": "#173177" }, "amount": { "value": "100元", "color": "#173177" } } } # 发送模板消息 response = requests.post(url, json=data) result = response.json() # 处理发送结果 if result['errcode'] == 0: print("模板消息发送成功") else: print("模板消息发送失败:" + result['errmsg']) ``` 在上述代码中,需要将`ACCESS_TOKEN`替换为有效的访问令牌,`openid`替换为要发送模板消息的用户的openid,`template_id`替换为模板消息的模板ID。通过发送POST请求到模板消息的接口地址,即可发送模板消息给指定用户。 ### 6.2 微信支付的接入与配置 微信支付是微信公众平台开发的另一个重要功能,它可以实现在公众号内进行支付操作。在使用微信支付前,需要先在微信商户平台注册并开通支付功能,获取到商户号和支付密钥。 以下是使用Java语言接入微信支付的示例代码: ```java String unifiedOrderUrl = "https://api.mch.weixin.qq.com/pay/unifiedorder"; // 构造统一下单接口需要的参数 Map<String, String> params = new HashMap<>(); params.put("appid", "公众号appid"); params.put("mch_id", "商户号"); params.put("nonce_str", "随机字符串"); params.put("body", "商品描述"); params.put("out_trade_no", "商户订单号"); params.put("total_fee", "订单总金额"); params.put("spbill_create_ip", "终端IP"); params.put("notify_url", "支付结果回调地址"); params.put("trade_type", "支付类型"); params.put("openid", "用户openid"); // 使用商户密钥生成签名 String sign = generateSign(params, "支付密钥"); params.put("sign", sign); // 发起统一下单请求 String xmlData = mapToXml(params); String response = doPost(unifiedOrderUrl, xmlData); Map<String, String> resultMap = xmlToMap(response); // 处理统一下单结果 if ("SUCCESS".equals(resultMap.get("return_code")) && "SUCCESS".equals(resultMap.get("result_code"))) { String prepayId = resultMap.get("prepay_id"); // 根据prepayId生成订单支付参数 // ... } else { String errMsg = resultMap.get("return_msg"); // 处理下单失败的情况 // ... } ``` 在上述代码中,需要替换相关参数为真实有效的值。通过调用微信接口的统一下单接口,传递相应的参数,并生成正确的签名,即可得到预支付交易会话标识prepay_id,并根据prepay_id生成订单的支付参数。最后,根据支付参数发起支付请求。 ### 6.3 通过API实现更多个性化功能 微信公众平台还提供了一系列API,开发者可以通过调用这些API来实现更多的个性化功能。例如,通过调用用户管理相关的API可以获取用户基本信息、给用户打标签等操作;通过调用素材管理相关的API可以上传、删除素材等操作;通过调用自定义菜单相关的API可以创建、查询、删除自定义菜单等操作。 以下是使用Go语言调用微信API获取用户基本信息的示例代码: ```go package main import ( "encoding/json" "fmt" "io/ioutil" "net/http" ) type UserInfo struct { OpenID string `json:"openid"` Nickname string `json:"nickname"` // 其他用户基本信息字段 } func main() { accessToken := "access_token" openID := "openid" url := fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/user/info?access_token=%s&openid=%s", accessToken, openID) response, err := http.Get(url) if err != nil { fmt.Println("获取用户信息失败:", err) return } defer response.Body.Close() body, err := ioutil.ReadAll(response.Body) if err != nil { fmt.Println("读取响应数据失败:", err) return } var userInfo UserInfo err = json.Unmarshal(body, &userInfo) if err != nil { fmt.Println("解析用户信息失败:", err) return } fmt.Println("用户信息:", userInfo) } ``` 在上述代码中,需要将`access_token`替换为有效的访问令牌,`openid`替换为要获取用户信息的用户的openid。通过调用微信提供的用户信息接口,即可获取指定用户的基本信息。 通过API实现更多个性化功能的方法和步骤与上述示例类似,只需调用对应的接口,传递相应的参数,并根据接口返回的结果进行处理即可。 以上是关于微信公众平台开发中的高级功能与拓展的介绍,通过使用模板消息、微信支付和API等功能,可以使公众号拥有更多个性化和便捷的功能,提升用户体验和运营效果。
corwn 最低0.47元/天 解锁专栏
买1年送3月
点击查看下一篇
profit 百万级 高质量VIP文章无限畅学
profit 千万级 优质资源任意下载
profit C知道 免费提问 ( 生成式Al产品 )

相关推荐

李_涛

知名公司架构师
拥有多年在大型科技公司的工作经验,曾在多个大厂担任技术主管和架构师一职。擅长设计和开发高效稳定的后端系统,熟练掌握多种后端开发语言和框架,包括Java、Python、Spring、Django等。精通关系型数据库和NoSQL数据库的设计和优化,能够有效地处理海量数据和复杂查询。
专栏简介
本专栏名为《PHP微信公众平台开发》,旨在介绍如何使用PHP语言进行微信公众平台开发。专栏文章包括:初识微信公众平台开发与PHP、搭建PHP开发环境与微信公众平台接入、基于PHP的微信公众平台开发简介、使用PHP开发微信公众号基础功能、PHP如何实现微信公众号菜单管理、PHP实现微信公众平台消息自动回复功能、微信公众平台开发中的OAuth2.0授权与PHP实现、PHP实现微信公众号素材管理与上传、微信公众平台开发中的JS-SDK使用与PHP集成、使用PHP实现微信网页授权开发、微信公众平台开发中的模板消息与PHP实现、PHP实现微信公众平台自定义菜单开发技巧、微信公众平台开发中的用户管理与PHP实现、PHP实现微信公众号事件消息处理、微信公众平台开发中的客服消息与PHP实现、PHP实现微信公众平台自定义菜单的动态配置、微信公众平台开发中的数据统计与PHP实现、PHP实现微信公众号消息加解密、微信公众平台开发中的图文消息与PHP实现。专栏内容详细介绍了如何利用PHP语言实现微信公众平台的各种功能开发,包括接入、菜单管理、消息自动回复、授权、素材管理、网页授权、模板消息、用户管理、事件消息处理、客服消息、自定义菜单配置、数据统计、消息加解密以及图文消息等。通过本专栏的学习,读者能够熟练运用PHP进行微信公众平台开发。
最低0.47元/天 解锁专栏
买1年送3月
百万级 高质量VIP文章无限畅学
千万级 优质资源任意下载
C知道 免费提问 ( 生成式Al产品 )

最新推荐

VCS仿真:11个调试技巧助你提升代码质量(专家级指南)

![VCS仿真](https://habrastorage.org/webt/z6/f-/6r/z6f-6rzaupd6oxldcxbx5dkz0ew.png) # 摘要 本文深入探讨了VCS(Verilog Compiled Simulator)仿真及其调试技术的各个方面。从仿真环境的搭建和配置,到仿真调试的理论基础,再到一系列实用的调试技巧,以及高级应用和案例分析,本文旨在为设计验证工程师提供一个全面的VCS仿真调试指南。文章详细阐述了仿真工具的安装、验证环境的设计,以及代码覆盖率分析的重要性。同时,介绍了多种仿真调试技巧,包括波形分析、断点设置、内存和寄存器检查,以及性能优化等。高级应

【安桥功放TX-NR545高级版终极指南】:解锁10个隐藏功能和优化设置

![【安桥功放TX-NR545高级版终极指南】:解锁10个隐藏功能和优化设置](https://mmbiz.qpic.cn/mmbiz_jpg/4ia08X3Qm01a3O5x8KngOsSebMic2cTa7DPVlQWcmHBQ2Sq6X0DqESphhU4jKc8THxSdYqF1uGpXwVIotvPUYOeA/640?wx_fmt=jpeg) # 摘要 本文详细介绍了安桥功放TX-NR545高级版的功能和特性,深入剖析了其隐藏功能,包括高分辨率音频播放、房间校正技术以及多房间音频流传输。通过优化设置实践,包括网络连接优化、声音校准和安全设置,展现了如何提升用户体验和系统性能。同时,

Android应用持久运行秘籍:12个技巧保证应用永不休眠

![Android 让某个应用保持不休眠的方法](https://img-blog.csdnimg.cn/img_convert/cb0a41a856045589919f2b0bf7658ddd.jpeg) # 摘要 本文旨在深入探讨Android应用中后台任务的生命周期、执行优化、持久运行技巧以及安全合规性问题。通过对Service的生命周期管理和使用方法的分析,提出了后台任务执行的高效策略,包括利用AlarmManager、WorkManager和JobScheduler等工具。同时,针对特殊场景,如应用需要在后台持久运行时,本文探讨了前台服务的使用以及电池优化的方法。文章还着重讨论了后

CAP定理在NoSQL中的现实应用:一致性模型的权衡与实施

![CAP定理在NoSQL中的现实应用:一致性模型的权衡与实施](https://ask.qcloudimg.com/http-save/yehe-8223537/c1584ff9b973c95349527a341371ab3f.png) # 摘要 CAP定理和一致性模型是NoSQL数据库设计与应用中的核心概念。本文首先介绍CAP定理的基础知识,包括其定义、起源以及三要素——一致性、可用性和分区容忍性的深入解析。随后,文章探讨了一致性模型的理论分类及其与系统设计的关系,详细分析了不同NoSQL数据库中一致性协议和算法的实例。在实际应用部分,针对键值存储、文档型数据库以及列族数据库中的一致性实

RTL8370MB引脚功能深度剖析:硬件接口和配置要点全掌握

![RTL8370MB引脚功能深度剖析:硬件接口和配置要点全掌握](https://img-blog.csdnimg.cn/20190530142930296.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjcwNzk3NQ==,size_16,color_FFFFFF,t_70) # 摘要 本文全面介绍了RTL8370MB芯片的引脚概览、硬件结构及其功能细节。首先,概述了RTL8370MB的基本引脚布局和硬件

RS422总线技术揭秘:高速与长距离通信的关键参数

![RS422总线技术揭秘:高速与长距离通信的关键参数](https://www.oringnet.com/images/RS-232RS-422RS-485.jpg) # 摘要 RS422总线技术作为工业通信中的重要标准,具有差分信号传输、高抗干扰性及远距离通信能力。本文从RS422的总线概述开始,详细解析了其通信原理,包括工作模式、关键参数以及网络拓扑结构。随后,探讨了RS422硬件连接、接口设计、协议实现以及通信调试技巧,为实践应用提供指导。在行业应用案例分析中,本文进一步阐述了RS422在工业自动化、建筑自动化和航空航天等领域的具体应用。最后,讨论了RS422与现代通信技术的融合,包

【HFSS天线设计速成】:理论到实践,3步完成高效天线设计

![HFSS](https://media.cheggcdn.com/media/895/89517565-1d63-4b54-9d7e-40e5e0827d56/phpcixW7X) # 摘要 本文系统地介绍了天线设计的基础理论、HFSS软件操作技巧、天线设计实践应用以及进阶技术和创新应用。首先,回顾了天线设计的基本概念与理论,为后续的深入探讨奠定基础。随后,详细解析了HFSS软件的操作流程,包括用户界面介绍、几何建模、网格划分、边界条件及激励设置。第三章深入到天线设计的具体实践中,涵盖了结构设计、仿真优化以及性能评估和分析,强调了参数调优在天线设计中的重要性。进阶技术章节探讨了高级天线分

欧姆龙E5CSL_E5CWL温控器原理全揭秘:成为专家的速成课

![欧姆龙E5CSL_E5CWL温控器原理全揭秘:成为专家的速成课](http://www.lk186.com/picomrontwo/E5L_Series.jpg) # 摘要 本文全面介绍了欧姆龙E5CSL_E5CWL温控器,涵盖其基本原理、操作、高级功能以及实践应用案例。首先概述了温控器的工作原理和硬件组成,包括温度测量、控制输出与反馈机制,以及传感器和执行器的类型。接着,深入分析了温控器的高级功能,如PID控制、自适应控制、模糊控制和通讯功能。文中还提供了工业应用和高精度控制的实践案例,并探讨了温控器在节能与优化控制策略中的应用。最后,展望了智能化、可持续发展理念下的温控器未来趋势,以

风险管理驱动的SIL确定方法论:权威专家解读

![风险管理驱动的SIL确定方法论:权威专家解读](https://www.sensonic.com/assets/images/blog/sil-levels-4.png) # 摘要 风险管理在确保工业系统安全中扮演关键角色,而安全完整性等级(SIL)的确定是实现风险管理的重要组成部分。本文综述了SIL的定义、确定的理论基础、方法论框架,以及SIL确定流程的详解。通过分析不同行业案例,展示了SIL评估在工业自动化和过程工业中的具体应用,同时强调了风险评估流程、缓解措施、SIL分配和验证的重要性。此外,本文探讨了SIL确定过程中的挑战与机遇,包括技术发展、法规要求以及技术创新的影响,并对SI