百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

微信公众号开发之配置和接入(二) 微信公众号配置接口

yuyutoo 2024-10-13 00:33 6 浏览 0 评论

从今天开始我们就正式开始微信公众号开发了,首先进入微信官网https://mp.weixin.qq.com/,注册或者登陆(如果已经注册了)你的微信公众号,登陆后需要管理员用个人微信扫码验证通过才行,这里直接贴出截图如下:

?

我们是开发者,重点关注上面最后一张图的红框内容,在接下来的开发过程中,我们几乎只会用到这四个地方的功能和文档说明

一、【启动开启开发者模式】

点击上面的【开发】---》【基本配置】,进入后如图:

?

这里我已经启动了开发者模式,关闭后如下图,重新启动即可:

?

二、【修改配置】

注意填写下面两个输入框URL和Token即可:

?

Token填写一个你喜欢的字符串,类似你自己设置的密码,随便填写一个你喜欢的英文字符串即可,这里重点说明以下URL;

URL是你跟微信公众号服务器之间通讯传输消息的唯一接口,这里需要重点说明以下微信开发者通讯传输消息的基本工作思路

?

当关注微信公众号的用户发送消息给腾讯公众号服务器之后,腾讯微信公众号服务器会通过这个URL将消息转发给你你自己的项目后台,你的项目可以自定义的做出你想要的任何回复响应,然后当你项目后台做出响应后,腾讯微信公众号服务器再通过这个URL接口收到你的项目后台发过来的消息,继而转发到关注微信公众号的用户手机上,以上就是微信公众号开发的基本思路流程,请读者务必明白,否则后续开发会遇到问题而不知道如何调试处理,接下来我们创建一个这样的可用的URL地址

三、【创建SpringBoot项目】

这里我们利用Java中的明星级IDE工具IDEA新建一个最简单的SpringBoot项目,之所以用SpringBoot就是因为SpringBoot创建和配置太简单了,我们把精力集中到开发业务和逻辑流程上,而不要把精力浪费到项目的冗繁的配置上,用IDEA创建一个最简单的SpringBoot项目,这里我不想细说,不清楚的请百度自行查找网上其他大神的资料,一下是我创建的SpringBoot项目缩略图:

?

这里我创建了一个Controller和新建了一个RestApi接口,结合上面截图和下面截图红框部分,你再看看我的URL地址http://r7fkc2.natappfree.cc/weChart/connect 你应该好像明白了点什么,对我们配置了这个接口,那问题来了,为什么我们配置的是这个接口而不是别的接口呢,因为我们配置的这个接口第一次提交保存时候,腾讯微信公众号会给你发送一些消息,你需要对这些消息接收后做出符合要求的逻辑处理并作出正确的回应,腾讯微信公众号才会成功认证他作为唯一的合法URL,否则你是无法腾讯微信服务器形成有效的通讯通道进行通讯的,你现在明白了吧;那么这个接口里的东西可不能乱写,下面我直接贴代码如下:

WechatController.java
package com.xu.wemall.controller.wechat;

import com.xu.wemall.commons.utils.CheckUtil;
import com.xu.wemall.commons.utils.UploadUtil;
import com.xu.wemall.commons.utils.MessageUtil;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
import java.util.Map;

/**
 * 类名称: LoginController
 * 类描述: 与微信对接登陆验证
 *
 * @author yuanjun
 * 创建时间:2017年12月5日上午10:52:13
 */
@Slf4j
@RestController
@Api(tags = "接入验证接口")
@RequestMapping(value = "/weChart")
public class WechatController {


    @RequestMapping(value = "/connect", method = RequestMethod.GET)
    public String connect(@RequestParam(value = "signature") String signature,
                          @RequestParam(value = "timestamp") String timestamp,
                          @RequestParam(value = "nonce") String nonce,
                          @RequestParam(value = "echostr") String echostr) {

        log.info("-----开始校验签名-----");
        PrintWriter out = null;
        if (CheckUtil.checkSignature(signature, timestamp, nonce)) {
            log.info("-----签名校验通过-----");
            return echostr;
        } else {
            log.info("-----校验签名失败-----");
            return null;
        }

    }

}
CheckUtil.java
package com.xu.wemall.commons.utils;

import java.util.Arrays;

public class CheckUtil {

    //自己设置,要与微信页面设置的一致
    private static final String token = "xulijun137";

    public static boolean checkSignature(String signature,String timestamp,String nonce){

        String[] str = new String[]{token,timestamp,nonce};
        //排序
        Arrays.sort(str);
        //拼接字符串
        StringBuffer buffer = new StringBuffer();
        for(int i =0 ;i<str.length;i++){
            buffer.append(str[i]);
        }
        //进行sha1加密
        String temp = SHA1.encode(buffer.toString());
        //与微信提供的signature进行匹对
        return signature.equals(temp);
    }

}
SHA1.java
package com.xu.wemall.commons.utils;

import java.security.MessageDigest;

/**
 * 类名称: SHA1
 * 类描述: sha1加密
 *
 * @author yuanjun
 * 创建时间:2017年12月5日上午11:10:01
 */
public final class SHA1 {
    private static final char[] HEX_DIGITS = {'0', '1', '2', '3', '4', '5',
            '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};

    /**
     * Takes the raw bytes from the digest and formats them correct.
     *
     * @param bytes the raw bytes from the digest.
     * @return the formatted bytes.
     */
    private static String getFormattedText(byte[] bytes) {
        int len = bytes.length;
        StringBuilder buf = new StringBuilder(len * 2);
        // 把密文转换成十六进制的字符串形式
        for (int j = 0; j < len; j++) {
            buf.append(HEX_DIGITS[(bytes[j] >> 4) & 0x0f]);
            buf.append(HEX_DIGITS[bytes[j] & 0x0f]);
        }
        return buf.toString();
    }

    public static String encode(String str) {
        if (str == null) {
            return null;
        }
        try {
            MessageDigest messageDigest = MessageDigest.getInstance("SHA1");
            messageDigest.update(str.getBytes());
            return getFormattedText(messageDigest.digest());
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}

?

上面的Token请换成自己的token,在你的【开发】--》【基本配置】中你之前自己配置过的Token,上面的接口的基本思路是获取腾讯服务器发送到四个参数你项目接口的,你对这四个参数做还有token一起5个参数按照公众号提供的文档说明处理后,满足条件后返回其中一个参数即可,具体请看我代码部分,注意这个接口是GET请求方式的,因此得到我们的项目RestAPI接口地址是:http:/localhost:80/weChat/connnect,再看我配置的地址http://r7fkc2.natappfree.cc/weChart/connect

这里显然我们配了一个域名地址http://r7fkc2.natappfree.cc/【这里默认设置的是80端口,80端口可以不写】这是我们利用NATAPP将本地的127.0.0.1映射成的一个外网可访问的域名地址【这里就是我们上一课讲的用NATAPP将本地地址映射成外网地址,不清楚的同学请先学习我的上一课,映射本地地址到外网的工具还有其他的,目前笔者最推荐是NATAPP】,通过这个外网的域名地址,腾讯的服务器可以成功连接到我们的项目,因为你开发的话你的本地地址localhost腾讯微信公众号服务器是不可能认识的( 后续你可以把项目部署到外网服务器上,比如阿里云,百度云,腾讯云服务器上),

至此我们就成功得到这个URL地址了,配置后保存即对我们的接口做合法性验证,验证成功会弹出弹窗框提示你验证成功,否则表示你的接口逻辑处理后返回的字符串不符合接口要求,请修改代码后重新配置验证接口,好了今天的课就讲到这里了,下节课再见,如有问题请给我留言。

相关推荐

《保卫萝卜2》安卓版大更新 壕礼助阵世界杯

《保卫萝卜2:极地冒险》本周不仅迎来了安卓版本的重大更新,同时将于7月4日本周五,带来“保卫萝卜2”安卓版本世界杯主题活动的火热开启,游戏更新与活动两不误。一定有玩家会问,激萌塔防到底进行了哪些更新?...

儿童手工折纸:胡萝卜,和孩子一起边玩边学carrot

1、准备两张正方形纸,一橙一绿,对折出折痕。2、橙色沿其中一条对角线如图折两三角形。3、把上面三角折平,如图。4、绿色纸折成三角形。5、再折成更小的三角形。6、再折三分之一如图。7、打开折纸,压平中间...

《饥荒》食物代码有哪些(饥荒最新版代码总汇食物篇)

饥荒游戏中,玩家们需要获取各种素材与食物,进行生存。玩家们在游戏中,进入游戏后按“~”键调出控制台使用代码,可以直接获得素材。比如胡萝卜的代码是carrot,玉米的代码是corn,南瓜的代码是pump...

Skyscanner:帮你找到最便宜机票 订票不求人

你喜欢旅行吗?在合适的时间、合适的目的地,来一场说走就走的旅行?机票就是关键!Skyscanner这款免费的手机应用,在几秒钟内比较全球600多家航空公司的航班安排、价格和时刻表,帮你节省金钱和时间。...

小猪佩奇第二季50(小猪佩奇第二季英文版免费观看)

Sleepover过夜Itisnighttime.现在是晚上。...

我在民政局工作的那些事儿(二)(我在民政局上班)

时间到了1997年的秋天,经过一年多的学习和实践,我在处理结婚和离婚的事情更加的娴熟,也获得了领导的器重,所以我在处理平时的工作时也能得心应手。这一天我正在离婚处和同事闲聊,因为离婚处几天也遇不到人,...

夏天来了就你还没瘦?教你不节食13天瘦10斤的哥本哈根减肥法……

好看的人都关注江苏气象啦夏天很快就要来了你是否和苏苏一样身上的肉肉还没做好准备?真是一个悲伤的故事……下面这个哥本哈根减肥法苏苏的同事亲测有效不节食不运动不反弹大家快来一起试试看吧~DAY1...

Pursuing global modernization for peaceful development, mutually beneficial cooperation, prosperity for all

AlocalworkeroperatesequipmentintheChina-EgyptTEDASuezEconomicandTradeCooperationZonei...

Centuries-old tea road regains glory as Belt and Road cooperation deepens

FUZHOU/ST.PETERSBURG,Oct.2(Xinhua)--NestledinthepicturesqueWuyiMountainsinsoutheastChi...

15 THE NUTCRACKERS OF NUTCRACKER LODGE (CONTINUED)胡桃夹子小屋里的胡桃夹子(续篇)

...

AI模型部署:Triton Inference Server模型部署框架简介和快速实践

关键词:...

Ftrace function graph简介(flat function)

引言由于android开发的需要与systrace的普及,现在大家在进行性能与功耗分析时候,经常会用到systrace跟pefetto.而systrace就是基于内核的eventtracing来实...

JAVA历史版本(java各版本)

JAVA发展1.1996年1月23日JDK1.0Java虚拟机SunClassicVM,Applet,AWT2.1997年2月19日JDK1.1JAR文件格式,JDBC,JavaBea...

java 进化史1(java的进阶之路)

java从1996年1月第一个版本诞生,到2022年3月最新的java18,已经经历了27年,整整18个大的版本。很久之前有人就说java要被淘汰,但是java活到现在依然坚挺,不知道java还能活...

学习java第二天(java学完后能做什么)

#java知识#...

取消回复欢迎 发表评论: