2018-10-03 10:48:42 qq_41583828 阅读数 7416
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27838 人正在学习 去看看 秦子恒

微信测试公众号 url配置失败的问题的一种解决方法!

话不多说,国庆快乐!
-微信公众号开发使用测试号 一直提示管理失败(类似这个)
借用下别人的图
过程是这样的:

只需要三个步骤就可以搞定     1:在微信的测试公众平台填写服务器地址URL和Token.             
2:在自己的服务器写个简单的controller, 返回微信请求的信息                                                                                 
3:在页面上点击提交 , 微信平台会请求你填写的服务器地址 , 你的服务器正确响应微信的请求
 具体方式如下:第一步主要注意的要点:URL必须
 是外网能够访问到的服务器地址,  而且必须是80端口, 我们大多是本地开发, 如何把内网映射出去呢 ,?这是最麻烦的一点!
					  前往这里这里注册一个:https://www.ngrok.cc/  要仔细看教程  !

仔细看图片
本地测试代码如下:(仅供参考)

package com.imooc.abc;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
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.ResponseBody;
import javax.servlet.http.HttpServletRequest;
    @Controller
    @RequestMapping("/abc")
    public class GetWxSginController {

        private  Logger logger = LoggerFactory.getLogger(GetWxSginController.class);

        @ResponseBody
        @RequestMapping(value = "/test", method = RequestMethod.GET, produces = { "application/json;charset=utf-8" })
        public String getWxUserInfo(HttpServletRequest request,
                                   @RequestParam(required = false) String echostr,
                                          @RequestParam(required = false) String signature,
                                    @RequestParam(required = false) String timestamp,
                                    @RequestParam(required =false) String nonce
        ) {
            try {
                //只需要把微信请求的 echostr, 返回给微信就可以了
                logger.info("测试来过===================" + echostr);
                logger.info("测试来过===================" + signature);
                logger.info("测试来过===================" + timestamp);
                logger.info("测试来过===================" + nonce);
                return echostr;
            } catch (Exception e) {
                logger.info("测试微信公众号的接口配置信息发生异常:", e);
                return "错误!!!";
            }

        }
    }

前往公众号测试成功:
成功界面

控制台会输出:
在这里插入图片描述

要注意:不成功就断掉wifi使用网线!
不成功的小伙伴尝试下这个:https://blog.csdn.net/qq_34096082/article/details/79985141
不成功多找找方法,今天你看到的都是别人无数个日夜找到的解决方法!

2018-12-26 14:35:41 lxc_yinfengpolang 阅读数 674
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27838 人正在学习 去看看 秦子恒

这段时间研究微信公众号,发现了很多坑,现在贴出来做个记录

1、微信公众号在做开发的时候,首先就是对微信的服务接口的配置。让微信能够响应我们的接口。官方的接口文档吧可以这么说,你懂的或者了解他了吧可以说简单些,但是当你刚接触的时候,你会感觉写的是啥啊,压根看不懂。

好了步入正题

首先接口配置,这个就不多说了,图上标的很清楚

这个配置好了就是后台接收微信的 验证参数了先来看看微信对这个接口的说明吧

就四个参数,你需要对这几个参数进行加解密啊等操作,然后确认是不是微信发送来的请求,完事后,看到图片上标红的地方了吧,原样返回。

1、什么是原样返回,我接收的string类型,那么我这个接口返回spring类型就ok了,但是问题来了 验证token是吧

2、继续怀疑微信发来的参数都是加密的,需不需要给他解密下返回原来样子了(猜想,但是我明显勾选的的是明文啊),还是token验证失败

3、换个思路,是不是我这就return这种echostr不对了。那就像原来最老的那种返回,咱们把参数直接write到response里面

上图

@GetMapping("/welcome")
  public void checkName(@RequestParam(name = "signature") String signature,
                        @RequestParam(name = "timestamp") String timestamp,
                        @RequestParam(name = "nonce") String nonce,
                        @RequestParam(name = "echostr") String echostr,
                        HttpServletResponse response) throws IOException, AesException {
      System.out.println("-----------------------开始校验------------------------");
      //排序
      String sortString = CheckoutUntil.sort(TOKEN, timestamp, nonce);
      //加密
      String myString = CheckoutUntil.sha1(sortString);
      //校验
      if (myString != null && myString != "" && myString.equals(signature)) {
          System.out.println("签名校验通过");
          //如果检验成功原样返回echostr,微信服务器接收到此输出,才会确认检验完成。
          PrintWriter out = null;
          try {
              out = response.getWriter();
              // 通过检验signature对请求进行校验,若校验成功则原样返回echostr,否则接入失败
              out.print(echostr);
          } catch (IOException e) {
              e.printStackTrace();
          } finally {
              out.close();
          }
      }

这样返回,发现验证成功了。

网上的说法五法八门的,有的说是要返回xml文本,有的说返回的格式不对,还有的说返回的编码格式不对。最后这种直接写的方法我是配置成功了。后来有人问我为啥一直配置失败,我把我的这个给他,反正他也成功了,记录下。你要成功了点个赞吧哈哈哈 

 

 

2018-09-27 12:29:32 a909422229 阅读数 935
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27838 人正在学习 去看看 秦子恒

一、打开微信公众号管理界面

本人使用的springboot项目地址:https://github.com/binarywang/weixin-java-mp-demo-springboot

使用微信公众号开发可以用该项目,配置一下即可,很简单的配置。

鼠标滑到最底部的《开发–基本配置》 

点击我要成功开发者。

二、 填写相关服务器配置信息:

A.需要设置开发者密码,点就开启,扫码一下即可。

B.需要注意的是,验证token只能支持80端口或者443端口,其他端口不支持。

URL:填写服务器的域名地址

token:自己定义链接,其他无所谓,明文与兼容都可以。

三、打开公众号设置,配置一下你的服务器域名,注意一个月只能修改三次。

点击设置:配置域名,注意需要验证一下,下载文件,创建一个项目,复制到项目中,如果通过域名可以访问到该文件,则就可以通过验证。其他两个也是这个流程。即可全部通过验证。

四、通过之后就可以了。还有更加简单的方式进行测试配置是否可以用。点击开发者工具

点击公众平台测试账号:与上面配置基本相同,只不过不需要配置过多的链接,扫描二维码即可关注测试。

五、最后一定要记得,配置服务器完成后,点击启动。否则没有效果的。测试的时候无所谓。会有启动的延迟,不会立马生效,本人遇到了一次这个问题,一直接收不到消息,后来发现是这个问题,晚上配置完后睡了一觉,早上启动项目就可以接收了。

晕~有问题留言或者联系。

下一篇:对微信公众号接收消息进行回复

2019-05-29 22:40:09 doukalove 阅读数 917
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27838 人正在学习 去看看 秦子恒

在对接微信公众号中,一直提示配置失败,该填写的都填写了,也对了好几遍,还是配置失败,最后自己翻阅了一下官方文档终于解决了。
在这里插入图片描述原来是如果此次GET请求来自微信服务器,则原样返回echostr参数内容,即可验证成功了
在这里插入图片描述
代码两种返回方法
第一种在文件的开头直接返回 echo $_GET[‘echostr’]; 即可

echo $_GET['echostr'];exit;

第二种使用PHP类库的那种写法
原文件内容

define("TOKEN",'weixin');
$wechatObj = new wechatCallbackapi();
wechatObj->valid();

需要注意的是验证申请时,请不要调用

$wechatObj->responseMsg();

此处需要在前面加上

$wechatObj->valid();exit;
$wechatObj->responseMsg();

并截止运行exit();或者直接干脆改成为$wechatObj->valid(),因为微信验证服务器信息,待验证通过后,就可以随意的调用任何函数方法了。

2014-05-28 10:58:34 ljz0898 阅读数 25287
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27838 人正在学习 去看看 秦子恒

配置URL的时候老提示失败,如下图:





解决的办法是:由于我的WSServlet的doGet()方法里面没有返回微信请求的随机字符串 ,在doGet里面添加如下代码 就可以


              // 微信加密签名  
       String signature = request.getParameter("signature");  
       // 时间戳  
       String timestamp = request.getParameter("timestamp");  
       // 随机数  
       String nonce = request.getParameter("nonce");  
       // 随机字符串  
       String echostr = request.getParameter("echostr");  
 
       PrintWriter out = response.getWriter();  
       out.print(echostr);



没有更多推荐了,返回首页