如何成为微信公众平台开发者

1.首先在微信公众平台(https://mp.weixin.qq.com/cgi-bin/loginpage?t=wxm2-login&lang=zh_CN)注册一个个人订阅号,个人只能注册订阅号,不能注册服务号,该过程很简单,不细说。
2.这里写图片描述
进入微信公众平台,后台管理系统页面。除了开发者中心,其他的菜单都是编辑模式。编辑模式可以满足大部分的订阅号需求。
3.如何成为开发者。
进入开发者中心
这里写图片描述
最重要的就是url和token。
url是微信服务器发请求至的接口地址,该接口对微信服务器发的请求进行处理并响应微信服务器,该地址必须是一个公网地址接口。token是用来验证接口获得的请求是微信服务器发的请求。
这里写图片描述
4.如何搭建一个公网地址接口。
利用花生壳可以将本地的服务器地址映射成公网地址。这个过程可以百度。
我的接口本地地址是http://localhost:8080/project/getMessage.action.
映射成公网地址为:http://mierzhu.oicp.net/StrutsProject/getMessage
除了花生壳可以映射公网地址来搭建服务器外,还可以通过百度bae,和新浪sae来搭建。后者有点复杂,具体可以百度。
5.url接口具体如何实现。
action类:

“`
package org.apache.struts.register.action;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Date;
import java.util.Map;

import javax.servlet.ServletException;

import org.dom4j.DocumentException;

public class GetMessage extends BaseAction {
// 自定义 token
private String TOKEN = “mimizhu”;
/**
* 接收并处理微信客户端发送的请求
*/
public String execute()
throws ServletException, IOException {
// 微信加密签名
String signature = request.getParameter(“signature”);
// 随机字符串
String echostr = request.getParameter(“echostr”);
// 时间戳
String timestamp = request.getParameter(“timestamp”);
// 随机数
String nonce = request.getParameter(“nonce”);

    if(signature!=null&&echostr!=null&&timestamp!=null&&nonce!=null){
        String[] str = { TOKEN, timestamp, nonce };
        Arrays.sort(str); // 字典序排序
        String bigStr = str[0] + str[1] + str[2];
        // SHA1加密
        String digest = DigestUtils.sha1Hex(bigStr);

        // 确认请求来至微信
        if (digest.equals(signature)) {
            response.getWriter().print(echostr);
        }
    }
    request.setCharacterEncoding("utf-8");
    response.setContentType("text/xml;charset=utf-8");
    PrintWriter out = response.getWriter();
    try {
        System.out.println("request="+request);
        Map<String, String> map = MessageUtil.xmlToMap(request);
        String toUserName = map.get("ToUserName");
        String fromUserName = map.get("FromUserName");
        String msgType = map.get("MsgType");
        String content = map.get("Content");

        String message = null;
        if ("text".equals(msgType)) {                // 对文本消息进行处理
            TextMeaasge text = new TextMeaasge();
            text.setFromUserName(toUserName);         // 发送和回复是反向的
            text.setToUserName(fromUserName);
            text.setMsgType("text");
            text.setCreateTime(new Date().getTime());
            text.setContent(content);
            message = MessageUtil.textMessageToXML(text);
            message = MessageUtil.textMessageToXML(text);
            out.print(message);                            // 将回应发送给微信服务器
        }
    } catch (DocumentException e) {
        e.printStackTrace();
    }finally{
        out.close();
    }
    return NONE;
}

}

解析xml和生成xml类:
package org.apache.struts.register.action;

import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import com.thoughtworks.xstream.XStream;

public class MessageUtil {

public static Map<String, String>xmlToMap(HttpServletRequest request) throws IOException, DocumentException{

    Map<String, String> map = new HashMap<String, String>();
    SAXReader reader = new SAXReader();            // 使用dom4j解析xml
    InputStream ins = request.getInputStream(); // 从request中获取输入流
    Document doc = reader.read(ins);

    Element root = doc.getRootElement();         // 获取根元素
    List<Element> list = root.elements();        // 获取所有节点

    for (Element e : list) {
        map.put(e.getName(), e.getText()); 
        System.out.println(e.getName() + "--->" + e.getText());
    }
    ins.close();
    return map;
}

/**
 * 将文本消息对象转换成XML
 */
public static String textMessageToXML(TextMeaasge textMessage){

    XStream xstream = new XStream();              // 使用XStream将实体类的实例转换成xml格式    
    xstream.alias("xml", textMessage.getClass()); // 将xml的默认根节点替换成“xml”
    return xstream.toXML(textMessage);

}

}

注意:action类中的token要和微信公众平台的token一致,点击【提交】就可以成为开发者了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值