微信接口开发申请服务器,开发微信服务器接口的实例教程
因ERP系统需要与微信公众号做数据接口,现准备做一个中间服务器。
开发环境:XE10
使用控件:IdHTTPServer
因刚开发阶段,在路由路上直接做了测试机的80端口转发,申请微信公众测试号后,却一直配置失败。跟踪发现是服务器无法收到微信发来的GET请求。代码如下:
Delphi/Pascal code?
unit Unit1;interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, IdBaseComponent,
IdComponent, IdCustomTCPServer, IdCustomHTTPServer, IdHTTPServer, IdContext,
IdHashSHA, IdGlobal;
type
TForm1 = class(TForm)
IdHTTPServer1: TIdHTTPServer;
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure IdHTTPServer1CommandGet(AContext: TIdContext;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
private
{ Private declarations }
public
{ Public declarations }
function SHA1(Input: String): String;
function CheckSignature(ARequestInfo: TIdHTTPRequestInfo): boolean;
end;
var
Form1: TForm1;
Const
Token = 'weixin';
implementation
{$R *.dfm}
function TForm1.SHA1(Input: String): String;
begin
with TIdHashSHA1.Create do
try
Result := LowerCase(HashBytesAsHex(TidBytes(Bytesof(Input))));
finally
Free;
end;
end;
function TForm1.CheckSignature(ARequestInfo: TIdHTTPRequestInfo): boolean;
var
signature, timestamp, nonce, echostr: String;
tmpstr: TStringList;
temp: String;
begin
tmpstr := TStringList.Create;
try
signature := ARequestInfo.Params.Values['signature'];
timestamp := ARequestInfo.Params.Values['timestamp'];
nonce := ARequestInfo.Params.Values['nonce'];
echostr := ARequestInfo.Params.Values['echostr'];
tmpstr.Add(Token);
tmpstr.Add(timestamp);
tmpstr.Add(nonce);
tmpstr.Sort;
temp := StringReplace(tmpstr.text, #13#10, '', [rfReplaceAll]);
Result := SHA1(temp) = signature;
finally
tmpstr.Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
IdHTTPServer1.Active := True;
end;
procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
begin
Memo1.Lines.Add('123');
if CheckSignature(ARequestInfo) then
if ARequestInfo.Params.Values['echostr'] <> '' then
begin
Memo1.Lines.Add(ARequestInfo.Params.Values['echostr']);
AResponseInfo.ContentType := 'text/html; charset=UTF-8';
AResponseInfo.ContentText := ARequestInfo.Params.Values['echostr'];
end;
end;
end.
微信接口开发申请服务器,开发微信服务器接口的实例教程相关推荐
- Web 开发中应用 HTML5 技术的10个实例教程
HTML5 作为下一代网站开发技术,无论你是一个 Web 开发人员或者想探索新的平台的游戏开发者,都值得去研究.借助尖端功能,技术和 API,HTML5 允许你创建响应性.创新性.互动性以及令人惊叹的 ...
- 微信公众号申请到开发环境搭建
先来一个写的比较好的参考:http://blog.csdn.net/walkingmanc/article/details/18881793 1. 申请微信公众号 我们要进行微信公众平台的开发,第 ...
- 浅析微信支付:申请退款、退款回调接口、查询退款
本文是[浅析微信支付]系列文章的第八篇,主要讲解商户如何处理微信申请退款.退款回调.查询退款接口,其中有一些坑的地方,会着重强调. 浅析微信支付系列已经更新七篇了哟-,没有看过的朋友们可以看一下哦. ...
- 企业微信的审批申请状态变化回调通知api接口bug
找了1天的问题,leader不一会就找到了问题所在. 企业微信官方给的demo有问题. WXBizJsonMsgCrypt构造参数 改成下边就可openapi回调通过- aesKey = java.u ...
- 使用c# .net core开发国标gb28181 sip +流媒体服务完成视频监控实例教程 亲身完美体验过程...
目前使用C# .net core 来实现国标gb28181标准的摄像头播放.ptz云台控制.视频回放等视频监控功能,项目可运行于linux/docker/.net core环境,也是当前非常罕有的能做 ...
- oracle重建服务器,Oracle重建控制文件的实例教程
前言 控制文件(control file)是一个相当小的文件(最多能增长到64M左右),其中包含Oracle需要的其他文件的一个目录.参数文件告知实例控制文件的位置,控制文件则告知示例数据库和在线重做 ...
- java微信支付v3系列——7.微信支付之申请退款
目录 java微信支付v3系列--1.微信支付准备工作 java微信支付v3系列--2.微信支付基本配置 java微信支付v3系列--3.订单创建准备操作 java微信支付v3系列--4.创建订单的封 ...
- 微信订阅号申请与使用
微信订阅号申请与使用 微信公众号在现在的网络推广中应用比较广泛, 掌握微信公众的使用就可以多一种推广途径. 通常个人可以申请订阅号,公司和团体可以申请服务号. 订阅号不可以添加链接.服务号可以添加链接 ...
- 微信小程序基础之在微信上显示和体验小程序?
随着小程序正式上线,用户现在可以通过二维码.搜索等方式体验到开发者们开发的小程序了. 用户只要将微信更新至最新版本,体验过小程序后,便可在发现页面看到小程序TAB,但微信并不会通过这个地方向用户推荐小 ...
- db服务器作用,数据库服务器
数据库服务器(Database Server) [编辑] 什么是数据库服务器 数据库服务器是指运行数据库系统的专用服务器,其功能就是为数据库系统的高性能运行提供硬件支持和保障. [编辑] 数据库服务器 ...
最新文章
- 西瓜书公式推导讲解来了!
- js实现图片轮播(终结版)
- php编译工具 知乎,关于知乎回答问题编辑框用Ctrl+V 粘贴图片是如何实现的详解...
- HTTP 调试工具httpdebug 使用示例
- Linux QoS实现框架:函数调用流程图
- 工作169:删除操作
- 围观神龙架构首次开箱,现场直播暴力拆机
- Maven : [ERROR] Project xxx is duplicated in the reactor @
- 蚂蚁集团,打响2022反内卷第一枪?
- 《数学建模算法与应用》方法概述
- 抖音快手无水印去水印方法19年11月最新
- java 换行分割_java – 如何通过换行分割字符串?
- 三年级计算机帮助我们学本领,三年级作文学本领40
- W ndows路由设置,windows下的双线双IP智能路由配置方法
- 【Unity3D实战】摇摆直升机开发实战(一)
- 超强干货:企业数据防泄密的26种实用方法
- 【科普】第二章 SIS 系统简介
- 非谓语动词 + 情态动词学习笔记
- 道达天际首次亮相军博会,“天网融合”引爆全场
- WIN7计算机管理里没有便携设备,如何显示及删除Win7设备管理器中隐藏的已用过的硬件设备信息(图)...
热门文章
- 如何用递归思想 求n的阶乘 C语言
- 排序算法,最全的10大排序算法详解(Sort Algorithm)
- 软件测试 | 测试开发 | 年薪超过40W,一位测试媛宝妈的 BAT 大厂逆袭之旅
- ORACLE基本使用
- 基于javaweb的业务代办帮跑腿管理系统(java+ssm+jsp+bootstrap+jquery+mysql)
- 如何刻录服务器安装系统光盘启动,刻盘之刻录系统安装光盘和启动光盘的注意事项小结...
- 007--python--英制单位英寸和公制单位厘米的互换
- 于丹《庄子》心得讲稿-《本性与物性》
- 后端程序员必备:mysql数据库相关流程图/原理图芬芬细雨
- Win11如何更改默认下载路径?Win11更改默认下载路径的方法