精华内容
下载资源
问答
  • .net 第四步:消息推送配置日志 url服务器地址即为:域名+文件夹名+wecheck.php(第一步建立的文件名),Token令牌、encodingAesKey与第2、三步对应,提交以后便可成功,有的会提示token验证失败,可能路径或者token...

    第一步:官网下载对应版本的cryptoDemophp

    下载地址:https://wximg.gtimg.com/shake_tv/mpwiki/cryptoDemo.zipjson

    第二步:建立检查文件wxcheck.php小程序

    这个文件名能够随便命名,要保证url中检查的文件名与之相同便可。服务器

    printLog(json_encode($_GET));

    $signature = $_GET["signature"];

    $timestamp = $_GET["timestamp"];

    $nonce = $_GET["nonce"];

    $echostr = $_GET["echostr"];

    $token = "medisum";

    $tmpArr = array($token, $timestamp, $nonce);

    sort($tmpArr, SORT_STRING);

    $tmpStr = implode( $tmpArr );

    $tmpStr = sha1( $tmpStr );

    printLog("tmpStr:".$tmpStr);

    printLog("signature:".$signature);

    if( $tmpStr == $signature ){

    echo $echostr;

    }else{

    echo false;

    }

    /**

    * 打印数据

    * @param string $txt 日志记录

    * @param string $file 日志目录

    * @return

    */

    function printLog($txt="",$file="ceshi.log"){

    $myfile = fopen($file, "a+");

    $StringTxt = "[".date("Y-m-d H:i:s")."]".$txt."\n";

    fwrite($myfile, $StringTxt);

    fclose($myfile);

    }

    ?>

    文件内容如上,其实这就是微信接入指导的第二步,这里只是改了下形式。微信

    33f19381b96c7694ecec4a6605e37ec3.png

    注意:$token的值须要与配置中的一致。app

    第三步:修改demo.php中对应的值测试

    encodingAesKey、token、appId这几个值最好填写为你小程序及配置中对应的值,其实我也没测试有没有影响,但仍是这样作了。

    url

    第2、三步完成以后,将wecheck.php这个文件放到demo.php同级的目录下,并将整个文件夹放到服务器的public目录下(个人域名指向是public目录,因此放在这里,各位根据本身的域名指向目录进行更改便可)。.net

    第四步:消息推送配置日志

    57a0e4856da5beb3925f1941b9690106.png

    url服务器地址即为:域名+文件夹名+wecheck.php(第一步建立的文件名),Token令牌、encodingAesKey与第2、三步对应,提交以后便可成功,有的会提示token验证失败,可能路径或者token配置不正确,检查修改后应该没问题,自行百度,按照我这种方式应该是没问题的。

    第五步:提供与官网同步的cryptoDemo的PHP版本,无毒无害

    下载连接:https://download.csdn.net/download/dmt742055597/10403220

    **************************************只要思想不滑坡,办法总比困难多***************************************

    展开全文
  • 启用并设置消息推送配置后,用户发给小程序的消息以及开发者需要的事件推送,都将被微信转发至该服务器地址中,下面我就来看下这是怎么配置的。这是我自己配置的案例效果图。我在自己的服务器根目录定义api.php文件...

    为丰富小程序的服务能力,提高服务质量,微信为小程序提供客服消息能力,以便小程序用户可以方便快捷地与小程序服务提供方进行沟通。启用并设置消息推送配置后,用户发给小程序的消息以及开发者需要的事件推送,都将被微信转发至该服务器地址中,下面我就来看下这是怎么配置的。这是我自己配置的案例效果图。

    1501642230626197.png

    我在自己的服务器根目录定义api.php文件,URL填写的地址为http://www.100txy.com/api.php,文件api.php具体的代码如下<?php

    define("TOKEN","100txy");// 后台填写的token

    $wechatObj = new wechatAPI();

    $wechatObj->isValid();

    class wechatAPI

    {

    public function isValid()//验证微信接口,如果确认是微信就返回它传来的echostr参数

    {

    $echoStr = $_GET["echostr"];

    if ($this->checkSignature()) {

    echo $echoStr;

    exit;

    }

    }

    private function checkSignature(){ //官方的验证函数

    $signature = $_GET["signature"];

    $timestamp = $_GET["timestamp"];

    $nonce = $_GET["nonce"];

    $token = TOKEN;

    $tmpArr = array($token, $timestamp, $nonce);

    sort($tmpArr, SORT_STRING);

    $tmpStr = implode( $tmpArr );

    $tmpStr = sha1( $tmpStr );

    if( $tmpStr == $signature ){

    return true;

    }else{

    return false;

    }

    }

    };

    这样配置后提交就能启用成功!

    展开全文
  • C# .Net 小程序消息推送配置+详细代码 首先在微信公众平台登录小程序账号    第一步登陆    登录后,在首页-功能-订阅信息,打开后如未进行配置,需要进行后台配置。   &...

    C# .Net 小程序消息推送配置+详细代码


    首先在微信公众平台登录小程序账号
        第一步登陆
       登录后,在首页-功能-订阅信息,打开后如未进行配置,需要进行后台配置。
        第二步:填写服务器配置
       登录微信公众平台官网后,在公众平台官网的开发-基本设置页面,勾选协议成为开发者,点击“修改配置”按钮,填写服务器地址(URL)、Token和EncodingAESKey,其中URL是开发者用来接收微信消息和事件的接口URL。Token可由开发者可以任意填写,用作生成签名(该Token会和接口URL中包含的Token进行比对,从而验证安全性)。EncodingAESKey由开发者手动填写或随机生成,将用作消息体加解密密钥。
       同时,开发者可选择消息加解密方式:明文模式、兼容模式和安全模式。模式的选择与服务器配置在提交后都会立即生效,请开发者谨慎填写及选择。加解密方式的默认状态为明文模式,选择兼容模式和安全模式需要提前配置好相关加解密代码。
        第三步:验证消息的确来自微信服务器
       开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带参数如下表所示:

    参数描述
    signature微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
    timestamp时间戳
    nonce随机数
    echostr随机字符串

       开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下:
    1)将token、timestamp、nonce三个参数进行字典序排序
    2)将三个参数字符串拼接成一个字符串进行sha1加密
    3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
       检验signature的C#示例代码(本人自己写):

     		public void ProcessRequest(HttpContext context)
            {
                HttpRequest request = context.Request;
                HttpResponse response = context.Response;
                Dictionary<string, string> dictionary = new Dictionary<string, string>();
                dictionary.Add("timestamp", request["timestamp"]);
                dictionary.Add("nonce", request["nonce"]);
                dictionary.Add("Token", "自己设置的token");
                dictionary = dictionary.Where(a => !string.IsNullOrEmpty(a.Value)).OrderBy(b => b.Value).ToDictionary(c => c.Key, c => c.Value);//进行排序
                StringBuilder builder = new StringBuilder();
                foreach (var v in dictionary)
                {
                    builder.Append(v.Value);
                }
                string echostr = request["echostr"];
                //验证成功返回微信请求的随机字符串
                if(request["signature"]== SHA1(builder.ToString()).ToLower())
                {
                    response.Write(echostr);
                    log.Info("验证成功,返回=" + echostr);
                }
                else
                {
                    response.Write(false);
                    log.Info("验证失败");
                }
                response.End();
            }
            /// <summary>
            /// SHA1 加密
            /// </summary>
            /// <param name="content">需要加密字符串</param>
            public string SHA1(string content)
            {
                return SHA1(content, Encoding.UTF8);
            }
            /// <summary>
            /// SHA1 加密
            /// </summary>
            /// <param name="content">需要加密字符串</param>
            /// <param name="encode">指定加密编码</param>
            public string SHA1(string content, Encoding encode)
            {
                try
                {
                    SHA1 sha1 = new SHA1CryptoServiceProvider();
                    byte[] bytes_in = encode.GetBytes(content);
                    byte[] bytes_out = sha1.ComputeHash(bytes_in);
                    sha1.Dispose();
                    string result = BitConverter.ToString(bytes_out);
                    result = result.Replace("-", "");
                    return result;
                }
                catch (Exception ex)
                {
                    log.Info("SHA1加密出错:" + ex.Message);
                    return "";
                }
            }
    

       成功返回微信服务器后,即可申请模板-点击选用-选择所需内容点击提交(如下图)。
    图一
    图二

       接入配置结束,具体请看官方文档–小程序开发接入文档
       C#接口代码
       第一步,获取token

    		//token实体类
     		public class AccessToken
            {
                public string access_token { get; set; }
                public int expires_in { get; set; }
            }
            //获取微信token
            private string Exe_Access_token()
            {
                string appid = "小程序的appid";
                string secret = "小程序的秘钥";
                HttpResponse Response = HttpContext.Current.Response;
                JavaScriptSerializer serializer = new JavaScriptSerializer();
                string access_token = string.Empty;
                AccessToken accesstoken = (AccessToken)serializer.Deserialize(HttpPostRequest("https://api.weixin.qq.com/cgi-bin/token", 
                    "grant_type=client_credential&appid=" + appid + "&secret=" + secret), typeof(AccessToken));//请求微信服务器
                HttpCookie cookie_access_token_create = new HttpCookie("access_token", HttpUtility.UrlEncode(accesstoken.access_token));//创建Cookie
                cookie_access_token_create.Expires = DateTime.Now.AddSeconds(accesstoken.expires_in);
                Response.AppendCookie(cookie_access_token_create);
                access_token = accesstoken.access_token;
                return access_token;
            }
            //post请求方法
            public static string HttpPostRequest(string path, string parameter)
            {
                string result = string.Empty;
                try
                {
                    byte[] b = Encoding.UTF8.GetBytes(parameter);
                    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(path);
                    request.Method = "POST";
                    request.ContentType = "application/x-www-form-urlencoded";
                    request.ContentLength = b.Length;
                    using (Stream s = request.GetRequestStream())
                    {
                        s.Write(b, 0, b.Length);
                    }
                    using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                    {
                        using (StreamReader sr = new StreamReader(response.GetResponseStream()))
                        {
                            result = sr.ReadToEnd().Trim();
                        }
                    }
                }
                catch
                {
                    result = string.Empty;
                }
                return result;
            }
    

       第二步,请求发送

    private void WxNotification(HttpRequest request)
            {
                string openid = request["openid"];//此处openid是用户的openid
                string http = HttpPostRequest("https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" + Exe_Access_token(),
                    "{\"touser\":\"" + openid + "\"," +
                   "\"template_id\":\"pr8jhwtQ\"," + //template_id就是申请的模板ID
                    "\"data\":" +
                    "{\"character_string1\":{\"value\":\"Dy202109261714\"}," + //分别对应申请的模板详细内容
                    "\"phrase2\":{\"value\":\"打包中\"}," +
                    "\"date3\":{\"value\":\"" + DateTime.Now.ToString() + "\"}" +
                    "}}");
                log.Info(http);
            }
    

       模板内容如下图所示
    在这里插入图片描述

       最后一步-小程序代码
       页面代码

    <view>
          <button bindtap="testbutton">确认下单</button>
    </view>
    

       Js代码

    testbutton:function(){
        wx.requestSubscribeMessage({
          tmplIds: ['4pr8jhwtQ'],//申请的模板id
          success (res) {
          	//reject 用户取消 accept 用户同意
            if(res.rZPwDiPjoS7yaY3QlWFENS8lirpPaMbFFE4pr8jhwtQ=="accept"){
              wx.request({
                url: '',//上面服务器配置的域名
                data:{
                  openid:openid//用户的openid
                },
                header: {
                  'Content-Type': "application/x-www-form-urlencoded",
                },
                method: "POST",
                success:function(req){
                
                }
              })
            }
           }
        })
      }
    

       最后调试结果如下:
    在这里插入图片描述
    在这里插入图片描述
    小程序订阅消息官方文档

    展开全文
  • 之前一直报 token 错误小程序配置消息推送,微信服务器会发送验证@RequestMapping(method = RequestMethod.GET) @ResponseBody public void get(HttpServletRequest request, HttpServletResponse response) throws ...

    3022386d51200f8710d6c088dc528f27.png

    配置小程序消息推送。

    cb0e9cb93fd2260c63f3fa92e0b6d858.png

    之前一直报 token 错误

    小程序配置消息推送,微信服务器会发送验证@RequestMapping(method = RequestMethod.GET)    @ResponseBody    public void get(HttpServletRequest request, HttpServletResponse response) throws Exception{              // 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。          String signature = request.getParameter("signature");          // 时间戳          String timestamp = request.getParameter("timestamp");          // 随机数          String nonce = request.getParameter("nonce");          // 随机字符串          String echostr = request.getParameter("echostr");                        PrintWriter out = null;        try {            out = response.getWriter();            // 通过检验signature对请求进行校验,若校验成功则原样返回echostr,否则接入失败            if (SignUtil.checkSignature(signature, timestamp, nonce)) {                out.print(echostr);              out.flush();   //这个地方必须画重点,消息推送配置Token令牌错误校验失败,搞了我很久,必须要刷新!!!!!!!          }       } catch (IOException e) {            e.printStackTrace();        } finally {            out.close();            out = null;             }      }

    验证签名是否正确

    /**      * 验证签名      * @param signature      * @param timestamp      * @param nonce      * @return      */      public static boolean checkSignature(String signature, String timestamp, String nonce) {          //与token 比较        String[] arr = new String[] { TOKEN, timestamp, nonce };          // 将token、timestamp、nonce三个参数进行字典排序          Arrays.sort(arr);                 StringBuilder content = new StringBuilder();                  for (int i = 0; i arr.length; i++) {              content.append(arr[i]);          }                MessageDigest md = null;          String tmpStr = null;            try {              md = MessageDigest.getInstance("SHA-1");                          // 将三个参数字符串拼接成一个字符串进行sha1加密            byte[] digest = md.digest(content.toString().getBytes());            tmpStr = byteToStr(digest);         } catch (NoSuchAlgorithmException e) {              e.printStackTrace();          }          content = null;          // 将sha1加密后的字符串可与signature对比          return tmpStr != null ? tmpStr.equals(signature.toUpperCase()) : false;      }

    使用的工具方法/**      * 将字节数组转换为十六进制字符串      *       * @param byteArray      * @return      */      private static String byteToStr(byte[] byteArray) {          String strDigest = "";          for (int i = 0; i byteArray.length; i++) {              strDigest += byteToHexStr(byteArray[i]);          }          return strDigest;      }        /**      * 将字节转换为十六进制字符串      *       * @param mByte      * @return      */      private static String byteToHexStr(byte mByte) {          char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };          char[] tempArr = new char[2];          tempArr[0] = Digit[(mByte 4) & 0X0F];          tempArr[1] = Digit[mByte & 0X0F];            String s = new String(tempArr);          return s;      }

    展开全文
  • 网上借个图 按微信要求:确认此次GET请求来自微信服务器,则原样返回echostr参数内容 都按要求来了,但怎么都不行,总是提示:Token校验... } } 接下来再测试下提交“消息推送”!!! 成功!!! Author: shirdonliao
  • ThinkPHP6 微信小程序消息推送配置时报错: {“ret“:200302,“err_msg“:“verify token fail“} 贴一下我的代码: 控制器 class Message { public function wxCustomerPush() { $requestMethod = request()->...
  • 钉钉消息推送配置

    2021-08-08 03:09:04
    # 一、钉钉设置*****要想进行钉钉消息推送,需要先配置钉钉的开发者信息,流程如下:* 第1步:登录会否管理端,点击系统管理->开发者信息管理;![]...
  • 普通的订阅消息只能发送一次,你会不会很纠结、很痛苦呢!后面有彩蛋 代码: // 验证token function verifyToken(){ $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; ...
  • 可以正常访问PHP代码如下:/*** wechat php test*///define your tokendefine("TOKEN...$wechatObj = new wechatCallbackapiTest();$wechatObj->valid();class wechatCallbackapiTest{public function valid(){$e...
  • 在做小程序的一个功能的时候 我们需要用到消息推送 服务器ip,域名什么的都配置好了,但示token就是报错 下面的代码复制带走 修改一下配置就可以了,(大部分也是百度的,在这里做个笔记整合一下) 上图红线部分后面的...
  • 本文实例为大家分享了php微信模板消息推送的具体代码,供大家参考,具体内容如下1.微信公众号模板消息配置2.PHP代码/*** 发送模板消息*/public function send_notice(){//获取access_tokenif ($_COOKIE['access_...
  • 设置推送url接口

    2021-08-08 09:54:31
    ## 设置推送url接口请求地址:`https://open-api.10ss.net/oauth/setpushurl`请求方式:POST### 所需参数|名 称|类 型|描 述||----|----|----||client_id|string|开发者的应用ID,在[开放平台](https://dev.10ss.net)...
  • 实现效果:下面要显示五个字段 接下来,参照官方文档,一步步实现:一、官方给出请求示例、返回示例 二、根据上面编写实体类(1)请求参数@.../*** 所需下发的模板消息的id*/private String template_id;/*** 点击模...
  • 微信小程序消息推送 java后端 参考:https://blog.csdn.net/CodeWu/article/details/91491310 https://blog.csdn.net/qiushi_1990/article/details/8262539 注意上述文章中推送消息请求路径已过时改为订阅消息 详情...
  • 消息推送

    2021-03-25 12:00:03
    # 消息推送接入微信小程序消息推送服务,可以两种方式选择其一:# 开发者服务器接收消息推送开发者需要按照如下步骤完成: 填写服务器配置验证服务器地址的有效性据接口文档实现业务逻辑,接收消息和事件# 第一步:...
  • 模板消息通知配置

    2021-03-23 11:53:36
    本文分为以下三个部分:申请模板消息权限开发模板消息SDK构造模板消息体并发送一、申请模板消息权限模板消息的申请需账号已经开通微信支付权限。在微信公众平台的后台,依次进入“功能->添加功能插件->模板...
  • Golang 消息推送系统

    2021-08-02 06:51:06
    ## Golang 消息推送系统- 使用 websocket 协议,实现全局推送,和分房间推送,实现用户加入房间,退出房间- gateway 长连接网关服务器,管理全部的链接,以及房间等相关操作- logic 逻辑服务器 管理发送全局推送,...
  • java实现后台服务器消息推送

    千次阅读 2021-02-12 10:54:11
    } //接收到消息的回调方法 websocket.onmessage = function(event) { alert("接收到消息的回调方法") alert("这是后台推送消息:"+event.data); websocket.close(); alert("webSocket已关闭!") } //连接关闭...
  • ios消息推送

    2021-08-06 09:34:48
    之前一篇说了ios推送证书的生成。这是开发推送的基础环境。这次介绍的是怎么去开发。来几句废话:苹果的推送相比于安卓的推送,显得更加清晰,简明许多。首先不必考虑那么多厂商配置,其次苹果的送达率要比安卓高,...
  • uni-push消息推送配置和实战Uni-app消息推送一、介绍二、整体架构三、消息类型四、实战第一步:开通UniPush推送服务第二步:开通UniPush推送服务 Uni-app消息推送 一、介绍 uni-app 提供了 uni push 服务,这是一个...
  • 集成uniPush消息推送1. 安装依赖2.在项目的yml文件里增加配置3.创建配置类4.编写工具类5.测试 1. 安装依赖 推荐通过Maven来管理项目依赖,您只需在项目的pom.xml文件中声明如下依赖 <dependency> <...
  • 小程序在开发消息推送时需要先申请模板,第一次申请的时候需要配置一些参数 1、配置服务器URL、Token、秘钥、加密方式、数据格式 Token是做校验用的,秘钥随机生成就行、加密方式就不说了、数据格式按照各自喜好吧...
  • 2.yml中增加小程序和公众号id及消息模板配置 3.增加配置类 @Data @Component @ConfigurationProperties() public class WxMiniConfigVo { /**小程序appid*/ @Value("${wxmini.id}") private String ...
  • 消息推送服务

    2021-08-12 11:40:38
    消息推送服务 内容精选换一换连接器是AppCube提供的调用第三方服务的集成工具。AppCube封装了不同类型的连接器对接相应的第三方服务,如OBS、MINIO、Redis、云搜索、OCR、智能边缘平台、SMS、华为消息推送服务、华为...
  • 本文将从推送权限申请,到本地和远程消息推送,再到 App 对推送消息的处理等多个步骤,详细介绍 iOS 中消息推送的工作流程。文章作者:赵哲,腾讯游戏运营研发工程师。一、概述消息推送是一种 App 向用户传递信息的...
  • .p12推送证书创建 登录苹果开发者后台,点击进入Certificates, Identifiers & Profiles,选择Certificates 如果之前没有创建过appid,先点击+号创建 创建的时候记得勾选Push Notifications功能(后续创建就不做...
  • 1、钉钉机器人配置 首先,钉钉上添加自定义机器人,步骤如下。钉钉-群-设置-添加机器人-自定义机器人 1.1机器人设置 机器人添加完成后,生成如下图中1、2两个重要设置。稍后会用在 Jenkins 中的配置,建议...
  • web应用打包app 消息推送 内容精选换一换借助以下移动推送平台可将移动应用消息推送到移动终端设备:适用于iOS的Apple Push Notification Service(APNS)Huawei Mobile Services(HMS)集成移动推送功能(如集成HMS)的...
  • uni-app消息推送方案

    2021-03-22 19:28:44
    一、引言uni-app是支持消息推送的,参考如下文档:二、效果三、需求不同角色的用户登陆App,收到不同的待办提醒。即谁处理这个待办任务,谁会收到这个提醒。对不同角色的用户推送待办消息四、方案步骤4.1 查看个推...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 235,873
精华内容 94,349
关键字:

消息推送配置