`
wtm_mac
  • 浏览: 88855 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

微信服务端模拟

 
阅读更多

最近开发微信接口,配合开发弄了这个微信服务端的模拟以方便调试。

 

# -*- coding: utf-8 -*-
#/usr/bin/env python

__version__ = '0.1'
__author__  = 'http://weibo.com/wtmmac'

'''
微信Server模拟
'''

import sys, urllib, httplib, time, hashlib, random

# 配置
interface_url = 'www.xxx.net'
interface_path = '/interface/weixin.php'
Token = 'weixin'

messages = {
    # 用户关注消息
    'subscribe' : '''<xml><ToUserName><![CDATA[测试服务帐号]]></ToUserName>
    <FromUserName><![CDATA[小黑]]></FromUserName>
    <CreateTime>123456789</CreateTime>
    <MsgType><![CDATA[event]]></MsgType>
    <Event><![CDATA[subscribe]]></Event>
    <EventKey><![CDATA[EVENTKEY]]></EventKey>
    </xml>''',

    # 用户发送文本信息
    'text': '''<xml>
    <ToUserName><![CDATA[测试服务帐号]]></ToUserName>
    <FromUserName><![CDATA[小黑]]></FromUserName> 
    <CreateTime>1348831860</CreateTime>
    <MsgType><![CDATA[text]]></MsgType>
    <Content><![CDATA[周杰伦]]></Content>
    <MsgId>1234567890123456</MsgId>
    </xml>'''

}

def make_post(action):
    '''模拟用户行为产生的消息提交给接口程序'''

    conn = httplib.HTTPConnection(interface_url)

    headers = { "Content-type": "text/xml",
                "Content-Length": "%d" % len(messages[action])}

    # 生成签名相关变量
    timestamp = int(time.time())

    nonce = random.randint(1,100000)

    signature = makeSignature(Token, timestamp, nonce)

    params = urllib.urlencode({'signature': signature, 'timestamp': timestamp, 'nonce': nonce})

    conn.request("POST", interface_path + "?" +params, "", headers)

    conn.send(messages[action])

    response = conn.getresponse()

    print response.status, response.reason
     
    print response.read()

    conn.close()

    
    
def makeSignature(Token, timestamp, nonce):
    '''生成签名'''
    try:
        Token = int(Token)
    except Exception, e:
        pass

    sorted_arr = map(str, sorted([Token, timestamp, nonce]))

    sha1obj = hashlib.sha1()
    sha1obj.update(''.join(sorted_arr))
    hash = sha1obj.hexdigest()

    return hash

def listAction():
    print("======Supported actions:======")
    for i in messages.keys():
        print(i)
    print("==============================")

if __name__ == '__main__':
    if len(sys.argv) < 2:   
        print (u"Please input your action")
        listAction()
    else:
        if (messages.has_key(sys.argv[1])):
            make_post(sys.argv[1])
        else:
            print("No this action")
            listAction()

 

分享到:
评论

相关推荐

    仿微信服务端

    【微信服务端】是模拟微信应用程序后端服务的软件开发项目,主要目的是为了学习和研究微信后台系统的架构和实现方式。这个源码集合是开发者在互联网上辛苦搜寻并整理的成果,它允许我们深入理解微信服务器的工作原理...

    最新微信支付DEMO 统一下单服务端客户端完整代码示例

    9. **调试与测试**:在实际开发中,开发者需要使用微信支付提供的沙箱环境进行测试,模拟各种交易状态,确保代码的正确性和健壮性。 通过学习这个DEMO,开发者可以了解微信支付的整体流程,熟悉统一下单、支付确认...

    最新微信APP支付服务端php SDK 基于1.2开发文档开发

    微信APP支付服务端php SDK是微信支付为开发者提供的一个关键工具,它允许PHP开发者在后端处理微信应用程序的支付流程。这个SDK基于1.2版本,意味着它包含了最新的特性和安全改进,确保与微信支付接口的顺畅对接。...

    微信小程序服务端开发demo.zip

    微信小程序服务端开发DEMO是一个用于展示和学习微信小程序后端服务构建的示例项目。这个zip文件包含了一个指向小程序开发平台的快捷方式(小程序开发平台.url)以及一个名为"server-master"的文件夹,后者很可能是...

    H5 微信 小游戏 平台 完整源码

    6. **微信接口**:用于与微信服务端进行交互,如用户授权、分享、支付等。 7. **配置文件**:包含游戏的配置信息,如初始设定、难度等级等。 8. **测试和调试工具**:帮助开发者定位和修复问题。 开发H5微信小...

    微信小程序专用测试服务端

    在微信小程序测试服务端中,SQLite3可能用于存储模拟的用户数据、配置信息或者测试结果,方便开发者在没有实际数据库环境时也能进行功能测试。通过Python的sqlite3模块,可以方便地执行SQL语句,进行数据的增删改查...

    仿微信安卓聊天软件 API 服务端

    【标题】"仿微信安卓聊天软件 API 服务端" 是一个专门为安卓应用设计的聊天功能实现,它模拟了微信的一些核心交互和功能。这个服务端是应用程序接口(API)的一部分,用于处理客户端(如安卓应用)与服务器之间的...

    微信小程序python服务端

    使用Postman等工具模拟小程序发起请求,测试服务端接口的正确性和性能。同时,服务端应设置日志记录,便于排查问题。 9. 源码结构分析 压缩包文件"wxapppython-master"很可能是包含一个完整的Python服务端项目,...

    java微信小程序支付和退款服务端功能

    在Java微信小程序支付和退款服务端功能开发中,主要涉及以下几个关键知识点: 1. **微信支付API集成**:微信提供了一套完整的支付SDK,服务端需要集成这些接口以实现支付功能。首先,需要注册微信商户平台账号,...

    PHP:微信小程序 微信支付服务端集成实例详解及源码下载

    同时,为了调试和测试,还可以设置微信支付的沙箱环境,以模拟真实支付流程而不会产生实际费用。 为了便于理解和实践,可以下载提供的源码,根据自己的业务需求进行修改和配置,确保服务端与小程序端的通信顺畅,并...

    微信开发调试小工具 v1.0.zip

    使用这个小工具_微信开发调试小工具,就可以解决这个问题了,即使是超时(微信服务端只给了5秒时间),也不用怕了,当然不超时最好了。 微信开发调试工具: 1.请求网址 请求网址输入你在公众平台开发模式下的那个...

    仿微信聊天软件Socket实现(包含客户端和服务端)

    此外,为了模拟微信的聊天功能,还需要考虑多线程技术。服务端可能同时处理多个客户端的连接,因此每个客户端的Socket通信应该在一个单独的线程中进行,以防止阻塞其他客户端的请求。客户端也可能需要在不同的线程中...

    c#调用微信扫一扫及其他功能,包含自己写的微信帮助类.cs

    在C#编程环境中,微信API的集成是常见的需求,尤其对于开发桌面应用或者服务端程序时,需要与微信进行交互,实现诸如“扫一扫”这样的功能。这个资源包提供了一个自定义的微信帮助类(wxHelper.cs),使得开发者可以...

    微信支付与微信h5输入密码支付.zip

    - **预支付请求**:开发者先向微信支付服务端发送预支付请求,包含订单信息(如商品ID、价格、订单描述等)。 - **预支付返回**:微信返回预支付交易会话标识(prepay_id),用于后续生成支付二维码或H5支付链接。...

    2048-微信小程序

    同时,小程序引入了小程序API,提供与微信服务端交互的能力。 在开发2048游戏时,我们首先需要设计游戏界面。游戏界面通常包括一个4x4的数字棋盘,以及得分、最高分等显示区域。这些元素都可以通过WXML和WXSS来实现...

    java项目-微信小程序支付

    - 模拟测试:使用微信支付提供的沙箱环境进行模拟交易,验证接口和流程的正确性。 - 调试工具:利用微信开发者工具和日志系统进行问题定位,优化用户体验。 这个项目涉及的技术栈包括Java后端开发、微信支付API...

    仿香哈菜谱界面设计-微信小程序源码

    由于香哈菜谱没有免费对外开发api,所以只有模拟服务端提供的香哈头条列表的数据,有了数据,页面才能动态地进行渲染。 9.香哈头条里有菜谱的图片、美食名称、分类、浏览数量以及评论数量,因为香哈头条列表信息在很...

    jmeter4.0进行微信小程序测试

    - **服务端**:型号为iZnpj215qhovuZ的服务器,运行Windows Server 2008 R2 Enterprise操作系统,配备E5-2682处理器和8GB内存。 - **移动端**:小米Max1手机,运行Android 8.0操作系统,搭载高通骁龙650处理器和32GB...

    微信小程序支付

    - **测试环境**:在开发和测试阶段,使用微信提供的沙箱环境进行模拟支付,确保功能正常后再上线。 5. **文件分析**: 压缩包中的“微信支付小程序+Java springmvc(1)”可能包含以下内容: - 小程序的源码,用于...

    微信小程序客户端渗透测试

    在服务端层面,主要是依据微信小程序的特性,模拟攻击者从SQL注入、越权访问、文件上传、CSRF以及信息泄露等漏洞方面进行测试,这个其实与常规的web安全测试类似。 本此主要是对客户端测试的总结,包括操作流程,所...

Global site tag (gtag.js) - Google Analytics