Before you start, you may be very interested in this, but you are still confused. Is it complicated? Is it difficult to learn?
In fact, it’s just the opposite, it’s very simple. In order to dispel everyone's concerns, I first briefly introduce the basic principles of the WeChat public platform.
The WeChat server is equivalent to a forwarding server. The terminal (mobile phone, Pad, etc.) initiates a request to the WeChat server, and the WeChat server then forwards the request to the custom service (this is our specific implementation).
After the service is processed, it is then evaporated to the WeChat server, and the WeChat server then replies with a specific response to the terminal.
The communication protocol is: HTTP
The data format is: XML
The specific process is as shown in the figure below:
# #Actually, what we need to do is respond to HTTP requests. We will parse the specific request content according to the specific XML format. After processing, we will also return it according to the specific XML format. We only need a simple implementation of HttpHandler. Of course, the WeChat platform can also implement more complex businesses. For example, WeChat can be used as an embedded browser. We can open the htm interface through the WeChat link and then implement our own logic. Specific application steps: 1. Register a public accountRegistration address: http://mp.weixin.qq.com/1 ) First you need to register by email: #2) Email activation. You will receive an activation email in your mailbox, just click the activation link. 3) Personal information needs to be registered. Here you need to provide some personal information or organizational information. Now individuals are only allowed to register subscription accounts, and companies can register service accounts. Service accounts have more functions than subscription accounts, and can implement customized menus. The information that needs to be provided mainly includes the ID number and the photo of the person holding the ID card. If it is a unit registration, the unit registration number, business license and legal person ID card and photo are also required. I feel this is a bit abnormal. Which boss is willing to let you take a photo with him and his ID card? Note: Only two WeChat public platform accounts are allowed to be registered with the same mobile phone number or the same ID number. Personal information registration: Enterprise usersThe personal information above for enterprise users must also be filled in, only the personal information of the operator . Government Media 4) Enter the relevant information of the public account. When entering the name and description of the official account, please note that the name of the official account cannot be edited. Once submitted, it cannot be changed, so be careful. Registration needs to be reviewed within 7 days. The specific registration steps will not be described here. #2. Complete the informationIf the review is passed, you can proceed to the next step. How to bind our services to public accounts? Mainly upload avatar, you can also modify the description information. However, please note that you can only modify it once a month. Therefore, when making a new application, you must wait until the requirements have been determined and the UE has designed the icon before processing. If there is any modification, you can only wait for one month. 3. Become a developer: First turn off the editing mode and turn on the development mode Here we can really bind our own server . Bind the service address and token. The server address must be a public IP and its port must be 80The token value should be as complex as possible. Once it is cracked, it is likely to be exploited.
Because, when accessing the server for the first time, an identity verification is required, and a token is required. And once verified successfully, it will no longer be verified in the future.
The public platform message interface provides developers with a new way of processing messages.
Click Apply and fill in the URL and token. The token can be filled in by the developer to generate a signature.
After the public platform user submits the information, the WeChat server will send a GET request to the filled-in URL with four parameters:
Parameter | Description |
---|---|
signature | WeChat encrypted signature |
timestamp | Timestamp |
nonce | Random number |
echostr | Random string |
Developers verify the request by checking the signature (verification methods are listed below). If it is confirmed that this GET request comes from the WeChat server, please return the echostr parameter content as it is, then the access will take effect, otherwise the access will fail.
signature combines the token parameter filled in by the developer with the timestamp parameter and nonce parameter in the request.
加密/校验流程: 1. 将token、timestamp、nonce三个参数进行字典序排序 2. 将三个参数字符串拼接成一个字符串进行sha1加密 3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
When an ordinary WeChat user sends a message to a public account, the WeChat server will POST the message to the filled-in URL. The structure is as follows:
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[this is a test]]></Content> <MsgId>1234567890123456</MsgId> </xml>
Parameters | Description |
---|---|
ToUserName | Developer WeChat ID |
FromUserName | Sender account (an OpenID) |
CreateTime | Message creation time (integer) |
text | |
Text Message content | |
Message id, 64-bit integer |
参数 | 描述 |
---|---|
ToUserName | 开发者微信号 |
FromUserName | 发送方帐号(一个OpenID) |
CreateTime | 消息创建时间 (整型) |
MsgType | image |
PicUrl | 图片链接 |
MsgId | 消息id,64位整型 |
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1351776360</CreateTime> <MsgType><![CDATA[location]]></MsgType> <Location_X>23.134521</Location_X> <Location_Y>113.358803</Location_Y> <Scale>20</Scale> <Label><![CDATA[位置信息]]></Label> <MsgId>1234567890123456</MsgId> </xml>
参数 | 描述 |
---|---|
ToUserName | 开发者微信号 |
FromUserName | 发送方帐号(一个OpenID) |
CreateTime | 消息创建时间 (整型) |
MsgType | location |
Location_X | 地理位置纬度 |
Location_Y | 地理位置经度 |
Scale | 地图缩放大小 |
Label | 地理位置信息 |
MsgId | 消息id,64位整型 |
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1351776360</CreateTime> <MsgType><![CDATA[link]]></MsgType> <Title><![CDATA[公众平台官网链接]]></Title> <Description><![CDATA[公众平台官网链接]]></Description> <Url><![CDATA[url]]></Url> <MsgId>1234567890123456</MsgId> </xml>
参数 | 描述 |
---|---|
ToUserName | 接收方微信号 |
FromUserName | 发送方微信号,若为普通用户,则是一个OpenID |
CreateTime | 消息创建时间 |
MsgType | 消息类型,link |
Title | 消息标题 |
Description | 消息描述 |
Url | 消息链接 |
MsgId | 消息id,64位整型 |
事件推送只支持微信4.5版本,目前开启自定义菜单接口事件推送、关注与取消关注事件推送。其余功能即将开放,敬请期待。
<xml><ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[FromUser]]></FromUserName> <CreateTime>123456789</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[EVENT]]></Event> <EventKey><![CDATA[EVENTKEY]]></EventKey> </xml>
参数 | 描述 |
---|---|
ToUserName | 接收方微信号 |
FromUserName | 发送方微信号,若为普通用户,则是一个OpenID |
CreateTime | 消息创建时间 |
MsgType | 消息类型,event |
Event | 事件类型,subscribe(订阅)、unsubscribe(取消订阅)、CLICK(自定义菜单点击事件) |
EventKey | 事件KEY值,与自定义菜单接口中KEY值对应 |
对于每一个POST请求,开发者在响应包中返回特定xml结构,对该消息进行响应(现支持回复文本、图文、语音、视频、音乐)。
微信服务器在五秒内收不到响应会断掉连接。
回复xml结构如下:
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>12345678</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[content]]></Content> </xml>
参数 | 描述 |
---|---|
ToUserName | 接收方帐号(收到的OpenID) |
FromUserName | 开发者微信号 |
CreateTime | 消息创建时间 |
MsgType | text |
Content | 回复的消息内容,长度不超过2048字节 |
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>12345678</CreateTime> <MsgType><![CDATA[music]]></MsgType> <Music> <Title><![CDATA[TITLE]]></Title> <Description><![CDATA[DESCRIPTION]]></Description> <MusicUrl><![CDATA[MUSIC_Url]]></MusicUrl> <HQMusicUrl><![CDATA[HQ_MUSIC_Url]]></HQMusicUrl> </Music> </xml>
参数 | 描述 |
---|---|
ToUserName | 接收方帐号(收到的OpenID) |
FromUserName | 开发者微信号 |
CreateTime | 消息创建时间 |
MsgType | music |
MusicUrl | 音乐链接 |
HQMusicUrl | 高质量音乐链接,WIFI环境优先使用该链接播放音乐 |
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>12345678</CreateTime> <MsgType><![CDATA[news]]></MsgType> <ArticleCount>2</ArticleCount> <Articles> <item> <Title><![CDATA[title1]]></Title> <Description><![CDATA[description1]]></Description> <PicUrl><![CDATA[picurl]]></PicUrl> <Url><![CDATA[url]]></Url> </item> <item> <Title><![CDATA[title]]></Title> <Description><![CDATA[description]]></Description> <PicUrl><![CDATA[picurl]]></PicUrl> <Url><![CDATA[url]]></Url> </item> </Articles> </xml>
参数 | 描述 |
---|---|
ToUserName | 接收方帐号(收到的OpenID) |
FromUserName | 开发者微信号 |
CreateTime | 消息创建时间 |
MsgType | news |
ArticleCount | 图文消息个数,限制为10条以内 |
Articles | 多条图文消息信息,默认第一个item为大图 |
Title | 图文消息标题 |
Description | 图文消息描述 |
PicUrl | 图片链接,支持JPG、PNG格式,较好的效果为大图640*320,小图80*80。 |
Url | 点击图文消息跳转链接 |
1.用户OpenID对一个公众号是固定唯一的串
2.请使用80端口
The above is the detailed content of Detailed introduction to the basic principles of WeChat public account development and registration. For more information, please follow other related articles on the PHP Chinese website!