写web api 微信对接

腾讯广告-web转化数据api自归因对接记录 项目中需要做对扫码加粉的监测,于是用到了腾讯广告的Web转化数据API自归因功能对接,这个功能需要开发人员跟运营打好配合,第一次写遇到了很多不理解的内容,也踩了不少的坑,最终得以实现。以上内容仅踩坑后笔记,希望可以帮到你一点点。 阅读详情
JsonResult

返回类型了,方法名,对于访问web api不受影响, 而其中不同方法的参数个数不能有重的,否则不执行.   ajax 中可以写两个链接,但最终只执行最上面

的,也不完全对,它会执行第一个,不受全称的限制

CORS


using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Http;
using System.Web.Security;
using WEBapi.Models;

namespace WEBapi.Controllers
{
    /// <summary>
    /// 微信控制器
    /// </summary>
    public class WechatController : ApiController
    {
        private const string TOKEN = "bill";

        /// <summary>
        ///
        /// </summary>
        /// <param name="jObject"></param>
        /// <returns></returns>
        [HttpPost]
        [HttpGet]
        public ApiResult Service()
        {
            // JObject jObject

            //dynamic dic = jObject;

            //string name = dic.name;
            //string age = dic.age;

            //int i = 123;
            //int j = i;

            //j = 456;

            //Debug.WriteLine("i=" + i + ", j=" + j);

            //ApiResult a = new ApiResult { IsSucceed = true, Message = "张三" };
            //ApiResult b = a;

            //b.IsSucceed = false;
            //b.Message = "李四";

            //Debug.WriteLine("a=" + a.Message + ", b=" + b.Message);

            HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//获取传

统context     
            HttpRequestBase request = context.Request;//定义传统request对象
            HttpResponseBase response = context.Response;

            if (request.RequestType.Equals("POST"))
            {
                TextReader reader = new StreamReader(request.InputStream);

                string content = reader.ReadToEnd();

                Debug.WriteLine(content);
            }
            
            string signature = request.QueryString["signature"].ToString();
            string timestamp = request.QueryString["timestamp"].ToString();
            string nonce = request.QueryString["nonce"].ToString();
            string echoStr = request.QueryString["echoStr"].ToString();

            if (string.IsNullOrEmpty(echoStr))
            {
                response.End();
            }

            if (CheckSignature(signature, timestamp, nonce, TOKEN))
            {
                if (!string.IsNullOrEmpty(echoStr))
                {
                    response.Write(echoStr);
                    // response.Output.Write("hello");
                    response.End();
                }
            }

            return new ApiResult { IsSucceed = false, ErrorCode = -1 };


            //HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//获取

传统context     
            //HttpRequestBase request = context.Request;//定义传统request对象
            //HttpResponseBase response = context.Response;
            //if (string.IsNullOrEmpty(request.QueryString["echoStr"]))
            //{
            //    response.End();
            //}
            //string echoStr = request.QueryString["echoStr"].ToString();
            //if (checkSignature())
            //{
            //    if (!string.IsNullOrEmpty(echoStr))
            //    {
            //        response.Write(echoStr);
            //        // response.Output.Write("hello");
            //        response.End();
            //    }
            //}

            //if(h())
            //{
            //   // return new JsonResult();
            //    return "hello";
            //}
            //return "hello";

            // Debug.WriteLine(Request.Content);
        }

        private bool CheckSignature(string signature, string timestamp, string nonce, string token)
        {
            string[] arrTmp = { token, timestamp, nonce };

            Array.Sort(arrTmp); //字典排序

            string tmpStr = string.Join("", arrTmp); //使用指定的字符分隔

           // 加密
            tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");
            tmpStr = tmpStr.ToLower();

            return string.Equals(tmpStr, signature);
        }

        //
        // GET: /DynamicTest/
        //[System.Web.Http.HttpPost]
        //public string Test(dynamic X)
        //{
        //    return X.name + "hell";
        //}

        //[System.Web.Http.HttpPost]
        //public JsonResult Entry(dynamic X)
        //{
        //    return new JsonResult();
        //}
        //[System.Web.Http.HttpGet]
        ////public string Test2(Class1 n)  //错误,不能用类做参数
        ////{
        ////   // Class1 str = Newtonsoft.Json.JsonConvert.DeserializeObject<Class1>(strQuery);
        ////    return "hello"+n.name;
        ////}

        ////[HttpGet]
        //public string Test2(string name, int age)
        //{
        //    return "hello" + age;
        //}
        //public bool checkSignature()
        //{
        //    HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//获取

传统context     
        //    HttpRequestBase request = context.Request;//定义传统request对象

        //    string signature = request.QueryString["signature"].ToString();
        //    string timestamp = request.QueryString["timestamp"].ToString();
        //    string nonce = request.QueryString["nonce"].ToString();
        //    string[] ArrTmp = { "3", timestamp, nonce };
        //    Array.Sort(ArrTmp); //字典排序

        //    string tmpStr = string.Join("", ArrTmp); //使用指定的字符分隔
        //    //加密
        //    tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");
        //    tmpStr = tmpStr.ToLower();
        //    if (tmpStr == signature)
        //    {
        //        return true;
        //    }
        //    else
        //    {
        //        return false;
        //    }
        //}
        //[HttpPost]
        //[HttpGet]
        //public bool h(JObject jObject)
        //{
        //    dynamic dic = jObject;

        //    string name = dic.name;
        //    string age = dic.age;


        //    return true;
        //}
        /*
         public class WechatController : ApiController
         {
        
             //
             // GET: /Wechat/
              //define("TOKEN", "weixin");
            // public string Token = "bill";
       
             [System.Web.Http.HttpPost]
            // [System.Web.Http.HttpGet]
             public JsonResult Entry(dynamic X)
             {
                 // Debug.WriteLine(Request.Content);

                 HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//获

取传统context     
                 HttpRequestBase request = context.Request;//定义传统request对象
                 HttpResponseBase response = context.Response;
                 if (string.IsNullOrEmpty(request.QueryString["echoStr"]))
                 {
                     response.End();
                 }
                 string echoStr = request.QueryString["echoStr"].ToString();
                 if (checkSignature())
                 {
                     if (!string.IsNullOrEmpty(echoStr))
                     {
                         response.Write(echoStr);
                        // response.Output.Write("hello");
                         response.End();
                     }
                 }

                 return new JsonResult();
             }

         }

     /*
             protected void Page_Load(object sender,EventArgs e)
             {
            
                 HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//获

取传统context     
                 HttpRequestBase request = context.Request;//定义传统request对象
                 HttpResponseBase response=context.Response;
                 if(request.HttpMethod=="POST")
                 {
                     string weixin = "";
                     weixin = PostInput();
                     if(!string.IsNullOrEmpty(weixin))
                     {
                         //HttpResponseMessage ResponseMsg=new HttpResponseMessage():
                         ResponseMsg(weixin);
                     }
                 }
             }

             private void ResponseMsg(string weixin)
             {
            
                 HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//获

取传统context     
                 HttpRequestBase request = context.Request;//定义传统request对象
                 HttpResponseBase response=context.Response;
                 XmlDocument doc = new XmlDocument();
                 doc.LoadXml(weixin);//读取xml字符串
                 XmlElement root = doc.DocumentElement;//将元素放入root

                 XmlNode MsgType = root.SelectSingleNode("MsgType");

                 string messageType = MsgType.InnerText;// 获得这个消息类型

                 try
                 {
                     switch(messageType)
                     {
                         case "text":
                             response.Output.Write("hello");
                             break;
                     }
                 }
                 catch
                 {

                 }
                 finally
                 {

                 }

                // throw new NotImplementedException();
             }
             /// <summary>
             /// 获取post请求数据
             /// </summary>
             /// <returns></returns>
             private string PostInput()
             {
                  //获取字符流
                     Stream s = System.Web.HttpContext.Current.Request.InputStream;
                     byte[] b = new byte[s.Length];
                     //读取字符流放入数组 并返回
                     s.Read(b, 0, (int)s.Length);
                     return Encoding.UTF8.GetString(b);
          
            
             }
         }
     }
     */
    }
}
微信小程序快递物流信息跟踪查询api接口对接快递鸟案例 原来用的快递鸟(http://www.kdniao.com)的接口有变动,现有系统上不能使用了。查看快递鸟提供的api,探寻微信小程序端的使用情况。有几个是比较合适的:1.跳转api;2.手机查询api。 对接流程: 快递鸟网站申请接口KEY并认证-对接接口-调试-上线使用 二、对接准备 1.登录快递鸟注册快账号http://www.kdniao.com/reg 2.获取开发者账号信息(ID ,A... 阅读详情

相关推荐

微信小店打印组件前端web端对接

运营端使用指南:[https://store.weixin.qq.com/chengzhang/webdoc/wiki/544/6c826cffaccc0396/growth_center_manual_for_store?source=7&sourceType=4]注:如使用的是ISV打单或其他软件也需下载。

qq_44131445的博客 2724

Web版微信协议详解

转:http://www.php.cn/weixin-kaifa-361662.html 微信web协议分析(微信网页版 wx2.qq.com) 1.打开首页,分配一个随机uuid, 2.根据该uuid获取二维码图片。 3.微信客户端扫描该图片,在客户端确认登录。 4.浏览器不停的调用一个接口,如果返回登录成功,则调用登录接口 5.此时可以获取联系人列表,可以发送消息。然后不断

zhangmiaoping23的专栏 1万+

微信 API 接口

网页版微信API,包含终端版微信及微信机器人 ,微信接口

微信小程序的Web API接口设计及常见接口实现

http://www.cnblogs.com/wuhuacong/p/7488939.html

weixin_40333655的博客 1640

支付宝、微信(webapi+winfrom调用示例)

支付宝、微信(webapi+winfrom调用示例),优化支付流程和代码

机器学习——笔记整理(原理、python代码)——反反复复,出精活!

回顾知识,检查自我,开拓新域。 机器学习1.监督学习 机器学习简介: 机器学习是实现人工智能的手段,其主要研究内容是如何利用数据或经验进行学习,改善具体算法的性能。 多领域交叉,涉及概率论、统计学,算法复杂度理论等多门学科 广泛应用于网络搜索、垃圾邮件过滤、推荐系统、广告投放、信用评价、欺诈检测、股票交易和医疗诊断等应用。 机器学习分类: 机器学习一般分为下面几种类别 监督学习 ( Supervised Learning) 无监督学习 ( Unsupervised Learning) 强化学习(

weixin_45666566的博客 6487

微信接口协议对比分析

个人微信开发API协议接口对比 本文对比目前市面上用于微信个人号的所有API协议,主要包括 web版微信协议, ipad协议 , pc微信协议/mac协议 , hook pc版微信 , hook 安卓或者ios版微信 web版微信协议 基本是公开协议,目前有免费开源的,资料比较全,稳定性不太好,可用api不多,受限制大;官方可能随时会关闭。 ipad协议 不需要设备,扫码登陆,稳定性不错,可以实现微信大部分功能,有朋友圈功能,可与其他手机微信,pc微信同时登陆,完全破解ipad微信的方案,是目前做灰黑产..

m0_55227749的博客 1378

方差分析ANOVA、T检验、卡方检验的区别

T检验和ANOVA都是用来看样本之间均值是否相等,但是两者又有什么区别呢? 卡方检验是用来看分类变量之间有没有相关性。 自变量X类型 自变量X组数 因变量Y类型 分析方法 离散(类别) 仅仅2组 连续(均值) t检验 离散(类别) 2组及以上 连续(均值) ANOVA 离散(类别) 2组及以上 离散(类别) 卡方检验 进一步细分 方差分析 从理论上讲,方差分析有两个前提条件,一是因变量Y需要满足正态性要求,二是满足方差齐检验。 方差不齐时可使用‘非参数检验’,同时还可使用wel

itslifeng的博客 4万+

python 收发微信之一:利用 WxPusher 的 web api 及 python SDK 两种方式给自己发微信

本文给出利用 WxPusher 提供的 web api 与 python SDK 两种方式,实现微信发送的代码样例。 注册 WxPusher 应用并记录 APP_TOKEN。前往 WxPusher 的管理后台,注册一个应用,其中应用名字、联系方式、推送内容说明 都是展示给最终用户的,可以随便写。至于事件回调地址是用来实现诸如“用户扫码关注后的通知”、“获取新关注用户UID”、“用户通过手机发送信息给应用从而实现远程控制”等目的,需要自行部署一个互联网 w

假装自己在编程 5831

点云最小二乘法拟合曲线

文章目录一、引言 一、引言

dayuhaitang1的博客 2735

【python三维深度学习】python三维点云从基础到深度学习

从三维点云基础知识到深度学习,将按照以下目录持续进行更新。更新完成的部分可以在三维点云专栏中查看。含数据与python源码。

叶子的博客 2万+

探索WebWeChatAPI.Net:微信网页接口的高效开发工具

探索WebWeChatAPI.Net:微信网页接口的高效开发工具 去发现同类优质开源项目:https://gitcode.com/ 项目简介 是一个开源项目,它提供了对微信网页版接口的全面封装,让你可以轻松地进行微信聊天机器人、自动化操作或其他定制化应用的开发。这个库是用C#编写的,并兼容.NET Framework和.NET Core,使得开发者在Windows、Linux或macOS环境下都能...

gitblog_00039的博客 619

华为OD技术面八股文_C++_01

汇总华为OD技术面C++方向八股文真题,并提供详细解答。

qq_45776114的博客 1887

wechat-rest SDK使用指南:轻松对接任意编程语言的微信API

wechat-rest是一款功能强大的微信机器人开发工具包(SDK),它提供了PC微信的API接口,让开发者可以轻松实现与微信的交互功能。无论是构建智能聊天机器人,还是开发微信消息处理应用,wechat-rest都能为你提供稳定可靠的技术支持,帮助你快速对接任意编程语言的微信API。 ## 为什么选择wechat-rest SDK? wechat-rest SDK具有众多优势,使其成为对接微信

gitblog_01192的博客 860

24届数字IC设计/验证秋招总结贴——先看这个

为方便快速进行查找该专栏的内容,将所有内容链接均放在此篇博客中整理不易,欢迎订阅~~

qq_42135020的博客 8416

【TC3xx芯片】TC3xx DMA模块详解

TC3xx DMA模块详解

qq_36056498的博客 5917

微信机器人开发神器WeChat Bot:API调用示例

你是否还在手动回复微信群消息?还在为管理多个微信账号而烦恼?WeChat Bot 作为一款基于 WeChaty 框架的开源微信机器人解决方案,支持 DeepSeek、ChatGPT、Kimi 等 11 种 AI 服务,可快速实现消息自动回复、群管理、好友维护等功能。本文将通过 8 个实战案例,带你掌握从环境配置到高级 API 调用的全流程,让你彻底解放双手。 读完本文你将获得: - 3 种环境部...

gitblog_00240的博客 1663

高通 vs MTK vs 海思:三大平台 ISP 架构横向对比与实战差异分析

随着移动影像能力成为智能终端差异化竞争的核心维度,ISP(Image Signal Processor)架构日益重要。高通、MTK、海思三大 SoC 厂商在 ISP 设计上各具特色,不仅在图像处理链路、模块集成度、算法加速路径等方面存在显著差异,同时也决定了终端厂商在成像质量、调试复杂度与扩展能力上的实际表现。本文将基于真实平台项目经验,横向对比三大主流平台的 ISP 架构关键指标,系统分析其在实际开发过程中的能力边界、工程成本与调优空间,帮助工程师更精准地进行平台选型与优化策略制定。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 3933

从0到1掌握wechat.js:构建功能完善的微信Web应用

wechat.js是一款专注于微信Web应用开发的JavaScript工具库,提供了分享、网络状态检测、菜单控制等核心功能,帮助开发者快速实现微信环境下的各类交互需求。无论是社交分享功能还是基础的界面控制,wechat.js都能提供简洁易用的API接口,让微信Web应用开发变得简单高效。 ## 📦 快速开始:安装与配置 ### 一键安装步骤 wechat.js支持通过bower包管理器进行

gitblog_00070的博客 776

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

wechat-api 实战:基于Java的微信个人号自动化架构深度解析

在数字化转型浪潮中,微信个人号作为中国最普及的社交工具,其自动化能力正成为企业降本增效的关键突破口。wechat-api作为一款基于Java 7+的微信Web协议封装库,通过简洁的API设计和注解驱动的消息处理机制,为开发者提供了企业级的微信自动化解决方案。该项目采用现代化技术栈,包括OkHttp3、Gson、ZXing等成熟组件,实现了从登录认证到消息处理的全链路自动化能力。 ## 技术选型与

gitblog_00993的博客 1152

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

java对接企业微信

java对接企业微信

zhang2312600_a的博客 8929

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

wechat-api:Java版微信机器人开发终极指南

wechat-api是一个基于微信Web协议的Java版本封装,提供了发送消息、接收消息、群操作等功能的开发工具。通过这个强大的API,开发者可以快速构建属于自己的微信机器人应用,实现自动化消息处理、智能回复等实用功能。 ## 为什么选择wechat-api开发微信机器人? wechat-api作为Java版微信个人号API,具有以下显著优势: - **开发便捷**:提供简洁的API接口,通

gitblog_00958的博客 801

5个wechat-jssdk高级技巧:提升微信开发效率的秘密武器

想要在微信开发中节省大量时间吗?wechat-jssdk作为微信JSSDK与NodeJS及Web端集成的终极解决方案,为开发者提供了完整的微信生态开发体验。这个强大的工具库不仅能简化微信网页开发流程,还能大幅提升开发效率。今天,我将分享5个实用的wechat-jssdk高级技巧,帮助你快速掌握这个提升微信开发效率的秘密武器。 ## 🚀 技巧一:智能配置管理 - 简化初始化流程 wechat-

gitblog_00248的博客 758

WeChat-API:Java企业级微信个人号自动化终极解决方案

> 在数字化转型浪潮中,企业微信机器人已成为客户服务、营销自动化、数据采集的关键基础设施。然而,微信协议复杂性、会话管理难题、消息类型多样性等挑战让开发者望而却步。wechat-api 作为基于Java 7+的微信个人号API客户端,通过注解驱动架构、多线程消息处理和完整的协议封装,为企业级应用提供了稳定可靠的自动化解决方案。 ## 技术挑战与解决方案对比 微信个人号自动化面临的核心技术挑战主

gitblog_00704的博客 1039

如何在3分钟内用Java搭建一个微信个人号机器人:wechat-api终极指南

你是否想过让你的微信账号拥有自动化能力?想要实现自动回复、智能客服或群管理功能?今天我将为你介绍一款强大的Java微信个人号API客户端——wechat-api,让你在3分钟内就能搭建属于自己的微信机器人!这个开源项目为Java开发者提供了完整的微信消息收发、联系人管理和群聊处理等自动化功能。 ## 痛点分析:为什么需要微信机器人? 传统微信自动化开发面临诸多挑战:微信Web协议复杂多变需要持

gitblog_01165的博客 739

如何用Java轻松打造你的微信个人号机器人:wechat-api完整指南

还在为手动回复微信消息而烦恼吗?想要实现微信消息的自动化处理却不知道从何入手?今天我要为你介绍一个强大的Java微信机器人框架——wechat-api,它能让你轻松实现微信个人号的自动化操作!🚀 wechat-api是一个基于Java 7+的微信个人号API客户端,提供完整的微信消息收发、联系人管理、群聊处理等自动化功能。无论你是想要构建客服机器人、消息自动回复系统,还是实现微信消息监控,这个

gitblog_00346的博客 846
上一篇: 微信判断请求是否来自公众账号用户名
下一篇: 星期几
Bill11YAng
博客等级 码龄14年 165粉丝 230原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值