The most complete WeChat applet development tutorial (video+boutique article)

The latest applet mall class development tutorial:

one Sidebar Classification of WeChat Applets - WeChat Applet Practice Mall Series (1)

two WeChat applet imitated Taobao classified entry - WeChat applet practical shopping mall series (2)

three Add or subtract the amount of WeChat applet shopping - WeChat applet practical shopping mall series (3)

four Classification of commodity attributes of WeChat applets - WeChat applet battle mall series (4)

five Shopping Cart of WeChat Applets - WeChat Applet Practice Mall Series (5)


WeChat has always been a big attraction these two days. The editor first put the latest tutorials on the top of the page for everyone to preview:

[Official Tutorial] Scan the ordinary link QR code to open the applet

WeChat official account menu configuration applet: graphic tutorial

Six new capabilities for applet! Open to individual developers (personal registration process attached) [The minor editor has been registered, but only one programmer is needed]

Document/tool update on March 28, 2017: Bluetooth and card vouchers were opened to obtain the user's communication address and access scenarios, which are compatible with ES6 API [official documents attached]

WeChat applet wx. chooseAddress


Video Tutorials

zero [Latest video tutorial] 8-day WeChat applet from introduction to project practice

one The latest WeChat applet video tutorial of Geek Academy (complete) Video Tutorials

two [Advanced] Advanced API in-depth tutorial video: WeChat payment, template message, customer service session, obtaining openid Video Tutorials

three A full set of video tutorials for the development of Qianfeng Education WeChat applet (video and source code)

four WeChat applet video tutorial collection 1 with source code PPT download 32 video tutorials

five WeChat applet video tutorial collection 2 with source code PPT download 25 video tutorials


one WeChat applet certification guide Official Documents

two WeChat applet access guide Official Documents

three WeChat applet development guide Official Documents

four Operation specification of WeChat applet platform Official Documents


one Tutorial on importing demos from official developer tools: If you don't know how to import demos, go here

two Query the service range of WeChat applet Folk products


[Novice] Summary of the development process of online applet development:

one WeChat applet introduction (I) article list

two WeChat applet introduction (II) UI framework

three WeChat applet introduction (III) request request

four WeChat applet introduction (IV) details page

five Introduction to WeChat Applets (V) Slide up to load and pull down to refresh

six Getting Started with WeChat Applets (VI) Local Cache and Search

seven Getting Started with WeChat Applets (VII) Login and Registration

eight WeChat applet introduction (VIII) avatar upload


Wall crack recommends beginners to read three articles

one [Super detailed] From 0 to 1: Welcome page for beginner Demo (7322 words in full text) [Novice Tutorial]

two [Super detailed] From 1 to 2: Beginner Introduction Demo Content List Page [Novice Tutorial]

three From 2 to 3: Beginner Introduction Demo Content Details Page [Novice Tutorial]


These four chapters are HustWolf Some experience of students using winter vacation time to develop small programs is suitable for beginners to read.

one 【1】 WeChat applet (full code) development - running app+music player A must read for novice developers to share

two [II: BUG modification] WeChat applet (all codes) development - running app+music player A must read for novice developers to share

three [III: Picture selection and photo taking function] WeChat applet development - running app+music player A must read for novice developers to share

four [IV: Recording function] WeChat applet (all codes) development running app+music player A must read for novice developers to share


The content here is the developer's interpretation of the document, suitable for novices

eighteen Applets are rapidly developing "I" view container Folk products

nineteen The scrollview scrollable view area of the rapid development of applets Folk products

twenty Applet rapid actual development "3" slider view container Folk products

twenty-one The applet develops the icon icon of "IV" at high speed Folk products

twenty-two Applets develop the text of "V" at a high speed Folk products

twenty-three Quickly develop the progress bar of "VI" Folk products

twenty-four Quickly develop applet button Folk products

twenty-five Rapid practical development of applet Checkbox options Folk products

twenty-six Applet develops the form of "Nine" in practice at high speed Folk products

twenty-seven The input input box of "Ten" has been developed at a high speed Folk products

twenty-eight Quickly develop the label label of "Eleven" for applets Folk products

twenty-nine Rapid development of small programs in actual combat "Twelve" picker scroll selector Folk products

thirty Applet develops 13 radio single choice project at high speed Folk products

thirty-one Applet rapid actual development of slide selector in Fourteen Folk products

thirty-two Rapid practical development of applet switch selector in the Tenth Five Year Plan Folk products

thirty-three Applet rapid actual development of the 16 textarea multi line input box Folk products

thirty-four The action sheet of "Seventeen" shows the operation menu Folk products

thirty-five Rapid development of small programs in actual combat "18" modal display mode pop-up window Folk products

thirty-six The applet is rapidly developed in practice, and the message prompt is displayed on the toast Folk products

thirty-seven Quickly develop applet, link to navigator page of Twentieth Folk products

thirty-eight Applet develops "21" audio audio at high speed Folk products

thirty-nine The image of Twenty two was developed by applet at high speed Folk products

forty Quickly develop the "23" video video for applets Folk products

forty-one Applet develops the map of "24" at a high speed Folk products

forty-two The applet develops the map API of "Twenty five" at high speed Folk products

forty-three The rapid development of applet canvas Folk products

forty-four Applets develop the canvas API of Twenty seven at a high speed Folk products

forty-five The applet developed the Wx. storage data cache of "28" at high speed Folk products

forty-six The applet is rapidly developed in actual combat, and the network request of "29" wx. request Folk products


This is an early entry series, which is also suitable for beginners.

forty-seven [helloworld] - WeChat applet tutorial - Introduction [1] Folk products

forty-eight [helloworld] - WeChat applet tutorial - Introduction [2] Folk products

forty-nine [helloworld] - WeChat applet tutorial - Introduction [3] Folk products

fifty [helloworld] - WeChat applet tutorial - Introduction [4] Folk products

fifty-one [helloworld] - WeChat applet tutorial - Introduction [5] Folk products

fifty-two [helloworld] - WeChat applet tutorial - Introduction [6] Folk products

fifty-three [2048] - WeChat applet tutorial - Introduction - Actual combat [1] Folk products

fifty-four [2048] - WeChat applet tutorial - Introduction - Actual combat [2] Folk products

fifty-five WeChat applet development tutorial - start from scratch (1) Folk products

fifty-six WeChat applet development tutorial - start from scratch (2) Folk products

fifty-seven WeChat applet development tutorial - start from scratch (3) Folk products


Layout family:

one Detailed explanation of WeChat applet development - applet layout foundation Folk products

two WeChat applet development: Flex layout Folk products

three View FlexBox layout from WeChat applet

four Use screenWidth and screenHeight to manually calculate layout


Pit filling summary

one Summary of problems that 80% of applet developers will encounter during development (continuously updated Folk products

two WeChat applet developer novice jumping guide Folk products

three WeChat applet jumping guide: 30 new ones Folk products

four WeChat applet FAQ official answer collection of Tencent Official Q&A

five Talk about the problems encountered by the applet Folk products


HTTPS/SSL certificate related

one Upgrade from http to https and complete free SSL certificate application, signing and configuration in ten minutes Folk products

two Nodejs+Express creates HTTPS server+WS module creates encrypted WS service Folk products

three WeChat applet configuration server https protocol I - apply for certificate Folk products

four WeChat applet configuration server https protocol II nginx+tomcat server configuration Folk products

five Tomcat http to https

six WeChat applet - http request encapsulation

seven In depth analysis of HTTPS protocol, why WeChat applet developers need to pay attention to

eight [https] node plug-in http proxy reverse proxy realizes port distribution


This part is a practical tutorial on how to implement the specific functions of the applet. If you have time, you can browse the title first. If you need it, just click "Ctrl+F".

one Applet Framework Summary

two WeChat applet custom component: tab button with unread number

three Example of WeChat applet: achieve the effect of tabs Folk products

four WeChat applet - pull down to refresh, pull up to load more Folk products

five WeChat applet drop-down filter menu WXDropDownMenu component Folk products

six WeChat applet carousel diagram swiper picture component Folk products

seven WxMasonry WeChat applet realizes waterfall layout Folk products

eight WeChat applet editing business card page development Folk products

nine Use Promise for asynchronous process processing in WeChat applet Folk products

ten Reasonable use of WeChat applet 1024kb (1M) limit Folk products

eleven Text Component, progress bar Folk products

twelve Correct usage of WeChat applet wx: for and wx: for item Folk products

thirteen View control, ScrollView and Swiper of WeChat applet foundation Folk products

fourteen Analysis and solution of the failure of WeChat applet require to reference BASE64.JS Folk products

fifteen WeChat applet list rendering multi-layer nested loops and the use of wx: key Folk products

sixteen WeChat applet development skills and development tool use skills Folk products

seventeen WeChat applet development tutorial Officially released

eighteen Login code for applet development

nineteen Sort out WeChat applet login logic Folk products

twenty WeChat applet login and payment brief process Folk products

twenty-one WeChat applet tutorial and examples Folk products

twenty-two WeChat login process Folk products

twenty-three How to develop WeChat applet Share WeChat applet development tutorial Folk products

twenty-four Width height setting percentage has no effect Folk products

twenty-five Audio format of WeChat recording Folk products

twenty-six Suggestions on JavaScript code writing habits and naming conventions in WeChat applet Folk products

twenty-seven Interface calling mode Folk products

twenty-eight App() and Page() Folk products

twenty-nine Inadequate picture display of filling pit in applet development Folk products

thirty Applet development filling pit IV view tag setting background picture mobile phone cannot preview Folk products

thirty-one Applet development and pit filling Preview on real machine, background image invalid Folk products

thirty-two wx.canvasToTempFilePath Folk products

thirty-three Variable pollution Folk products

thirty-four Openid and unionid Folk products

thirty-five Failed to load resource on the Mac Folk products

thirty-six Convert the pinyin provincial and city names returned by wx.getUserInfo into Chinese characters Folk products

thirty-seven Applet development and pit filling "VI" tabbar is not displayed, parameters are transferred between pages, and picker component values Folk products

thirty-eight The difference between push and concat Folk products

thirty-nine Textarea simple solution Folk products

forty Small program development fills in the pit. Solution to the problem that the background cannot obtain data when requesting the request Folk products

forty-one How to gracefully handle multiple requests caused by users' misoperation Folk products

forty-two WeChat applet+nodejs+socket.io bug Folk products

forty-three WeChat applet mind map Folk products

forty-four Nginx+tomcat server configuration Folk products

forty-five WeChat applet payment (WeChat payment) Folk products

forty-five Tips for WeChat applet developers Folk products

one hundred and nine How to quickly master components and APIs Folk products

forty-seven Get the current geographical location Folk products

forty-eight About the conversion of applet map and Baidu map (netizens provide that Gaode and Tencent can seamlessly convert) Folk products

forty-nine WeChat applet development - example tutorial of using map API to obtain city information Folk products

fifty WeChat applet value transfer and value acquisition method Folk products

fifty-one Feel the design specification of applet from WeChat third-party services Folk products

fifty-two Click the blank space to hide the input, pull down to refresh, global variables Folk products

fifty-three Brief description of WeChat payment steps by WeChat applet Folk products

fifty-four WeChat applet payment process (precautions), applet payment back, transfer Folk products

fifty-five For more development questions, please go to: applet development Q&A section Folk products

fifty-six Small program development fills in the hole "9" to solve: after setting the legal request domain name, the development has been prompted that the legal domain name is not Folk products

fifty-seven Applet development filling pit "Eleven" uploadFile pit removal IIS server cannot upload pictures larger than 50K Folk products

fifty-eight Post request Folk products

fifty-nine Slide, tab navigation switch Folk products

sixty List of official document BUG, tip and QA tips Folk products

sixty-one Small program development fills the hole "Twelve" show content display, upload file coding problems Folk products

sixty-two The list slides left and right, and the left sliding deletion function is realized Folk products

sixty-three Experience of canvas test in applet Folk products

sixty-four Animation case: the dot moves along the circle Folk products

sixty-five Create a distribution template message instance Folk products

sixty-six Applet development fills in the hole "13" What to do when WeChat applet deployment HTTPS reports an error Folk products

sixty-seven Applet development fills in the hole, and the third party can solve the problem that wx.uploadFile cannot be uploaded Folk products

sixty-eight Applet development fills in the hole "3" about wx.uploadFile uploading multiple pictures Folk products

sixty-nine Make the element occupy the whole screen height, and modify the swiper dot style Folk products

seventy Applet Development Pit Filling 14 WeChat applet free SSL certificate https, TLS version solution Folk products

seventy-one Applet development fills in the "Tenth Five Year Plan" request: fail error and real machine preview problem Folk products

seventy-two Pit filling for applet development Pit encountered in applet network request of Sixteen and solutions Folk products

seventy-three Applet development fills in the hole. WeChat applet rich text parsing custom component supports HTML and markdown parsing Folk products

seventy-four WeChat applet instance: jump to the top instance Folk products

seventy-five Some small problems and solutions found by WeChat applet Folk products

seventy-six Applet Development Filling Pit 2 Incompatibility Problem and Solution of Using Flex Layout for Navigator Components Folk products

seventy-seven Encapsulate provincial and urban three-level linkage templates with picker Folk products

seventy-eight Local cache of WeChat applet Folk products

seventy-nine Chain call of Promise object (solving asynchronous callback nesting) Folk products

eighty Promise, the artifact in Javascript Folk products

eighty-one Data operations and function calls in Page Folk products

eighty-two Applet development fills the hole "18" No analysis of json under Android Folk products

eighty-three Analysis of logic layer and view layer of "I" by applet framework Folk products

eighty-four The applet framework parses the configuration file of "II" and its supported configuration attributes Folk products

eighty-five The same task is working on Android Folk products

eighty-six Applet data access Folk products

eighty-seven Tips on applet development: Spreading sound from thousands of miles (template message) Template Message

eighty-eight Applet development fills in the hole Bluebird.js in Android real machine environment Real machine

eighty-nine New function in 0.11.1221: customer service message Customer service information

ninety 0.11.1221 New details: code scanning interface, WeChat payment&shared debugging WeChat payment

ninety-one Applet development filling pit "21" network request error reporting Folk products

ninety-two WeChat applet page jump transfer value Folk products

ninety-three Use backend cloud service LeanCloud Folk products

ninety-four FAQ of WeChat applet (16.12.12-16.12.18) Folk products

ninety-five The height of the scroll view of "22" Folk products

ninety-six Small program development fills in the hole; the text of "23" overflows Folk products

ninety-seven Small program development fills in the hole The Twenty four Swipper cannot maintain the aspect ratio Folk products

ninety-eight Small program development and pit filling "25" lack of documents, error prompt Real machine preview

ninety-nine Applet development and filling in the pit The real machine preview of the "26" applet is different from the local Folk products

one hundred WeChat applet form submission (PHP backend) Form

one hundred and one Background configuration domain name: common api domain name configuration list (wx. uploadFile) Domain name configuration

one hundred and two Small program development pit filling 27 provides a test account, which must provide WeChat authorized login Audit test account

one hundred and three How to make your WeChat applet pass the review Audit related

one hundred and four PHP: WeChat applet server integrated WeChat payment WeChat payment

one hundred and five If the applet is connected to WeChat payment, you may encounter these pitfalls WeChat payment

one hundred and six Practical WeChat applet tutorial: WeChat payment pit jumping process WeChat payment

one hundred and seven Applet development fills in the "29" view side by side, and tomcat is configured as https, wx.request background data interaction Https related

one hundred and eight Chart control based on WeChat applet canvas, applicable to wepy framework canvas

one hundred and nine WeChat applet ToolTip message prompt component Https related

one hundred and ten Java calls WeChat applet API createwxaqrcode to generate QR code Java calls WeChat applet API

one hundred and eleven MaterialDesign -- input component of WeChat applet MaterialDesign -- input component

one hundred and twelve Tip box toast component of WeChat applet - use of wxui Prompt box toast component

one hundred and thirteen WeChat applet utility component: right letter retrieval, example (experience leverage) Right Letter Search

one hundred and fourteen Histogram and trend chart based on Canvas API of WeChat applet Histogram and trend chart

one hundred and fifteen The applet uploads multiple local pictures at one time, pulls up to load pictures, and solves the problem of picture loading delay Upload multiple local pictures at one time

one hundred and sixteen The sliding top tab, simple table table, and swiper images are incomplete Sliding top tab tab

one hundred and seventeen Applets use view to pull down and refresh, and pull up to load data.//The three-point implementation of loading Pull down to refresh and pull up to load data.//The three-point implementation of loading

one hundred and eighteen Js custom addition, subtraction, multiplication, and division methods (to prevent js's own calculation errors) Js Custom addition, subtraction, multiplication and division method

one hundred and nineteen Applet slide deletion (left slide deletion) Side slide deletion (left slide deletion)

one hundred and twenty Using css to realize mask effect Using css to realize mask effect

one hundred and twenty-one Applet realizes mask layer with modal Implementing mask layer with modal

one hundred and twenty-two Datatables+java implements server-side paging, sorting, query, and column display Datatables+java implements server-side paging, sorting, query, and column display

one hundred and twenty-three [Pit Filling Guide] The problem of using bindtap to transfer values in applet view The problem of view using bindmap to transfer values

one hundred and twenty-four WeChat applet obtains user openId Get user openId

one hundred and twenty-five No Refresh Modify: Refresh the data without refreshing the page Refresh data without refreshing the page

one hundred and twenty-six WeChat applet ---- implementation of pop-up screen (without background) Barrage

one hundred and twenty-seven How to get the user's information authorization pop-up window and change the content Information authorization pop-up window, change

one hundred and twenty-eight Make Back to Top button Back to top button

one hundred and twenty-nine WeChat applet operation button is suspended and fixed at the bottom The operation button is suspended and fixed

one hundred and thirty WeChat applet uses font awesome icon library Using the font awesome icon library

one hundred and thirty-one Canvas of WeChat applet - playing bad FlappyBird

one hundred and thirty-two Picture preload component for WeChat applet

one hundred and thirty-three [Tools] WeChat applet common tool class encapsulation

one hundred and thirty-four [Pit Filling Series] image component binderor instance

one hundred and thirty-five Baidu map of WeChat applet to obtain geographical location

one hundred and thirty-six WeChat applet address book function realizes idea sharing

one hundred and thirty-seven WeChat applet - development experience summary

one hundred and thirty-eight Obtaining openid

one hundred and thirty-nine Get the data and print it out

one hundred and forty WeChat applet uses WebService (Asp. net) for data interaction

one hundred and forty-one Mustache syntax for WeChat applet development

one hundred and forty-two Use of WeChat applet template template

one hundred and forty-three Use of WeChat applet template template

one hundred and forty-four For loop, binding click event

one hundred and forty-five WeChat Xiaocheng actual combat report: access to customer service messages

one hundred and forty-six Summary of WeChat applet development knowledge

one hundred and forty-seven Introduction to WeChat applet data binding, jump parameter transmission and event mechanism

one hundred and forty-eight Applet based on canvas to draw high-speed railway line map

one hundred and forty-nine WeChat applet introduction: modularization, network request encapsulation

one hundred and fifty Applet generates parameter QR code (PHP)

one hundred and fifty-one Self deploy Tencent Cloud WeChat applet backend development kit wafer back-end

one hundred and fifty-two Equally scale and dynamically acquire the height and width of the picture Dynamically set the height and width of the picture Picture processing

one hundred and fifty-three Example of WeChat applet pull-up loading (paging loading)

one hundred and fifty-four Sliding tab view of applet

one hundred and fifty-five Lakala Member Applet Development Summary: Barcode QR Code

one hundred and fifty-six WeChat applet positioning to the current city

one hundred and fifty-seven WeChat applet customization dialog+pop-up and hidden animation explanation

one hundred and fifty-eight E-commerce/ticketing applet must be read. How can I use the applet to push messages?

one hundred and fifty-nine WeChat applet satisfaction (five-star rating) with code

one hundred and sixty WeChat applet page value transfer

one hundred and sixty-one Tips for WeChat applet development position、 Gradient color, cutting fillet, etc

one hundred and sixty-two Custom style solution: use one pixel border

one hundred and sixty-three WeChat applet custom pop-up window

one hundred and sixty-four Github selection: WeChat applet scroll animation, click event and score star production

one hundred and sixty-five Use mock.js to provide simulation data

one hundred and sixty-six Prompt input dialog box prompt share

one hundred and sixty-seven How to use WeChat applet MD5js

one hundred and sixty-eight Applet request interface carousel

one hundred and sixty-nine WeChat applet left sliding deletion effect

one hundred and seventy Canvas basic drawing

one hundred and seventy-one Expand WeChat applet framework function: encryption and decryption plug-in unit

one hundred and seventy-two Expand WeChat applet framework function: test assistance plug-in unit

one hundred and seventy-three WeChat applet es6 promise

one hundred and seventy-four WeChat applet gesture exploration: single touch point and multi touch point

one hundred and seventy-five WeChat payment background development steps (attached with background demo)

one hundred and seventy-six WeChat applet - single choice and multiple choices for traversing array

one hundred and seventy-seven Solve the conversion format of WeChat applet bank card number input

one hundred and seventy-eight WeChat applet imitates the bottom navigation bar of Android fragment

one hundred and seventy-nine Several knowledge points of the applet: remove the scrollview scroll bar/tabar and select the font color

one hundred and eighty The json data returned from the background contains html tags, which cannot be displayed correctly in wxml plug-in unit

one hundred and eighty-one Scroll to a location to add a class effect

one hundred and eighty-two WeChat applet recording file.silk upload server to mp3 format plug-in unit

one hundred and eighty-three About the holes of scroll view and drop-down refresh Pit filling

one hundred and eighty-four WeChat applet chat system construction

one hundred and eighty-five Applet page jump and data transfer during jump

one hundred and eighty-six About applet dynamic binding data, dynamic event processing

one hundred and eighty-seven Pits in WeChat applet daily knowledge storage and development

one hundred and eighty-eight Data Decryption of Applet Basics

one hundred and eighty-nine Experience in developing small programs for public review and ordering - release and promotion

one hundred and ninety Github selection: eLong applet framework components

one hundred and ninety-one How to use the applet canvas component to draw an automatically scaled square

one hundred and ninety-two Explain the BOM header and how to remove it

one hundred and ninety-three "Pop up menu" special effect of WeChat applet development

one hundred and ninety-four Boutique! [eLong applet]: problems encountered in the development project and solutions

one hundred and ninety-five Example of WeChat applet: Beauty Atlas: call remote API to get pictures and save them

one hundred and ninety-six Michael: Example of custom modal pop-up (with animation) of WeChat applet

one hundred and ninety-seven "Pop up menu" special effect of WeChat applet development

one hundred and ninety-eight WeChat applet: WeChat login (ThinkPHP as the background)

one hundred and ninety-nine WebSocket of WeChat applet (attached with applet and server source code)

two hundred WeChat applet controls computer screen remotely, using WebSocket

two hundred and one WeChat applet countdown component update, adding time calibration function

two hundred and two WeChat applet button modification style

two hundred and seven Solution for arranging multiple image images with gaps

two hundred and eight "Small and beautiful" applet penetration test

two hundred and nine Voice recognition of WeChat applet (attached applet+server source code)

two hundred and ten [Pit Jumping] Applet with Parameter QR Code Related Problems Summary Post

two hundred and eleven Applet generates parameter QR code (PHP)

two hundred and twelve WeChat applet barcode, two-dimensional code generation module

two hundred and thirteen Request QR code of WeChat applet (user clicks button to generate QR code with parameters)

two hundred and fourteen Applet generates c # background code with parameter QR code

two hundred and fifteen Implementation of 2D code with parameters by WeChat applet

two hundred and sixteen Five star scoring effect of WeChat applet

two hundred and seventeen WeChat applet handles user's denial of authorization, WeChat login, login saving and other solutions

two hundred and eighteen WeChat applet drop-down menu effect

two hundred and nineteen WeChat applet countdown component update, adding time calibration function

two hundred and twenty The WeChat applet request cannot use the session, and the picker component cannot use the object

two hundred and twenty-one WeChat applet image absolute positioning, data traversal steps

two hundred and twenty-two WeChat applet component series: form explanation

223【 Login related] How does the applet support cookies -- solutions (nodejs)

two hundred and twenty-four Pit of WeChat applet setData

two hundred and twenty-five Util.randomString of Error is not a function

two hundred and twenty-six WeChat applet development - form submission and value taking

two hundred and twenty-seven Some understanding of WeChat applet Session (creativity)

two hundred and twenty-eight WeChat applet - text marquee effect

two hundred and twenty-nine WeChat applet implementation with scale slider

two hundred and thirty [Payment] WeChat applet access to WeChat payment operation record

two hundred and thirty-one [Payment] WeChat applet WeChat payment access development

 Watson Blog
  • This article is written by Published on November 24, 2017 00:15:16
  • This article is collected and sorted by the website of Mutual Benefit, and the email address for problem feedback is: wosnnet@foxmail.com , please keep the link of this article for reprinting: https://wosn.net/807.html

Comment