宿迁腾云网络网站建设公司

腾云网络 七年经验专注网站建设
  • 首页
  • 服务项目
    • 网站建设
    • 微信小程序
    • SEO优化
    • APP开发
  • 建站费用
  • 成功案例
    • 网站建设案例
    • 小程序案例
    • APP开发案例
    • SEO优化案例
  • 行业动态
    • 网站建设
    • SEO优化
    • 技术日志
  • 联系我们
    • 关于我们
首页 > 行业动态 > 技术日志 > 微信公众平台开发教程 php微信公众号开发,开发什么?备忘。。微信公众平台开发 php

微信公众平台开发教程 php微信公众号开发,开发什么?备忘。。微信公众平台开发 php

2022-06-22

这太令人沮丧,太难以理解。也太坑了。

以下是这几天微信公众号相关工作的总结。不全面,只是作为初学者的记录,仅供备忘。

一、微信公众号开发,开发什么?

公众号不同于小程序。小程序类似于手机APP,自主开发,微信只提供入口;而公众号基本在微信的框架内。微信公众号本质上是用户的一个联系人,但只是一个特殊的联系人。通过微信提供的公众号管理后台,无需任何编程,即可快速搭建像样的公众号,菜单、机器人客服、文章更新一应俱全。

但是,如果你想要更强的功能,你需要开发。比如机器人客服。通过公众号管理后台,可以定义一些自动回复语句,但毕竟还不够智能。这时候,我们可以在互联网上搭建一个服务器,提供相应的服务。当然,这需要准备好 URL 和域名。

第二,菜单。点击公众号的菜单项后,可以回复一些消息,跳转到小程序,或者打开网页。如果您打开网页,如果是未经验证的公众号,则只能打开公众号中的素材,或当前公众号已发表的文章或图片、视频等;和经过验证的公众号,可以直接打开任意网址。这些网页通常是部署在互联网上的所谓微信网页。他们使用微信JS-SDK,上面有各种微信元素,比如扫描、分享到朋友圈等等。当然,这部分需要开发。

还有向追随者发送消息。我认为这是微信公众号最大的卖点。比如我关注了某个公众号,通过这个公众号的菜单打开相关小程序做事,当事情进展的时候,系统可以通过这个公众号给我发消息提醒我当前工作进展。我认为这是公众号开发中最有价值的工作。

当然,也有可以自动在公众号上发表文章的程序。不过这种事情也可以在公众号管理后台手动完成,无非就是动手。

二、发展铺垫

在开发之前,有必要了解相关规范。建议同时阅读开发文档的开头:微信公众平台开发概述

1、公众号分类

衣着三色,食分五等。所谓微信公众号分为订阅号和服务号。个人只能申请订阅号,企业可以申请订阅号和服务号。然后公众号分为认证和未认证。公众号的类型,是否经过认证,决定了是否可以调用很多微信服务。没有认证,基本没什么玩的。而且很遗憾,个人申请的订阅号根本无法通过微信认证,直接挡住了门。

如何开发它?微信还非常“贴心”地提供了测试号机制。不用申请公众号,我们可以先申请一个测试号,用这个号来测试微信服务接口。测试号所有微信服务接口均可访问。当然是鹅!和微信网页一样,需要在手机上运行才能看到效果,如果使用测试号,有些东西是无法渲染的。比如所谓的微信开放标签(即微信定义的标签,类似于HTML)。

订阅账户和服务账户有不同的侧重点。据我了解,订阅号侧重于发布文章,而服务号侧重于发送有针对性的通知。一般来说,服务帐户比订阅帐户强大得多。

从表面上看,订阅号每天可以发送1条消息,而服务号每个月只能发送4条消息,订阅号更强。问题是,群发消息有什么用?当我们在网上做事时,我们想要的是对我来说是新闻。只有服务帐户可以发送此有针对性的通知消息。

在文档中,这种消息称为模板消息。为什么叫模板消息?这是因为这种消息是结合模板生成的。就像我们的手机短信一样。做过手机短信开发的都知道,手机短信是不能随便发的。因为众所周知的原因,必须有所谓的模版,就是怕非法和无耻的内容,就是短信的格式是固定的,而且很多字也是固定的,我们只需要填写每次我们发送一些内容。此模板必须事先创建并获得电信运营商的批准。微信消息也使用模板。调用发送接口时,需要将模板ID作为参数传入。

目前小程序的模板消息功能已经废弃,取而代之的是所谓的“统一服务消息”,实际上是通过服务号发送的。也就是说,小程序要给用户发送通知,就必须对应一个服务号。

但是世界上还有一种叫做订阅消息的东西。公众号叫订阅通知,小程序叫订阅消息。有两种类型:一次性和长期。订阅消息需要用户主动订阅。例如,使用麦当劳小程序点餐时,每次付款后,都会询问您是否接受取餐通知。长期只对部分民生和医院公众账号开放。这是在申请公共帐户时给出的。不要冒险,低估微信折腾人的能力。否则,发送时对方永远收不到,也可能没有错误信息;

模板消息和订阅消息有什么区别?订阅新闻不仅仅是要求用户手动订阅,也没什么。问题是,这必须用手机来完成。如果我通过 PC 做事并想在手机上接收提醒怎么办?订阅新闻就完成了。

2、公众号调试工具

它是微信开发者工具。请注意,它是开发人员工具,而不是开发工具。这个工具,对于小程序来说,确实是一个开发工具;对于公众号,它只是一个调试工具,无法通过它输入任何代码;它只是微信网页的调试工具。此时它只是一个微信浏览器。方法是在微信开发者工具顶部输入微信网页地址进行浏览调试微信公众平台开发教程 php,类似普通浏览器按F12。

3、查看微信网页运行结果

公众号可以通过微信客户端看到。这里所说的查看结果是指查看微信网页的运行结果。虽然有“网页”二字,但这不是一个普通的网页。如果用普通浏览器访问,虽然没有报错,但是看不到效果。它应该通过微信浏览器或微信开发者工具运行。需要注意的是,手机上没有微信浏览器这个app,是微信暗示的。如何召唤它?你可以把微信网页的地址发给微信上的朋友,比如“文件传输助手”,然后在聊天记录里点击这个网址,就会用微信浏览器打开。绝对给力的是微信浏览器,QQ浏览器不好用。

4、开发文档

基于微信进行二次开发,上网查资料基本没用。最好老老实实阅读官方微信开发文档。

公众号开发文档在公众号管理后台-设置与开发-开发者工具-开发文档中打开。

微信有两个平台,小程序叫“微信开发开放平台”,公众号叫“微信开发公共平台”。

5、一些术语

1)管理员和操作员

在开发过程中,不可避免地会访问微信公众号管理后台修改或设置一些设置,但要更改设置,必须扫描二维码进行身份认证。这很尴尬。申请公众号的人是管理员,但不一定参与开发。提醒大老板扫描二维码会很不方便网站制作,甚至是不可能的。您可以将开发人员添加到操作员列表并自行扫描代码。运营商分为长期和短期两种。他们应该是具有足够权限的长期经营者。

可以在微信公众号管理后台-设置与开发-人员设置中进行设置。

2)IP 白名单

在开发过程中,我们需要访问微信服务器,比如获取。发出请求的 IP 需要在白名单中。这个IP是指互联网IP。如果我们在腾云网内部开发,那么这个IP就是腾云网的IP,用于上网。问题是微信公众平台开发教程 php网站优化,这个IP经常变化。我不知道这样做的好方法,所以基本上每天更改一次白名单。

IP白名单是供我们在本地调试微信开发者工具的。不需要手机操作。

3)开发者微信ID

公众号管理后台-设置与开发-网页开发者工具,添加我们开发者的微信账号。这是用来开发微信网页的。因为微信开发者工具需要微信登录。

4)JS接口安全域名

公众号管理后台-设置与开发-公众号设置-功能设置。

微信网页开发也需要它。我们的页面需要放在这个域名下,才能使用微信的js-sdk。

填写这个域名的时候,需要下载一个txt文件放到域名下,微信可以验证域名的真实性后再保存。但是填完之后,我们在本地开发的时候,可以修改host文件,把本地ip映射到域名。毕竟是前端的东西。js-sdk本身需要微信浏览器的支持,它无法判断请求来自哪个IP,我们传给它什么都会相信。

5)微信打开标签

类似于HTML,微信独有的标签。喜欢

跳转小程序:<wx-open-launch-weapp>
跳转App:<wx-open-launch-app>
服务号订阅通知:<wx-open-subscribe>
音频播放:<wx-open-audio>

三、微信网页开发

1、概览

微信网页实际上只是网页,只不过它引用了微信提供的JS库,可能会使用微信独有的所谓开放标签,类似于html。而这个微信网页似乎是在一个普通的浏览器上运行的。虽然没有报错,但是好像没什么效果。它只能在微信浏览器或微信开发者工具上运行。

下面是一个微信网页(boot下,合并)

2、验证

微信网页在运行时,必须先通过微信验证,然后才能正常使用微信的各种功能。验证过程是,

1)微信服务器获取并访问

2)访问微信服务器获取

3)使用,随机字符串、时间戳、当前页面地址依次组成字符串,然后对字符串进行sha hash运算得到摘要

4)使用摘要访问微信服务器获取签名

5)注册、时间戳、随机字符串、签名、本页要使用的微信功能、微信打开标签到微信

在上面的例子中,

    wx.config({
        debug: true,
        appId: /*[[${wc.appId}]]*/'',
        timestamp: /*[[${wc.timestamp}]]*/'',//注意是秒,不是毫秒
        nonceStr: /*[[${wc.nonceStr}]]*/'',//随机串
        signature: /*[[${wc.signature}]]*/'',//关键所在
        jsApiList: ['chooseImage','scanQRCode','updateAppMessageShareData','updateTimelineShareData'],//需要使用的微信js-sdk函数列表
        openTagList: ['wx-open-subscribe']//开放标签列表
    });

要得到这个 json 对象并不容易。可以在微信公众号管理后台获取,每个公众号都有唯一的;时间戳也很容易获得;随机字符串由自己决定,比较容易;最麻烦的是签名,我调试了一天左右,总的意思是非法签名。

获取此 json 对象的 java 代码:

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import redis.clients.jedis.Jedis;
import javax.annotation.PostConstruct;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Date;
import java.util.Random;
import java.util.concurrent.locks.ReentrantLock;
@Service
public class WxServiceImpl implements WxService {
    @Override
    public WxConfig getWxConfig(String url) {//url是微信网页地址
        WxConfig wc = new WxConfig();//这个是自定义的对象,不必深究
        wc.setAppId(APPID);

微信公众平台开发教程 php_微信公众平台开发 php_易伟微信公众平台搭建与开发揭秘^^^微信公众平台服务号开发

wc.setNonceStr(getNonceStr());//随机串 wc.setTimestamp((long) (new Date()).getTime() / 1000);//时间戳 wc.setSignature(getSignature(wc.getNonceStr(), wc.getTimestamp(), url));//签名 return wc; } @PostConstruct void init() { /* 由于从微信服务器获取token和ticket的函数有调用次数限制(每天<=2000),因此用redis将它们缓存起来 */ this.jedis = new Jedis(redis的IP, redis端口号); } private String getSignature(String nonceStr, long timestamp, String url) {//获取签名 String signature = null; String ticket = getTicket(); if (ticket != null) { String string1 = String.format("jsapi_ticket=%s&noncestr=%s×tamp=%d&url=%s", ticket, nonceStr, timestamp, url); signature = getSha1(string1); } return signature; } //redis对象 private Jedis jedis; //除了redis缓存,也用静态变量保存一份。不过,应用程序重启它们就消失了,并且不会自动过期 //而从微信获取到的token和ticket有效期是7200秒 private String _ticket = null; private String _token = null; //锁。为避免并发,使用锁机制,不要大家都去获取token和ticket private ReentrantLock lockTok = new ReentrantLock(); private ReentrantLock lockTik = new ReentrantLock(); private String getTicket() { String ticket = null; String key = "ticket"; ticket = getKey(key, this._ticket); if (ticket == null) { //锁定。 lockTik.lock(); ticket = getKey(key, this._ticket);//再努力一把 if (ticket == null) { String token = getToken(); if (token != null) { ticket = callGet(String.format("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=%s&type=jsapi", token), "ticket"); if (ticket != null) { this._ticket = ticket; setKey(key, ticket); } } } //解锁 lockTik.unlock(); } return ticket; } private String getToken() { String token = null; String key = "token"; token = getKey(key, this._token); if (token == null) { lockTok.lock(); token = getKey(key, this._token); if (token == null) { token = callGet(String.format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s",APPID,AppSecret), "access_token"); if (token != null) { this._token = token; setKey(key, token); } } lockTok.unlock(); } return token; } final static int EXPIRTED = 7200; private String getKey(String key, String v) { String value = null; try { value = jedis.get(key); } catch (Exception ex) { value = v;//如果无法从redis中读取则将候补变量值返回。但变量值可能有过期的问题 System.err.println(ex.getMessage()); } return value; } private void setKey(String key, String value) { try { jedis.set(key, value); jedis.expire(key, EXPIRTED); } catch (Exception ex) { System.err.println(ex.getMessage()); } } final static int NONCESTR = 16;//随机串的长度为16。这个数值是自己定的 private String getNonceStr() {// 生成随机字符串noncestr String chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; StringBuffer noncestr = new StringBuffer(); int limit = chars.length() - 1; for (int i = 0; i < NONCESTR; i++) { Random r = new Random(); int j = r.nextInt(limit); noncestr.append(chars.substring(j, j + 1)); } return noncestr.toString(); } private static String getSha1(String string1) { MessageDigest sha = null; // 此处的sha代表sha1 try { sha = MessageDigest.getInstance("SHA"); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } byte[] md5Bytes = new byte[0]; try { md5Bytes = sha.digest(string1.getBytes("UTF-8")); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } StringBuffer hexValue = new StringBuffer(); for (int i = 0; i < md5Bytes.length; i++) { int val = ((int) md5Bytes[i]) & 0xff; if (val < 16) { hexValue.append("0"); } hexValue.append(Integer.toHexString(val)); } return hexValue.toString(); } public static String callGet(String api, String key) {//get的方式访问微信api String re = null; System.out.println(String.format("正在获取 %s : %s", key, api)); try { URL url = new URL(api); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.connect(); BufferedReader br = new BufferedReader( new InputStreamReader(connection.getInputStream(), "UTF-8")); String line; StringBuilder sb = new StringBuilder(); while ((line = br.readLine()) != null) { sb.append(line); } br.close(); connection.disconnect(); JSONObject json = JSON.parseObject(sb.toString()); if (json.containsKey(key)) { re = json.getString(key); } System.out.println(re); } catch (Exception ex) { ex.printStackTrace(); System.out.println(String.format("访问接口%s失败", api)); } return re; } }

3、调试

在微信开发者工具上,输入微信网页地址,运行,得到很多提示。对于微信公众号来说,微信开发者工具是一个调试工具,一个开启调试模式的浏览器。但一开始,它总是失败。现在,我在示例中声明需要使用以下微信功能:

    wx.config({
        debug: true,
        appId: /*[[${wc.appId}]]*/'',
        timestamp: /*[[${wc.timestamp}]]*/'',//注意是秒,不是毫秒
        nonceStr: /*[[${wc.nonceStr}]]*/'',//随机串
        signature: /*[[${wc.signature}]]*/'',//关键所在
        jsApiList: ['chooseImage','scanQRCode','updateAppMessageShareData','updateTimelineShareData'],//需要使用的微信js-sdk函数列表
        openTagList: ['wx-open-subscribe']//开放标签列表
    });

结果,从返回的信息来看,我可以访问的函数是0。除此之外,到处都是“失败,是”之类的提示。

开启微信开发者工具的调试模式:在微信开发者工具中,顶部菜单“微信开发者工具”-调试-“调试微信开发者工具”-,看这个?_r=…的返回信息,结果是 {: , : ” ”}!

签名算法有问题吗?我用的是微信公众号管理后台提供的微信JS接口签名验证工具,结果完全一致,所以不存在算法错误的问题。

4、填坑

后来发现是网址有问题。在生成签名的过程中,需要传递当前微信网页的URL参与构造字符串,然后对字符串进行哈希处理,传递给微信服务器获取签名。问题是,这个URL应该怎么写?由于我的微信页面名为.html,所以我在访问的时候一般在浏览器上输入地址是这样的: 所以我也用这个地址参与了签名的构建,结果总是提示签名是无效的。后来我把地址全写了:,一下子就OK了​​。

但是官方开发文档里写的是什么呢?

不认真检查问题会害死人。

Tag: 微信开发者工具 微信公众号 微信小程序开发文档
网站制作公众号

宿迁腾云网络网站建设公司 | 网站开发 | 网站制作 | 网站优化

咨询电话:13160355545

上一篇

返回栏目

下一篇

免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。

热推

  • php文件图片上传代码如何判断该网站使用的是编辑器呢?(图)php单个上传图片代码
  • php开源网店系统SHOP++是基于JAVA技术的网店系统,支持SQL、等多种数据库php 开源网店系统
  • 最喜爱的15套PHP资源库,你知道几个?
  • php代码执行漏洞PHP语言开发博客平台版本号升级至4.7.1修复62个漏洞 php远程代码执行漏洞
  • php b2b网站系统1月份最新的免费建站代码网站介绍,99%都是免费的php b2b系统
  • 智能机器人软件开发需要学习以下多方面的多方面知识:工业机器人
  • php开源b2c商城系统 商城系统开发需要做哪些准备工作?前期准备少php开源商城框架
  • xampp查看php版本 IIS配置的PHP运行环境
  • 2016年注册会计师考试真题及答案解析(二)
  • linux 查看php版本信息谷歌桌面全球10种语言同步推出MacOSX和操作系统linux怎么查看php版本

相关

微信商城php开发教程开发微信小程序购物商城的话需要以下内容

微信商城php开发教程开发微信小程序购物商城的话需要以下内容

php微信开发的面试题 今天在一QQ群里看到一道面试题,感觉

php 微信公众平台开发教程爬取流程安装自动模块,通过中的驱

微信公众号 php框架微信如何制作打卡小程序?|?计划周期、

微信公众号开发 phpPHP微信公众号开发的两种模式,感兴趣

微信公众号开发 phpPHP微信公众号开发的两种模式,感兴趣

微信公众号开发 php微信公众号开发,开发什么?备忘。。ph

微信公众号开发 php微信公众号开发,开发什么?备忘。。ph

微信公众平台开发教程 php一门怎么与公众号的对接,实现一些

php微信企业号开发微信“企业号”催生了如火如荼的移动互联网

php微信企业号开发微信“企业号”催生了如火如荼的移动互联网

php微信企业号开发 腾讯终于送上了,微信企业号正式亮相,B

php微信企业号开发微信“企业号”催生了如火如荼的移动互联网

标签

seo(1060) 市场营销(611) 网站制作(494) 搜索引擎(480) 网站建设(468) 网站(403) PHP(334) 编程语言(327) 建站(257) 关键词排名优化(241) 网站建设公司(228) 优化(175) 软件(161) seo排名(161) 域名(135) 外链(132) 科技(126) 域名服务器(108) 搜索引擎优化(102) 网站排名优化(102) 网站关键词(99) 网站优化(96) 时政(90) 网站排名(87) 电子商务(79) 搜索引擎收录(76) 开发框架(72) 网站设计(71) 排名优化(69) 移动互联网(68) 开发(66) 引擎(62) 网站服务器(61) 网站建设方案(60) 前端开发(56) 开放源代码(55) 框架(55) 网站分析(54) 网站权重(52) 百度优化(52) seo培训(51) 关键(50) 源码(50) 流量(49) 网站建设知识(49) 百度(48) 网站源码(46) 网页设计(44) 广州seo(44) 谷歌(44)
宿迁腾云网络网站建设公司
网站建设
  • 私人定制
  • 标准模板建站
  • 经济模板建站
精品模板

宿迁腾云网络网站建设公司

联系电话:13160355545

公司地址:江苏省宿迁市丽景湾华庭北门都市花园公寓9楼907

联系邮箱:admin@tyweb.net

全国分站
  • 北京
  • 广东
  • 东莞 广州 中山 深圳 惠州 江门 珠海 汕头 佛山 湛江 河源 肇庆 潮州 清远 韶关 揭阳 阳江 云浮 茂名 梅州 汕尾
  • 山东
  • 济南 青岛 临沂 济宁 菏泽 烟台 泰安 淄博 潍坊 日照 威海 滨州 东营 聊城 德州 莱芜 枣庄
  • 江苏
  • 苏州 徐州 盐城 无锡 南京 南通 连云港 常州 扬州 镇江 淮安 泰州 宿迁
  • 河南
  • 郑州 南阳 新乡 安阳 洛阳 信阳 平顶山 周口 商丘 开封 焦作 驻马店 濮阳 三门峡 漯河 许昌 鹤壁 济源
  • 上海
  • 河北
  • 石家庄 唐山 保定 邯郸 邢台 沧州 秦皇岛 张家口 衡水 廊坊 承德
  • 浙江
  • 温州 宁波 杭州 台州 嘉兴 金华 湖州 绍兴 舟山 丽水 衢州
  • 陕西
  • 西安 咸阳 宝鸡 汉中 渭南 安康 榆林 商洛 延安 铜川
  • 湖南
  • 长沙 邵阳 常德 衡阳 株洲 湘潭 永州 岳阳 怀化 郴州 娄底 益阳 张家界 湘西
  • 重庆
  • 福建
  • 漳州 泉州 厦门 福州 莆田 宁德 三明 南平 龙岩
  • 天津
  • 云南
  • 昆明 红河 大理 文山 德宏 曲靖 昭通 楚雄 保山 玉溪 丽江 临沧 思茅 西双版纳 怒江 迪庆
  • 四川
  • 成都 绵阳 广元 达州 南充 德阳 广安 阿坝 巴中 遂宁 内江 凉山 攀枝花 乐山 自贡 泸州 雅安 宜宾 资阳 眉山 甘孜
  • 广西
  • 贵港 玉林 北海 南宁 柳州 桂林 梧州 钦州 来宾 河池 百色 贺州 崇左 防城港
  • 安徽
  • 芜湖 合肥 六安 宿州 阜阳 安庆 马鞍山 蚌埠 淮北 淮南 宣城 黄山 铜陵 亳州 池州 巢湖 滁州
  • 海南
  • 三亚 海口 琼海 文昌 东方
  • 江西
  • 南昌 赣州 上饶 吉安 九江 新余 抚州 宜春 景德镇 萍乡 鹰潭
  • 湖北
  • 武汉 宜昌 襄樊 荆州 恩施 孝感 黄冈 十堰 咸宁 黄石 仙桃 随州 天门 荆门 潜江 鄂州 神农架
  • 山西
  • 太原 大同 运城 长治 晋城 忻州 临汾 吕梁 晋中 阳泉 朔州
  • 辽宁
  • 大连 沈阳 丹东 辽阳 葫芦岛 锦州 朝阳 营口 鞍山 抚顺 阜新 本溪 盘锦 铁岭
  • 黑龙江
  • 齐齐哈尔 哈尔滨 大庆 佳木斯 双鸭山 牡丹江 鸡西 黑河 绥化 鹤岗 伊春 大兴安岭 七台河
  • 内蒙古
  • 赤峰 包头 通辽 呼和浩特 乌海 鄂尔多斯 呼伦贝尔
  • 贵州
  • 贵阳 黔东 黔南 遵义 黔西 毕节 铜仁 安顺 六盘水
  • 甘肃
  • 兰州 天水 庆阳 武威 酒泉 张掖 陇南 白银 定西 平凉 嘉峪关 临夏 金昌 甘南
  • 青海
  • 西宁 海西 海东 海北 果洛 玉树 黄南
  • 新疆
  • 乌鲁木齐 伊犁 昌吉 石河子 哈密
  • 西藏
  • 拉萨 山南 林芝 日喀则
  • 吉林
  • 长春 白山 白城 延边 松原 辽源 通化 四平
  • 宁夏
  • 银川 吴忠 中卫 石嘴山 固原
SiteMap
网站地图
TAG标签
Copyright © 2017-2022 TYWEB.NET 宿迁腾云网络科技有限公司 ALL RIGHTS RESERVED.   苏ICP备17033535号-1

热门搜索

网站建设 宿迁 网站 公司 模版 教育 学校 源码 模板 响应式 科技-电子-通信-数码 营销型 项王故里网站建设案例 汽车 网站架构 教育类网站 交通 交通设备制作 百度 中文编程
  • 客服

    在线客服

  • 电话

    13160355545

  • 微信

精品模板
建站费用
成功案例
联系我们