微信接口开发_微信开发接口 - CSDN
精华内容
参与话题
  • 微信接口开发流程

    2019-06-17 21:17:37
    2019独角兽企业重金招聘Python工程师标准>>> ...


       选好一个可以嵌入微信接口开发权限的系统。理论上讲,所有的系统都是可以用来做微信接口的二次开发的,只要具备用户管理功能的系统。因为开发之后,还会涉及到一些微信的管理。我这里选取了onethink作为原始承载模板,用这个主要是基于以下考虑:tp3.2的框架,比较容易上手进行开发,在短时间内,越快开发出一个版本对我们越有利,拥有的功能很基础,功能基础,说明了可以进行大幅度改变开发。
       这里对onethink的系统进行介绍下,可以发现的是对于绝大部分的系统,其实都可以从这套简单的系统演化过去,比如开始写的分销系统,api接口,一般的博客系统,包括电商系统。引入了钩子的概念,是tp官方推出的一个样板应用。
       目录结构
       Addons 钩子
       Application 项目目录
       Data  文档目录
       Runtime  运行的时候的目录
       Thinkphp  Tp的核心目录
       Uploads  上传目录
       index.php  入口
       install.php  安装文件
       
       然后需要跳转到https://mp.weixin.qq.com去注册一个帐号(微信开发者平台,需要进行身份认证)可以获取到一个AppID(应用ID)和一个AppSecret(应用密钥)。获取其他所有的信息之前,需要获取到对应的token(token是每个开发者平台与对应的公众号唯一的识别码) https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
      因为token的获取次数每天有上限2000(而且token的有效期是2小时),读取到token之后,需要将其储存到某个地方(文件,数据库,缓存里面都可以)因为初期的读取量不大,我将其放在Runtime文件夹里面,直接用token.php命名。

      为了更加方便内部和微信端进行调用开发,封装了一个直接调用接口的方法,读取微信的api和token,需要用json_encode($data)进行
      public  function    getWeiXinData($key,$data) {
             $url=$this->getWeiXinApi($key).$this->getWeixinToken();;
              $data = json_encode($data);      
              $listArr = json_decode(post($url,$data),true);
              if($listArr['errcode']!=0) {
                 $this->refreshTokenFile();
              }
              return      $listArr;       
        }

    读取到了对应的数据后,需要进行其他的业务逻辑处理。(例如需要把优惠券进行进行列表处理)
     $data = array("offset"=>0,"count"=>10)  ;
              $res1 =   $this-> getWeiXinData("cardBatchGet",$data);     
              $cardNum =count($res1['card_id_list']);
               for($i=0;$i<$cardNum;$i++) {
                     $data =array("card_id"=>$res1['card_id_list'][$i]);
                     $cardinfo =  $this-> getWeiXinData("cardGet",$data);
                     $list[]= $cardinfo['card'];
               }
     当然也可以进行其他的处理

    转载于:https://my.oschina.net/xiongyuanliang/blog/537303

    展开全文
  • 但也不可能把微信所有的api开发接口讲完, 因为微信每过一段时间, 就会推出新的api接口, 你可以实现更多新功能, 还有可能微信把一些接口进行修改或者取消。 作为一个优秀的微信...

    虽然子恒老师已经出品了100多部微信公众号开发的视频教程,

    但也不可能把微信所有的api开发接口讲完,

    因为微信每过一段时间,

    就会推出新的api接口,

    你可以实现更多新功能,

    还有可能微信把一些接口进行修改或者取消。


    13kanwendang.jpg


    作为一个优秀的微信开发人员,

    你必须学会看微信的开发文档。


    这一点对大部分刚接触公众号开发的人来说,

    感觉到很难,

    因为开发环境的原因,

    或者文档说明不够详细,


    子恒老师在这一节微信开发视频教程中告诉你怎么看公众号开发文档…

    怎么看微信公众号开发文档视频教程在线观看

    http://edu.csdn.net/course/detail/2586/40531

    展开全文
  • 微信开发之发送消息接口

    万次阅读 2016-12-25 21:36:18
    本文将基于Java语言以及个人微信测试号,说明被动回复、客服消息接口以及模板消息接口的使用实现,群发接口并未涉及。 1. 被动回复 被动回复只能应用于在接收到用户的互动数据之后,才能向用户发送消息。这一部分...

    发送消息,是指用户公众号向用户发送相应形式的消息。根据微信开发文档,由以下四种形式:被动回复,群发接口,客服消息接口以及模板消息接口。本文将基于Java语言以及个人微信测试号,说明被动回复、客服消息接口以及模板消息接口的使用实现,群发接口并未涉及。
    1. 被动回复
    被动回复只能应用于在接收到用户的互动数据之后,才能向用户发送消息。这一部分较为简单,正式进行微信开发的第一步就是,在公众号中基本配置->服务器配置中设置URL(服务器地址)时,这时该URL链接指定的地址就是对应着Java Web下的一个Servlet,配置好对应的Token及相关参数之后,则微信服务器将会将所有的用户与公众号的互动信息都转发到该Servlet,然后开发者根据接收到的用户互动数据,再进行处理。所谓的被动回复,就是在该Servlet中判断接收到你指定的消息时(例如某个字眼),则直接将想要回复的消息打包成官方指定的XML数据格式,写回到输出流中即可。在这里不过过多解释,如下示例代码:

    response.getWriter().write( MessageUtil.MessageToXML(new TextMessage.Builder(fromUserName,toUserName,new Date().getTime(),"最新资讯请查看下方微信菜单栏,谢谢您的关注").build()));

    2.客服消息接口
    客服消息接口,应用于公众号主动向特定用户(必须满足该用户在48小时内与公众号有交互)发送特定格式的消息,应用场景例如:用户在微页面上完成了抽奖,而这时候公众号主动向用户推送中奖信息。所回复的不同消息的格式,参见开发者文档,下面以回复文本消息作为示例,需要注意的是推送的消息data必须满足json格式,请求类型为post。返回的json数据中,若errorcode为0,则代表推送成功。

     //推送中奖消息
            String data = "{"+
                    "\"touser\":\""+openid+"\","+
                    "\"msgtype\":\"text\","+
                    "\"text\":"+
                    "{"+
                    "\"content\":\""+content+"\""+
                    "}"+
                    "}";
            System.out.println(data);
            String reMsg0 = UrlReqUtil.post("https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token="+access_token,data);
            JSONObject jsonObject = JSONObject.fromObject(reMsg0);
            if(0 != (Integer) jsonObject.get("errcode")) throw new RuntimeException("通知用户失败");

    3.模板消息接口
    模板消息接口的使用场景大体与客服消息接口一致,只是不需要证明对象用户“在线”,即48小时内与当前公众号有交互记录,因而应用范围更为广泛。在具有权限的服务号中使用该接口时,需要向系统申请对应模板,并得到模板号,作为调用凭据。在测试号环境下,则需要自定义模板。例如:
    这里写图片描述
    其中模板内容需要严格遵循指定的格式,即在需要调用才填入的变量值的定义方式为:{{xxxx.DATA}},其中“xxxx”为调用时对应的字段名。
    以下是调用代码:jsonData数据部分遵循json数据格式。
    其中touser:为用户在该公众号下的openid
    template_id:为模板id
    对于每个字段,包含两个值,一是value,即填入模板的具体值;二是color,即对应的字体颜色。
    请求方式为post,判断是否成功同样是依据errcode字段,为0则成功。

            //推送模板消息
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
            String jsonData = "{" +
                    "\"touser\":\""+openid+"\"," +
                    "\"template_id\":\"maD2W1yaTvkXmh1dRjXEsMHUc9dDP8Xh1eANP***ig\"," +
                    "\"topcolor\":\"#FF0000\"," +
                    "\"data\":{" +
                    "\"title\":{\"value\":\"恭喜您中奖啦\",\"color\":\"#173177\"}," +
                    "\"nickname\":{\"value\":\""+nickname+"\",\"color\":\"#173177\"}," +
                    "\"prizeLevel\":{\"value\":\""+rewardLevel+"\",\"color\":\"#173177\"}," +
                    "\"prizeContent\":{\"value\":\""+ ConfigParamUtil.PRIZE_CONTENT.split(",")[rewardLevel]+"\",\"color\":\"#173177\"}," +
                    "\"time\":{\"value\":\""+dateFormat.format(new Date())+"\",\"color\":\"#173177\"}," +
                    "\"bonus\":{\"value\":\"10积分\",\"color\":\"#173177\"}}}";
            String reMsg1 = UrlReqUtil.post("https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="+access_token,jsonData);
            JSONObject jsonObject = JSONObject.fromObject(reMsg1);
            if(0 != (Integer) jsonObject.get("errcode")) throw new RuntimeException("通知用户失败");
    展开全文
  • 对接微信支付接口开发详细步骤

    万次阅读 2018-08-06 11:13:11
    这篇文章是献给正在开发微信支付,但是对微信支付的流程,或是看微信支付文档有疑问的小伙伴们,我也是一枚小白,在第一次对接微信支付,也是措手不及。ok 不多说了,写的不好,大家不要喷我哈。 1、第一步  我们...

    这篇文章是献给正在开发微信支付,但是对微信支付的流程,或是看微信支付文档有疑问的小伙伴们,我也是一枚小白,在第一次对接微信支付,也是措手不及。ok 不多说了,写的不好,大家不要喷我哈。

    1、第一步

          我们需要从哪里入手,当然我们需要有微信商家账号怎样申请商家账号呢,当然还是需要有一个已经审核过的微信公众号,这样的话,首先你必须先有个审核通过的微信公众号,这里就不说怎么审核公众号了这个公众号比较好弄。

    如何申请微信商户号(如图)

    从微信公众号 申请商户支付账户 点击微信支付(跳转到微信支付信息填写提交)根据提示填写即可

    填写好信息需要等待审核,这里就不多做解释了(下图申请成功后的截图)

    当显示为审核通过会在您这边指定的邮箱里会收到如下图展示的邮件信息

    现在就可以登录商户支付平台进行设定信息了(如图进行登录)

    第一次需要安装证书,根据提示安装即可。安装好后点击(如下图)秘钥进行设定

     

    设定好秘钥后要记住,这个开发的时候会使用到。

    2、第二步开发(到此上面的商户号就已经可以使用了)

         创建一个WeiXinConfig.java 这里是微信的一些配置信息

     

    
     

    [java] view plain copy

     

    1. <code class="language-java"><span>  </span>public static String key="";//上图设定好的KEY  
    2.     //网关  
    3.     public static String gatewayUrl ="https://api.mch.weixin.qq.com/pay/unifiedorder";  
    4.     //公众号ID  
    5.     public static String appid="";  
    6.     //公众账号ID  
    7.     public static String mch_id="";  
    8.     //设备号  
    9.     public static String device_info="";  
    10.     //随机字符串  
    11.     public static String nonce_str="";  
    12.     //签名  
    13.     public static String sign="";  
    14.     //签名类型  
    15.     public static String sign_type="MD5";  
    16.     //商品描述  
    17.     public static String body="";  
    18.     //商品详情  
    19.     public static String detail="";  
    20.     //附加数据  
    21.     public static String attach="";  
    22.     //商城订单号  
    23.     public static String out_trade_no="";  
    24.     //币种  
    25.     public static String fee_type="CNY";  
    26.     //交易金额(为分)例如12.53 应该(12.53*100) 放入当前值  
    27.     public static int total_fee=0;  
    28.     //客户IP  
    29.     public static String spbill_create_ip="";  
    30.     //交易起始时间yyyyMMddHHmmss  
    31.     public static String time_start="";  
    32.     //交易结束时间  
    33.     public static String time_expire="";  
    34.     //这个字段空着即可(订单优惠标记)  
    35.     public static String goods_tag="";  
    36.     //微信回调接口(重要)  
    37.     public static String notify_url="";  
    38.     //支付交易类型  
    39.     public static String trade_type="NATIVE";  
    40.     //支付订单号  
    41.     public static String product_id="";  
    42.     //指定支付方式是否限定用户用户信用卡 (这个可以空着)  
    43.     public static String limit_pay="";  
    44.     //扫描支付不需要可以空着  
    45.     public static String openid="";  
    46.     //场景信息(可以空着)  
    47.     public static String scene_info="";</code>  

     

     

       创建一个 WeiXinCommonUtil.java 名字可以随意哈。

     

    
     
    1. public static String weixinPay(String orderNumber,String clientIP,int totalFee){

    2. SortedMap<String, Object> parameters =new TreeMap<String, Object>();

    3. parameters.put("appid", WeiXinConfig.appid);

    4. parameters.put("body", WeiXinConfig.body);

    5. parameters.put("mch_id", WeiXinConfig.mch_id);

    6. parameters.put("nonce_str", WeiXinPayCommonUtil.genNonceStr());

    7. parameters.put("notify_url", WeiXinConfig.notify_url);

    8. parameters.put("out_trade_no", orderNumber);//订单号

    9. parameters.put("spbill_create_ip", clientIP);//用户IP

    10. parameters.put("total_fee", totalFee+"");//金额

    11. parameters.put("trade_type", WeiXinConfig.trade_type);

    12. //生成签名

    13. parameters.put("sign", WeiXinPayCommonUtil.createSign("UTF-8", parameters));

    14. //生成xml请求

    15. String reXml= WeiXinPayCommonUtil.getRequestXml(parameters);

    16. System.out.println(reXml);

    17. //请求xml

    18. String xml= HttpRequest.sendPost(WeiXinConfig.gatewayUrl, reXml);

    19. //解析xml

    20. String codeUrl= WeiXinXMLUtil.readCodeUrl(xml);

    21. if("error".equals(codeUrl)){

    22. return codeUrl;

    23. }

    24. return codeUrl;

    25. }

     

     

    创建一个 WeiXinPayCommonUtil.java

     

    
     
    1. public static String createSign(String characterEncoding, SortedMap<String, Object> parameters) {

    2. StringBuffer sb = new StringBuffer();

    3. Set es = parameters.entrySet();

    4. Iterator it = es.iterator();

    5. while (it.hasNext()) {

    6. Map.Entry entry = (Map.Entry) it.next();

    7. String k = (String) entry.getKey();

    8. Object v = entry.getValue();

    9. if (null != v && !"".equals(v) && !"sign".equals(k) && !"key".equals(k)) {

    10. sb.append(k + "=" + v + "&");

    11. }

    12. }

    13. sb.append("key=" + WeiXinConfig.key);// 最后加密时添加商户密钥,由于key值放在最后,所以不用添加到SortMap里面去,单独处理,编码方式采用UTF-8

    14. String sign = WeiXinMD5Util.MD5Encode(sb.toString(), characterEncoding).toUpperCase();

    15. return sign;

    16. }

    17.  
    18.  
    19. public static String getRequestXml(SortedMap<String, Object> parameters) {

    20. StringBuffer sb = new StringBuffer();

    21. sb.append("<xml>");

    22. Set es = parameters.entrySet();

    23. Iterator it = es.iterator();

    24. while (it.hasNext()) {

    25. Map.Entry entry = (Map.Entry) it.next();

    26. String k = (String) entry.getKey();

    27. String v = (String) entry.getValue();

    28. if ("sign".equalsIgnoreCase(k)) {

    29.  
    30. } else if ("attach".equalsIgnoreCase(k) || "body".equalsIgnoreCase(k)) {

    31. sb.append("<" + k + ">" + "<![CDATA[" + v + "]]></" + k + ">");

    32. } else {

    33. sb.append("<" + k + ">" + v + "</" + k + ">");

    34. }

    35. }

    36. sb.append("<" + "sign" + ">" + "<![CDATA[" + parameters.get("sign") + "]]></" + "sign" + ">");

    37. sb.append("</xml>");

    38. return sb.toString();

    39. }

    40.  
    41. public static String genNonceStr() {

    42. Random random = new Random();

    43. return WeiXinMD5Util.MD5Encode(String.valueOf(random.nextInt(10000)), "");

    44. }

    45.  

    创建 WeiXinMD5Util.java 

     

     

    
     
    1. private static String byteArrayToHexString(byte b[]) {

    2. StringBuffer resultSb = new StringBuffer();

    3. for (int i = 0; i < b.length; i++)

    4. resultSb.append(byteToHexString(b[i]));

    5.  
    6. return resultSb.toString();

    7. }

    8.  
    9. private static String byteToHexString(byte b) {

    10. int n = b;

    11. if (n < 0)

    12. n += 256;

    13. int d1 = n / 16;

    14. int d2 = n % 16;

    15. return hexDigits[d1] + hexDigits[d2];

    16. }

    17.  
    18. public static String MD5Encode(String origin, String charsetname) {

    19. String resultString = null;

    20. try {

    21. resultString = new String(origin);

    22. MessageDigest md = MessageDigest.getInstance("MD5");

    23. if (charsetname == null || "".equals(charsetname))

    24. resultString = byteArrayToHexString(md.digest(resultString.getBytes()));

    25. else

    26. resultString = byteArrayToHexString(md.digest(resultString.getBytes(charsetname)));

    27. } catch (Exception exception) {

    28. }

    29. return resultString;

    30. }

    31.  
    32. private static final String hexDigits[] = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d","e", "f" };


    ok 到此 代码已经贴出,WeiXinConfig 返回的codeUrl 就是我们需要的这个生成一下二维码,用扫描就可以支付了。

    展开全文
  • 微信公众平台为公众号开发者提供了网页版的接口调试工具,开发者可以直接在网页中调用对应的接口,比如获取access_token接口,创建菜单接口,发送消息接口 等等。 先看一下界面,访问: ...一、接口类型:因为...
  • java连接微信服务器调用微信接口

    万次阅读 热门讨论 2018-08-01 18:22:04
    一、注册微信公众平台 微信公众平台官网 https://mp.weixin.qq.com/,点击注册 ... ... 如果对公众号没特别要求直接操作公众平台就可以了,这里主要介绍java后台开发者调用微信接口的操作。 ...
  • 通过个人项目,来进行讲解微信第三方平台与微信接口的调用
  • 微信公众平台消息接口开发(1)启用接口 微信公众平台自定义菜单接口开发(1) 微信公众平台消息接口开发(3)中英翻译 微信公众平台开发(4)天气预报 微信公众平台消息接口开发(5)股票查询 微信公众平台消息接口开发...
  • 微信机器人的接口文档:业务描述1 娱乐棋牌新增游戏房间的接口 2 新增游戏房间成功时返回一个房间号
  • 百度网盘下载 课程简介: ...主要内容有微信公众平台...此外,本书对于腾讯微生活和第三方微信接口也作了初步介绍,最后以一个具体实例介绍了微信公众账号的开发流程。在编写过程中,既重视内容的全面性,又注重实...
  • java调用微信支付接口

    2020-07-29 14:20:30
    调用的页面是oauth.jsp,调用的代码类是WeiXinPayController,我用的是springmybatis,你可以放到自己的项目中运行
  • 企业微信api接口实现

    2020-07-29 14:21:48
    企业微信api接口实现 企业微信api接口实现 企业微信api接口实现
  • PC版微信开发SDK

    千次阅读 2019-07-18 20:08:57
    根据微信该SDK,可做一些提醒系统-比如到帐提醒,通知等系统 转载于:https://www.cnblogs.com/bqh10086/p/11191937.html
  • 微信接口,用于微信接口开发微信接口,用于微信接口开发微信接口,用于微信接口开发
  • 微信教程列表

    2019-07-17 11:52:13
    微信公众平台开发入门教程 微信公众平台开发—天气预报 微信公众平台开发—小黄鸡 微信公众平台开发—人脸识别 微信公众平台开发—百度地图 微信公众平台开发—笑话 微信公众平台开发—在线点歌 微信...
  • 微信沙箱也叫微信仿真测试系统,微信沙箱开发是子恒老师《子恒说...详细讲解了微信沙箱开发过程,内容包含微信沙箱作用,获取微信沙箱验签秘钥KEY,在沙箱中实现社交立减金接口升级等等。欢迎反馈,微信号:QQ68183131
  • 本系列微信公众平台教程以PHP+MySQL为开发环境,介绍了微信公众平台开发模式下基础接口、自定义菜单、高级接口、WeiXin JS接口微信支付等接口以及在此基础上的功能或应用开发的方法及技巧,案例极具实用价值,是...
  • 我们在《玩转微信公众号》的视频中, 已经知道公众号分为订阅号,服务号,应用号, 微信公众号开发时, 每个公众号类型会有不同的权限。 ...比如在开发微信支付功能时, ...微信公众号开发接口权限与
  • 微信公众平台开发入门教程 内容:1.申请SAE作为服务器; 2.启用开发模式; 3.微信公众平台PHP SDK; 4.接收发送消息类型解析; 5.微信公众平台开发模式原理; 6.快速开发天气预报功能。 入门教程是下面所有教程的基础...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
1 2 3 4 5 ... 20
收藏数 113,253
精华内容 45,301
关键字:

微信接口开发