行业动态
搞微信的开发者模式,很快就能把逻辑代码写完
2021-02-08

最近,我正在使用微信开发人员模式。对于最先接触到这种东西的人来说,这确实是毫无头绪的。由于他们需要与微信进行交互,因此不可避免地会遇到一些问题,这与我们在此机器上的开发不同。 ,并且逻辑代码可以很快写出来。今天主要是推迟测试。因为微信只能绑定域名,不能使用IP地址,但是公司域名直接解析为在线服务器,但是在线服务器已经有域名下运行的服务,因此不能使用。直接开发和测试,并且无法在开发人员模式下打开现有服务帐户,因为在打开开发人员模式后无法使用许多现有的自动回复。简而言之,如果遇到各种问题,请记录开发过程。

申请测试帐户

输入申请地址:

微信开发者账号认证

单击登录按钮,将弹出一个QR码,只需用您的手机微信扫描即可。

微信开发者账号认证_微信开发者账号认证_微信认证账号命名

微信开发者账号认证

成功登录后,将出现以下界面

微信开发者账号认证

appID和appsecret将在调用微信界面时使用,这是为我们自动生成的微信,您可以直接使用它。

URL:是我们自己的服务器的URL,供用户用于在微信上推送用户消息和事件。此处只能配置域名,不能使用IP。该URL用于接收微信令牌认证和消息事件。我们自己的服务器必须能够处理并响应此URL的请求,因此必须可以从Internet访问域名,否则单击“提交”。按下按钮时将报告令牌异常。

微信开发者账号认证_微信开发者账号认证_微信认证账号命名

令牌:用于验证签名。此处的填写必须与代码中的Token一致,否则无法验证。

填写URL和令牌后,单击“提交”按钮。如果通过验证,将返回配置成功,否则将返回配置失败。

配置失败的原因可能有以下几种:

1、无法访问URL地址

2、令牌未正确填写

注意:确保在单击“提交”按钮之前编写服务器代码,否则将返回配置失败。具体的实现代码将在后面演示。

到目前为止,我们的界面配置信息已经完成。

扫描测试编号的QR码以测试我们的功能

微信开发者账号认证

令牌认证

我配置的URL是XX / wxProcess / service,所以微信会将所有请求发送到我的/ service路径微信开发者账号认证,包括令牌认证和事件处理。我使用两种方法进行处理微信开发者账号认证,但请求的类型不同。令牌认证使用GET请求,事件处理使用POST请求。演示代码如下:

/**
     * 打开开发者模式签名认证
     * @param signature
     * @param timestamp
     * @param nonce
     * @param echostr
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/service", method = RequestMethod.GET)
    public Object defaultView(String signature, String timestamp, String nonce, String echostr) {
        if (echostr == null || echostr.isEmpty()) {
            return nonce;
        }
        if (SignUtil.checkSignature(signature, timestamp, nonce)) {
            return echostr;
        }
        return nonce;
    }
    /**
     * 事件处理
     * @param signature
     * @param timestamp
     * @param nonce
     * @param message
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/service", method = RequestMethod.POST, consumes = "text/xml", produces = "text/xml;charset=UTF-8")
    public String defaultViewHandler(String signature, String timestamp, String nonce, @RequestBody String message) {
        String result = "";
        if (SignUtil.checkSignature(signature, timestamp, nonce)) {
            result = coreService.processRequest(message);
        }
        return result;
    }


393701618