微信接入指南进入开发者模式

问题描述(应用场景):

实现通过代码控制公众号自定义菜单、主动回复消息、被动回复消息、发送模板消息、发送客服消息、获得微信事件推送等自定义功能与业务逻辑。

步骤:登录微信公众号平台--->开发---->基本配置(红色遮盖部分未服务器域名)

 对应的服务端接口(get请求)

@Api(value = "微信管理",tags = "微信管理")
@RestController
@RequestMapping(value = "/wx")
public class WxManageController {

    //开发者自定义token
    private static String token = "zidingyidetoken";

    @ApiOperation(value = "验签")
    @GetMapping(value = "/wechat")
    public String validate(WxSignParam wxSignParam){
        String[] arr = new String[] { token, wxSignParam.getTimestamp(),                 wxSignParam.getNonce() };
        // 将token、timestamp、nonce三个参数进行字典序排序
        sort(arr);
        StringBuilder content = new StringBuilder();
        for (int i = 0; i < arr.length; i++) {
            content.append(arr[i]);
        }
        // 进行sha1加密
        String str = Sha1(content.ToString());
        if(StringUtils.isEmpty(str)) return null;
        //开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
        return str.toLowerCase().equals(wxSignParam.getSignature())?wxSignParam.getEchostr() : null;
    }

    //按照字典排序
    private static void sort(String a[]) {
        for (int i = 0; i < a.length - 1; i++) {
            for (int j = i + 1; j < a.length; j++) {
                if (a[j].compareTo(a[i]) < 0) {
                    String temp = a[i];
                    a[i] = a[j];
                    a[j] = temp;
                }
            }
        }
    }

        // 字符串进行sha1加密
        public static string Sha1(string str)
        {
             var buffer = Encoding.UTF8.GetBytes(str);
             var data = SHA1.Create().ComputeHash(buffer);
 
             var sb = new StringBuilder();
             foreach (var t in data)
             {
                 sb.Append(t.ToString("X2"));
             }
            
            return sb.ToString();
         }
}
// 接收的参数实体 WxSignParam
@Data
@ApiModel(value = "验签参数")
public class WxSignParam {
    @ApiModelProperty(value = "微信传来的签名")
    private String signature;

    @ApiModelProperty(value = "时间戳")
    private String timestamp;

    @ApiModelProperty(value = "微信发来的随机数")
    private String nonce;

    @ApiModelProperty(value = "微信发来的验证字符串")
    private String echostr;

}
// 备注:代码的实现就不分层了,直接在controller层实现了,有需要的根据具体情况自己分层

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值