精华内容
下载资源
问答
  • 支付宝,微信合并二维码 近期项目要优化支付页面,希望将两个二维码合成一个。研究整理一下: 首先做这件事,要明白原理哦: 网站的支付功能,一般都是生成一个( 后台大哥与支付宝或微信接口授权好了的url ),将...

    支付宝,微信合并二维码

    近期项目要优化支付页面,希望将两个二维码合成一个。研究整理一下:

    首先做这件事,要明白原理哦:

    网站的支付功能,一般都是生成一个( 后台大哥与支付宝或微信接口授权好了的url ),将url变成二维码展示

    当微信或者支付宝扫描二维码,会自动解析成url,此url就是跳转到支付页面了!!!就会弹出多少钱了,让你确认付款了

     

    OK ,明白了一个二维码的原理,再来看看合并的不同:

    后台大哥怎么知道你是微信还是支付宝扫的码呢? 我擦,敢犟嘴吗,那你离挨骂不远了。

    工作原理:

    总共有3接口: 微信,支付宝, 你网站合并的假接口

    你扫的是网站的假接口,拿到用户是啥登录的

    使用request获取名为User-Agent的请求头,

    支付宝的请求头:ucbrowser/1.0.0.100 u3/0.8.0 mobile safari/534.20 alipaydefined(nt:wifi,ws:360|604|3.0) aliapp(ap/9.9.7.112401) alipayclient/9.9.7.112401 language/zh-hans usestatusbar/true

    微信的请求头: mqqbrowser/6.8 tbs/036887 safari/537.26 micromessenger/6.3.31.940 nettype/wifi language/zh_cn

    然后根据是微信的还是支付宝的,去重定向请求哪个支付接口

    展开全文
  • 分享一篇支付宝、微信、QQ钱包收款二维码合并教程,适合做微商及开小店的朋友掌握。收款码合并可以将微信收款码、支付宝收款码以及QQ钱包收款码合并为一个二维码,这样对方支付时只要扫一个二维码即可,方便实用! ...

    分享一篇支付宝、微信、QQ钱包收款二维码合并教程,适合做微商及开小店的朋友掌握。收款码合并可以将微信收款码、支付宝收款码以及QQ钱包收款码合并为一个二维码,这样对方支付时只要扫一个二维码即可,方便实用!

    shoukuanma

    在线制作多合一收款二维码

    应该有很多网站都可以在线制作多合一收款二维码,其中芝麻二维码就是其中一个。

    芝麻二维码最近推出的“收款码合并”功能就是将微信收款码和支付宝收款码以及QQ钱包收款码合并为一个二维码!听上去感觉很神奇,快来试试吧!

    1、首先你要分别获取微信、支付宝、QQ收款码的二维码。

    • 如何获取微信收款码?
      打开微信,点击右上角的【+】号,再点击收付款,然后点击【我要收款】,最后保存收款码或截图即可。
    • 如何获取支付宝收款码?
      打开支付宝,在其首页点击一下【收钱】,点击右上角的【...】最后保存二维码或截图即可。
    • 如何获取QQ收款码?
      打开手机QQ,在其主界面点击右上角的【+】号,再点击付款,然后点击右上角的【...】选择【我要收款】,最后保存二维码或截屏到相册即可。

    2、打开有收款码合并功能的网站,注册并登陆。

    https://www.hotapp.cn/shouqian

    3、点击免费合并收款码,然后按提示上传或者扫码你刚才获取的微信、支付宝、QQ收款码的二维码

    4、最后点免费合并即可。

    shoukuan

    上图就是在芝麻收款中合并的收款码,大家可以扫一下试试(如果还打个款就再好不过了^_^)

    上面的教程是针对普通用户,如果你是网站站长或者博客博主,想在自己网站上放个万能收款码,那么你可以往下看!

    网站站长制作多合一收款二维码

    其实无论是支付宝还是微信的收款码,其本质上是一个包含了收款链接的二维码。所以我们的思路是:检测如果是支付宝浏览页面,就给出支付宝的付款链接、如果是微信,就给出微信链接……

    那么问题来了,如何进行判定呢?很好办,根据 UA 就能进行判定了!

    判断UA的代码如下:

    if(navigator.userAgent.match(/Alipay/i)) {

    // 支付宝

    } else if(navigator.userAgent.match(/MicroMessenger\//i)) {

    // 微信

    } else if(navigator.userAgent.match(/QQ\//i)) {

    // QQ

    } else {

    // 其它

    }

    理论上来说,进行判定后直接给跳转到对应的收款页面就行了,然而实际测试发现在QQ和微信中并不能直接调用付款功能,只有支付宝能直接进行付款。

    这里就只能用一个折中的办法:如果是QQ或微信扫的码,就再放出一个二维码的界面,让用户通过长按识别二维码进入支付流程。

    最终完成的效果依然和上面的芝麻收款大同小异。

    文末提供了收款码合并的源码下载(单文件纯 html 实现,需上传至网站空间使用)

    注:请将代码中第 12、15、18行中的收款链接改为自己的(不改我也不介意)。

    请用专门的 Html 编辑器(如 notepad++)进行编辑,切勿直接用记事本编辑,否则可能出现中文乱码!

    附:收款链接获取方法(图示)

    以下以微信为例,QQ、支付宝的获取方法类似。

    打开微信,点击右上角>收付款

    收款码合并

    找到“二维码收款”

    收款码合并

    将得到的收款二维码保存(截图)

    用二维码识别工具(如 https://cli.im/deqr/) 上传二维码图片并获取到二维码中的收款链接。

    收款码合并

    将获取到的收款链接粘贴并替换源码中的链接即可。

    收款码合并

    收到网友反馈,说源码中被加料,仔细检查了一下,已经移除被加料内容,请下载过的朋友重新下载吧,有问题也请反馈。

    支付宝微信QQ钱包收款码合并教程及源码下载

    展开全文
  • 这题有点琐碎吧,记一下,多少学点东西 一 菜狗最近学会了拼图,这是他刚拼好的,可是却搞错了一块(ps:双图层) ...在线ps网站: 米斯达 把导出来的两张图片分别放入stegSolve中 用这个软件的合并功能 接着用美图秀秀(狗

    这题有点琐碎吧,记一下,多少学点东西

    菜狗最近学会了拼图,这是他刚拼好的,可是却搞错了一块(ps:双图层)

    下载文件,就一个flag.txt,把压缩包扔进winhex

    在这里插入图片描述在这里插入图片描述参考, 因为这里是文件头不是子块,把7A改成74

    打开后是在这里插入图片描述在这里插入图片描述图片还是空白,把图片丢进winhex
    在这里插入图片描述
    发现是gif文件, 改变图片后缀;

    打开后发现还是空白图片;因为题目提示了拼图,双图层 就需要用ps分离图层了

    在线ps网站: 米斯达

    在这里插入图片描述在这里插入图片描述把导出来的两张图片分别放入stegSolve中

    在这里插入图片描述
    在这里插入图片描述

    用这个软件的合并功能

    在这里插入图片描述

    接着用美图秀秀(狗头)把定位点拼接上

    在这里插入图片描述在这里插入图片描述在这里插入图片描述

    flag{yanji4n_bu_we1shi}

    展开全文
  • 微信扫描二维码,关注我的公众号 生活需要惊喜和新鲜 人有时候因为很执着一件事 而忘记了自己人生的意义 开发环境MacOS(High Sierra 10.13.5) 需要的信息和信息源: HTTP概述 HTTP 互联网是如何工作的 ...
    • ArthurSlog

    • SLog-36

    • Year·1

    • Guangzhou·China

    • Aug 12th 2018

    微信扫描二维码,关注我的公众号

    生活需要惊喜和新鲜 人有时候因为很执着一件事 而忘记了自己人生的意义


    开发环境MacOS(High Sierra 10.13.5)

    需要的信息和信息源:

    开始编码

    • 我们开始向单页应用前进,意思就是把多个网页集成到一个网页,把所有的业务都集成到这个页面上来

    • 首先,调整一下服务端的 js 文件

    server/index.js

    const serve = require('koa-static');
    const Koa = require('koa');
    const app = new Koa();
    const Router = require('koa-router');
    const router = new Router();
    
    // $ GET /package.json
    app.use(serve('../client'));
    
    //
    router.get('/signin', async (ctx) => {
    
        var mysql = require('mysql');
        var connection = mysql.createConnection({
            host: 'localhost',
            user: 'root',
            password: '88888888',
            database: 'my_db'
        });
    
    
        connection.connect(function (err) {
            if (err) {
                console.error('error connecting: ' + err.stack);
                return;
            }
            console.log('connected as id ' + connection.threadId);
        });
    
    
        var response = {
            "name": ctx.query.name,
            "password": ctx.query.password
        };
    
        var addSql = 'SELECT * FROM ArthurSlogAccount WHERE AccountName=?';
        var addSqlParams = [response.name];
    
        var datas = await new Promise((resolve, reject) => {
    
            connection.query(addSql, addSqlParams, function (err, result) {
                if (err) {
                    reject(err);
                    console.log('[SELECT ERROR] - ', err.message);
                    return;
                }
                if (result[0].Password == response.password) {
                    resolve(result[0]);
                    console.log('Welcome~ SingIn Successul ^_^' + '\\' + 'Level: ' + result[0].Level + ' Houses: ' + result[0].Houses);
                }
                if (result[0].Password != response.password) {
                    reject('SingIn Fault ^_^!');
                    console.log('SingIn Fault ^_^!');
                }
            });
        });
    
        if (datas) {
            ctx.body = datas;
        }
    
        connection.end();
    });
    
    //
    router.get('/signup', async (ctx) => {
    
        var mysql = require('mysql');
        var connection = mysql.createConnection({
            host: 'localhost',
            user: 'root',
            password: '88888888',
            database: 'my_db'
        });
    
    
        connection.connect(function (err) {
            if (err) {
                console.error('error connecting: ' + err.stack);
                return;
            }
            console.log('connected as id ' + connection.threadId);
        });
    
        var response = {
            "name": ctx.query.name,
            "password": ctx.query.password,
            "firstname": ctx.query.firstname,
            "lastname": ctx.query.lastname,
            "birthday": ctx.query.birthday,
            "sex": ctx.query.sex,
            "age": ctx.query.age,
            "wechart": ctx.query.wechart,
            "qq": ctx.query.qq,
            "email": ctx.query.email,
            "contury": ctx.query.contury,
            "address": ctx.query.address,
            "phone": ctx.query.phone,
            "websize": ctx.query.websize,
            "github": ctx.query.github,
            "bio": ctx.query.bio
        };
    
        var addSql = 'INSERT INTO ArthurSlogAccount(AccountName, Password, Firstname, Lastname, Birthday, Sex, Age, Wechart, Qq, Email, Contury, Address, Phone, Websize, Github, Bio) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)';
        var addSqlParams = [response.name, response.password, response.firstname, response.lastname, response.birthday, response.sex, response.age, response.wechart, response.qq, response.email, response.contury, response.address, response.phone, response.websize, response.github, response.bio];
    
    
    
        ctx.body = await new Promise((resolve, reject) => {
    
            connection.query(addSql, addSqlParams, function (err, result) {
                if (err) {
                    reject(err);
                    console.log('[INSERT ERROR] - ', err.message);
                    return;
                }
                resolve('Singup Successful!');
            });
        });
    
        connection.end();
    });
    
    app.use(router.routes());
    
    app.listen(3000);
    
    console.log('listening on port 3000');
    复制代码
    • 其中的
    if(datas){
        ctx.redirect('account.html');
    }
    复制代码
    • 调整为
    if (datas) {
        ctx.body = datas;
    }
    复制代码
    • ok,服务端的代码调整完毕

    • 现在启动静态服务器

    node index.js

    • 接着继续,我们把 signin.html 和 signup.html 合并在一个页面里 app.html

    app.html

    <!DOCTYPE html>
    <html>
    
    <head>
        <meta charset="utf-8">
        <link rel="stylesheet" type="text/css" href="./css/style.css">
        <!-- 开发环境版本,包含了有帮助的命令行警告 -->
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
        <title>signin_ArthurSlog</title>
    </head>
    
    <body>
    
        <div id="signup-container">
    
            <div>This is signin's page by ArthurSlog</div>
            <p>Singin</p>
            <form id="form1" v-on:submit.prevent="signin">
                <br>
                <div>
                    Account: {{ name_signin }}
                    <br>
                    <input type="text" v-model="name_signin" placeholder="username">
                </div>
                <br>
    
                <br>
                <div>
                    Password: {{ password_signin }}
                    <br>
                    <input type="text" v-model="password_signin" placeholder="password">
                </div>
                <br>
                <input type="submit" value="登陆">
            </form>
            <br>
            <a href="./index.html">Return index's page</a>
    
            <div>This is signup's page by ArthurSlog</div>
            <p>Singup</p>
    
            <form id="form2" v-on:submit.prevent="addUser">
    
                <br>
                <div>
                    Account: {{ name }}
                    <br>
                    <input type="text" v-model="name" placeholder="username">
                </div>
                <br>
    
                <br>
                <div>
                    Password: {{ password }}
                    <br>
                    <input type="text" v-model="password" placeholder="password">
                </div>
                <br>
    
                <br>
                <div>
                    Again Password: {{ repassword }}
                    <br>
                    <input type="text" v-model="repassword" placeholder="repassword">
                </div>
                <br>
    
    
                <br>
                <div>
                    First Name: {{ firstname }}
                    <br>
                    <input type="text" v-model="firstname" placeholder="firstname">
                </div>
                <br>
    
                <br>
                <div>
                    Last Name: {{ lastname }}
                    <br>
                    <input type="text" v-model="lastname" placeholder="lastname">
                </div>
                <br>
    
                <br>
                <div>
                    Birthday: {{ birthday }}
                    <br>
                    <input type="text" v-model="birthday" placeholder="2000/08/08">
                </div>
                <br>
    
                <br>
                <div>
                    <span>Sex: {{ currentSex }}</span>
                    <br>
                    <input type="radio" id="sex" value="male" v-model="currentSex">
                    <label for="sex">male</label>
                    <br>
                    <input type="radio" id="sex" value="female" v-model="currentSex">
                    <label for="sex">female</label>
                </div>
                <br>
    
                <br>
                <div>
                    <span>Age: {{ currentAge }}</span>
                    <br>
                    <select v-model="currentAge" id="age">
                        <option disabled value="">Select</option>
                        <option v-for="age in ages">{{ age }}</option>
                    </select>
                </div>
                <br>
    
                <br>
                <div>
                    Wechart: {{ wechart }}
                    <br>
                    <input type="text" v-model="wechart" placeholder="wechart's name">
                </div>
                <br>
    
                <br>
                <div>
                    QQ: {{ qq }}
                    <br>
                    <input type="text" v-model="qq" placeholder="12345678">
                </div>
                <br>
    
                <br>
                <div>
                    Email: {{ email }}
                    <br>
                    <input type="text" v-model="email" placeholder="12345678@qq.com">
                </div>
                <br>
    
                <br>
                <div>
                    Contury: {{ contury }}
                    <br>
                    <input type="text" v-model="contury" placeholder="China">
                </div>
                <br>
    
                <br>
                <div>
                    Address: {{ address }}
                    <br>
                    <input type="text" v-model="address" placeholder="Guangzhou">
                </div>
                <br>
    
                <br>
                <div>
                    Phone: {{ phone }}
                    <br>
                    <input type="text" v-model="phone" placeholder="138********">
                </div>
                <br>
    
                <br>
                <div>
                    Websize: {{ websize }}
                    <br>
                    <input type="text" v-model="websize" placeholder="xxx.com">
                </div>
                <br>
    
                <br>
                <div>
                    Github: {{ github }}
                    <br>
                    <input type="text" v-model="github" placeholder="Github's URl">
                </div>
                <br>
    
                <br>
                <div>
                    Bio: {{ bio }}
                    <br>
                    <input type="text" v-model="bio" placeholder="This is the world~">
                </div>
                <br>
    
                <br>
                <input type="submit" value="完成注册">
            </form>
    
            <button v-on:click="addUser">addUser</button>
    
            <a href="./index.html">Return index's page</a>
            <br>
            <br>
    
            <div>
                {{ commits }}
            </div>
        </div>
    
        <script src="./js/signup.js"></script>
    </body>
    
    </html>
    复制代码
    • 然后呢,在来调整一下前端的 js 文件

    signup.js

    var host = 'http://127.0.0.1:3000/';
    
    var signup_container = new Vue({
        el: '#signup-container',
        data: {
          name_signin: '',
          password_signin: '',
          name: '',
          password: '',
          repassword: '',
          firstname: '',
          lastname: '',
          birthday: '',
          sexs: ['male', 'female'],
          currentSex: 'male',
          ages: ['1', '2', '3', '4', '5', '6', '7', '8',
                 '9', '10', '11', '12', '13', '14', '15', '16', '17', '18'],
          currentAge: '18',
          wechart: '',
          qq: '',
          email: '',
          contury: '',
          address: '',
          phone: '',
          websize: '',
          github: '',
          bio: '',
          commits: null,
        },
        methods: {
          signin: function() {
            var xhr = new XMLHttpRequest()
    
            var self = this
            xhr.open('GET', host + 'signin?' + 'name=' + self.name_signin + '&password=' + self.password_signin, true)
            
            xhr.onload = function () {
              self.commits = xhr.responseText
            }
            
            xhr.send()
          },
          addUser: function () {
            var xhr = new XMLHttpRequest()
    
            var self = this
            xhr.open('GET', host + 'signup?' + 'name=' + self.name + '&password=' + self.password + '&firstname=' + 
            self.firstname + '&lastname=' + self.lastname + '&birthday=' + self.birthday
            + '&sex=' + self.currentSex + '&age=' + self.currentAge + '&wechart=' + self.wechart
            + '&qq=' + self.qq + '&email=' + self.email + '&contury=' + self.contury
            + '&address=' + self.address + '&phone=' + self.phone + '&websize=' + self.websize
            + '&github=' + self.github + '&bio=' + self.bio, true)
            
            xhr.onload = function () {
              self.commits = xhr.responseText
            }
            
            xhr.send()
          }
        }
      })
    复制代码
    • 注意看到 html 和 js 文件里发生了变化的部分

    • 现在,打开浏览器,输入 127.0.0.1:3000/app.html

    • 输入之前注册过的账号密码,然后点击 登陆 按钮

    • 正常执行的话,你会在页面的底部发现,登陆后服务端返回的数据

    • 至此,我们将 signin.html 和 signup.html 合并在了一起。


    欢迎关注我的微信公众号 ArthurSlog

    微信扫描二维码,关注我的公众号

    如果你喜欢我的文章 欢迎点赞 留言

    谢谢

    展开全文
  • 微信扫描二维码,关注我的公众号 不管发生什么事情 明天的太阳还是照常升起 开发环境MacOS(High Sierra 10.13.5) 需要的信息和信息源: HTTP概述 HTTP 互联网是如何工作的 万维网是如何工作的 统一资源...
  • HTML五合一收款码网站源码(带35套模板)是一款基于HTML开发制作的多码合一收款码生成网站源码,支持wx支付,支付宝支付,手机扣扣支付,京东钱包,百度钱包,五合一收款,将其二维码合并为一个二维码,无需手续费,...
  • 支持微信支付,支付宝支付,手机QQ支付,京东钱包,百度钱包,五合一收款,将其二维码合并为一个二维码,无需手续费,支持的qq头像,昵称判断(HTML单页版多模板免安装)闲得无聊修改了一下这套收款码源码,具体看图 ...
  • 一、需求场景1、前端动态二维码组合对于很多的营销活动,需要提供给用户一张可下载二维码,但是二维码要组合一些特定的业务信息,然后便于用户分享、传播,达到营销...2、水印技术有的网站信息内容专利、防窃取的...
  • 这个支持wx支付,支付宝支付,手机QQ支付,京东钱包,百度钱包,五合一收款,将其二维码合并为一个二维码,无需手续费,支持的qq头像,昵称判断(HTML单页版多模板免安装)安装说明:修改html静态文件后直接上传访问...
  • 五合一收款码在线生成,40个模板 支持微信支付、支付宝支付、手机QQ支付、京东钱包、百度钱包,PayPal五合一收款,将其二维码合并为一个二维码,无需手续费,支持qq头像,昵称判断(HTML单页版多模板免安装,直接将源码...
  • regexper 在线测试正则表达式代表的含义,能够将你输入的... 例如 在线 js压缩、合并、JSON格式化、jQuery文档、RGB颜色参考、代码对比、Less编译、图片转 Base64、加密、进制转换、二维码生成等。 官网: http
  • 多合一二维码支付

    2017-12-09 18:58:25
    可以将多个平台收款码合并为一个通用的收款二维码,PHP源码,上传网站空间修改相关链接成自己的即可。
  • 支付宝红包收钱码

    千次阅读 2018-10-07 13:37:38
    红包收款码:将红包码合并至收款码上。 顾客:既能领红包,又能付款; 商家:既能收款,又能收到红包返利。 工具/原料 1、支付宝红包二维码 2、支付宝收款二维码 3、红包收款码制作网站(请在...
  • 红包码收款码合二为一

    千次阅读 2018-10-06 14:33:50
    商家:既能收款,又能收到红包返利。 一、红包二维码示例: 二、制作红包收款码 ...1、获取支付宝,红包码、收款码 ...2、打开红包收款码制作...(2) 点击“合并,生成红包二维码” 在手机上,可以扫描下面的二维...
  • image 获取方式...... 1、网站地址https://51dr.cn/book/detail/27225 ...本精装本由原《品三国(上)》《品三国(下)》合并而成。易中天的“品三国”是央视“百家讲坛”节目基础上改写而成,用通...
  • 提前体验小程序,请扫描二维码: 开发背景 在一次偶然的机会,和同事聊天,吐槽了周围亲朋好友的各种求职经历,也看到了“求职防坑”网站有类似分享求职经历及吐槽公司,于是就产生了将其开发成一款微信小程序的...
  • 工作原理:直接调用苹果自带的Safari浏览器打开客户的H5网址的、所以也不会存在客户目标网站域名在微信或QQ打不开的问题以及不会掉签问题。 基于目前主流的分发平台系统二开而来 1.本程序支持安卓和苹果分发,上传后...
  • 蕊蕊定时器 v2.1.zip

    2019-07-14 07:35:54
    新增:详情设置改为任务配置并合并所有的按钮,有什么任务就显示什么按钮,看起开简单得多啦 新增:任务新增加了锁屏,蕊蕊定时器不只是定时器,还可以锁屏,锁屏中还可以执行任务又可以让用户碰不了其它东西 新增...
  • 我将持续改进该控件,并将不断推出控件的新版本,要查看或下载控件的升级版本,请登陆网站:http://myyouping.download.csdn.net/ 。具体使用方法请参见帮助文件与实例文件,如有疑问或好的建议,请与我联系: 邮箱...
  • 小码短链接这款免费扩展,可以一键生成各种网址的多个短链接,并且还同步提供了短链接二维码,对于新媒体工作者而言,是测量内容在各渠道阅读量(转化率)的好工具! 079《Search the current site(站内搜索)》超...
  • 24、二维码打印功能(5.5版本增加)。 25、5.6版新增的SimpleReport组件允许您在一个方案文件中管理多个打印方案,在打印预览时能自由在各个打印方案之间切换。 我将持续改进该控件,并将不断推出控件的新版本,要...
  • 24、二维码打印功能(5.5版本增加)。 25、5.6版新增的SimpleReport组件允许您在一个方案文件中管理多个打印方案,在打印预览时能自由在各个打印方案之间切换。 26、5.7版控件增加了使用开源的NPOI从Excel文件中导入...
  • 技术交流群:想获得QQ群/微信群/钉钉企业群等信息的同学,请使用微信扫描上面的微信公众号二维码关注 WxJava 后点击相关菜单即可获取加入方式,同时也可以在微信中搜索 weixin-java-tools 或 WxJava 后选择正确的...
  • 技术交流群:想获得QQ群/微信群/钉钉企业群等信息的同学,请使用微信扫描上面的微信公众号二维码关注 WxJava 后点击相关菜单即可获取加入方式,同时也可以在微信中搜索 weixin-java-tools 或 WxJava 后选择正确的...
  • 保留网站页脚的二维码 访问 tk题库 ,充值下载题目 向同学同事推荐这个项目 每天扫一扫本页底部的支付宝红包 在您的论文参考文献中写出本项目的网址 Star us, please! 推荐云服务商 UCloud年度大促 快杰云主机推广...
  • python-qrcode:一个纯 Python 实现的二维码生成器。 Quads:基于四叉树的计算机艺术。 scikit-image:一个用于(科学)图像处理的 Python 库。 thumbor:一个小型图像服务,具有剪裁,尺寸重设和翻转功能。 ...

空空如也

空空如也

1 2
收藏数 26
精华内容 10
关键字:

二维码合并网站