A. 用python怎麼設計一個微信的介面
最近一段時間想看看能不能用萬能的python來對微信進行一些操作(比如自動搶紅包之類的...hahahaha),所以就在此記錄一下啦~~
1、安裝
sudo pip install itchat
2、登錄
itchat.auto_login()
註:itchat.auto_login()這種方法將會通過微信掃描二維碼登錄,但是這種登錄的方式確實短時間的登錄,並不會保留登錄的狀態,也就是下次登錄時還是需要掃描二維碼,如果加上hotReload==True,那麼就會保留登錄的狀態,至少在後面的幾次登錄過程中不會再次掃描二維碼,該參數生成一個靜態文件itchat.pkl用於存儲登錄狀態
itchat.auto_login(hotReload=True)
3、退出登錄
主要使用的是回調函數的方法,登錄完成後的方法需要賦值在 loginCallback中退出後的方法,需要賦值在 exitCallback中.若不設置 loginCallback的值, 將會自動刪除二維碼圖片並清空命令行顯示.
import itchat,time
def lcb():
print("登錄完成!")
def ecb():
print("退出成功!")
itchat.auto_login(loginCallback=lcb,exitCallback=ecb) #源碼中規定需要用回調函數。
time.sleep(10)
itchat.logout() #強制退出登錄
4、發送消息
send()
itchat.send(msg="WANGPC的微信消息!",toUserName="filehelper") #返回值為True或Flase
或者:
send_msg
send_msg(msg='Text Message', toUserName=None),其中的的msg是要發送的文本,toUserName是發送對象, 如果留空, 將發送給自己,返回值為True或者False
實例代碼
send_file
send_file(fileDir, toUserName=None) fileDir是文件路徑, 當文件不存在時, 將列印無此文件的提醒,返回值為True或者False
實例代碼
send_image
send_image(fileDir, toUserName=None) 參數同上
實例代碼
send_video
send_video(fileDir, toUserName=None) 參數同上
實例代碼
B. 微信小程序與python服務,如何進行參數傳遞
python+requests對app和微信小程序進行介面測試
對於web端和app端的介面測試來說,他們都是通過請求方法,url和傳遞的body參數進行介面請求,區別web和app的區別就是header請求的不同。不同的地方在於header中的User-Agent參數。
web常用的User-Agent參數:
Chrome:
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11
Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16
Firefox :
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0
Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10
app常用的User-Agent參數:
IPhone:
Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5
Android
Mozilla/5.0 (Linux; U; Android 2.2.1; zh-cn; HTC_Wildfire_A3333 Build/FRG83D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
Mozilla/5.0 (Linux; U; Android 2.3.7; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
一、怎麼進行app和微信小程序的介面測試
對於介面測試來說可以使用兩種方式進行介面測試,一種是工具進行介面測試,一種是自己編寫腳本進行介面測試。
進行重點給大家說一下使用python+requests腳本進行手機app和微信小程序的介面測試
二、使用python+requests進行app和微信小程序介面測試
腳本編寫和測試web端的一樣,唯一改動的地方就是header頭部請求中User-Agent參數需要改成手機請求。
這樣就是訪問網路的手機端的請求了。
三、使用介面測試工具進行app和微信小程序介面測試
一樣更改header頭部請求中的user-agent參數,這兩個請求分別的模擬Android和iOS,可以根據自己的情況進行選擇。
這就是app和微信小程序介面測試的兩種方法
C. 如何使用Python開發微信小程序
使用python做後台服務,提供數據介面
用微信小程序提供的前端api和文檔寫前端頁面
D. python 如何怎麼解析微信支付回調
微信支付是由微信及財付通聯合推出的移動支付創新產品。如今,隨著微信支付的全面開放,相關需求也越來越多,很多開發人員進行微信支付開發及商家申請微信支付時,面臨著諸多疑惑。本文將結合微信支付介面開發的實踐,從支付申請到各主要介面的使用方法等方面介紹微信支付的關鍵點技術。URL設置目前,微信支付只能由通過微認證的服務號進行申請,訂閱號及未認證的服務號均無法申請。登錄微信公眾平台後台,在左側的欄目中可找到「微信支付」,點擊進入申請界面,可以看到第一項中的「商戶基本資料」,點擊右側的「填寫」按鈕後就進入了微信支付設置界面。微信支付的目錄及URL沒有固定的設置方法,具體還需要根據自己的需求來定,表1是方倍工作室的方案。
E. 有Python玩得好的大神嗎,寫個安卓程序,自動抓取微信,釘釘,QQ裡面某人。的消息
先在群里申請「群機器人」,得到access_token 然後調用介面: #!/usr/bin/python ... 從而快速解決問題,將線上問題盡早解決,那釘釘推送消息,它有什麼好處呢?手機釘釘... 消息可以第一時間查看,報警消息的即時性要求比較高,所以適合用釘釘通知。 本文介紹...
先在群里申請「群機器人」,得到access_token 然後調用介面: #!/usr/bin/python ... 從而快速解決問題,將線上問題盡早解決,那釘釘推送消息,它有什麼好處呢?手機釘釘... 消息可以第一時間查看,報警消息的即時性要求比較高,
所以適合用釘釘通知。 本文介紹...
F. 用python可以做微信小程序嗎
其實微信小程序作為一個前端的機制,Python並不能插上邊。只不過可以作為後端介面為微信小程序提供數據服務而已。python可以做後端服務和小程序通訊,python可以寫後端平台,提供api,微信小程序就用wx.request()調用這個api。
微信小程序主要的三大塊wxml控制頁面結構、wxss控制頁面樣式、js控制頁面邏輯。
如果創建的是一個不需要後端伺服器支持的微信小程序,那麼與Python就沒什麼關系了。
如果需要後端傳送接收處理數據,那麼後端就還有Python的用武之地,可以用Python的Web框架寫一個後端介面供小程序進行調用。
更多Python知識請關注Python自學網。
G. 微信網頁支付應該怎麼調用微信介面
1、申請微信支付。小程序認證以後,可以在小程序後台,微信支付菜單欄,申請微信支付。填寫企業信息和對公賬戶,微信支付會打一筆隨機金額到對公賬戶,輸入金額完成驗證後,在線簽署遷移,即完成了微信支付的申請流程。
微信支付申請完,會發送微信支付商戶號,商戶平台用戶名密碼等信息到注冊者郵箱。
2、配置小程序密鑰。小程序後台設置頁,點擊生成,管理員驗證二維碼後,會隨機生成AppSecret。請妥善保管好Appsecret,不要明文存儲於伺服器,AppSecret用於和微信伺服器交互。比如獲取用戶的openid介面就需要用到.
3、設置密鑰和下載證書
用申請微信支付獲得的用戶名和密碼,登錄商戶平台(pay.weixin.qq.com),在賬戶中心,API安全中下載證書和設置密鑰。
密鑰是32位,設置以後需要妥善保管,因為無法查看密鑰,所有微信支付相關的介面都會使用這個密鑰加密。
4、配置HTTPS伺服器 小程序的前端是使用微信提供的框架開發,但是後台依然是開發者自己的伺服器。小程序發起的是HTTPS請求,意味著小程序開發者必須配置HTTPS伺服器。配置HTTPS伺服器之前,先要獲取證書,證書可以向相關機構購買,騰訊雲目前可以向用戶提供免費的證書。
5、微信支付流程
微信支付有多種支付方式,包括刷卡支付,公眾號支付,掃碼支付,APP支付,所有微信支付的介面都可以到官方找到。小程序是在微信里調起支付的,其實是公眾號支付,關於公眾號支付的詳細文檔可以這里找到:http://bbs.html51.com/f-37-1/。所有公眾號支付相關的鏈接都可以在此鏈接找到,開發者首先需要大概了解這些介面。
6、小程序調起微信支付,用的是小程序微信支付介面wx.requestPayment,該介面的詳細描述可以查看小程序的微信支付API。
這個介面中的package和timeStamp參數是從開發者的第三方伺服器返回的,package是第三方伺服器從統一下單介面回復中獲得。
介面中其他的參數,appId,noceStr,signType以及paySign則由小程序這邊存儲或者計算而得。
H. 如何用Python進行微信二次開發
創建步驟:
1.申請免費且支持python的伺服器,新浪雲sae,新建SAE應用之後,有兩種代碼提交方式,建議使用SVN(因為git支持代碼提交,但不支持環境配置);
2.將對應版本的信息復制到微信開發-基本配置-URL,提交顯示錯誤,因為還沒有寫代碼,可以先用web框webpy架寫個網頁;
查看webpy使用說明:http://www.webpy.org/install.zh-cn
查看ase進行python開發入門說明:http://www.sinacloud.com/doc/sae/python/index.html
3.配置信息,告訴新浪雲需要什麼運行環境。點擊代碼管理-編輯代碼,將用到的第三方庫信息寫入config.yaml,注意破折號,冒號後面空格!!
libraries:
-name:webpy
version:"0.36"
-name:lxml
version:"2.3.4"
在index.wsgi文件中寫入python啟動程序
新建文件,寫入接受微信get請求驗證的Python文件
4.在index.wgsi中寫入以下信息:
#coding=utf-8
importos
importsae
importweb#配置web的路由
urls=(
'/weixin','WeixinInterface'
)
#拼接路徑
app_root=os.path.dirname(__file__)
templates_root=os.path.join(app_root,'templates')
#渲染模版
render=web.template.render(templates_root)
#啟動app
app=web.application(urls,globals()).wsgifunc()
application=sae.create_wsgi_app(app)
5.在自己編寫的Python文件中寫入微信驗證和接受信息的程序
#coding=utf-8
importhashlib
importweb
importtime
importos
fromlxmlimportetree
#hashlib用於加密,md5,hash等
#lxml用來解析xml文件
classWeixinInterface(object):
#初始化
def__init__(self):
#拼接路徑
self.app_root=os.path.dirname(__file__)
self.templates_root=os.path.join(self.app_root,'templates')
#渲染模版
self.render=web.template.render(self.templates_root)
#使用get方法,接收微信的get請求,看開發者文檔的說明
#http://mp.weixin.qq.com/wiki/8/.html
defGET(self):
data=web.input()
signature=data.signature#微信加密簽名
timestamp=data.timestamp#時間戳
nonce=data.nonce#隨機數
echostr=data.echostr#隨即字元串
token='zq90857'#自己設置的token
#將token、timestamp、nonce三個參數進行字典序排序
list=[token,timestamp,nonce]
list.sort()
#將三個參數字元串拼接成一個字元串進行sha1加密
sha1=hashlib.sha1()
map(sha1.update,list)
temStr=sha1.hexdigest()#加密
#判斷
iftemStr==signature:
returnechostr
6.假設接收文字信息,按照開發者文檔的要求,配置template文件夾下reply_text.xml文件
$defwith(toUser,fromUser,createtime,content)
<xml>
<ToUserName><![CDATA[$toUser]]></ToUserName>
<FromUserName><![CDATA[$fromUser]]></FromUserName>
<CreateTime>$createtime</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[$content]]></Content>
</xml>
I. 微信的"被動回復用戶消息"api介面怎麼使用,誰有python例子能幫忙給一個不,萬分感謝。
用的Django
#coding:utf-8
fromdjango.shortcutsimportrender
fromdjango.httpimportHttpResponse
fromdjango.views.decorators.csrfimportcsrf_exemptimportsettings,os,time
.etree.ElementTreeasET
fromdjango.utils.encodingimportsmart_str
@csrf_exempt
defindex(request):
ifrequest.method=='GET':
response=HttpResponse(checkSignature(request))
returnresponse
elifrequest.method=='POST':
response=HttpResponse(responseMsg(request),content_type="application/xml")
returnresponse
MSG_TYPE_TEXT="text"
defresponseMsg(request):
rawStr=smart_str(request.body)
msg=parseMsgXml(ET.fromstring(rawStr))
replyContent=""
ifmsg['MsgType']==MSG_TYPE_TEXT:
replyContent="自動回復內容"
returngetReplyXml(msg,replyContent)
defparseMsgXml(rootElem):
msg={}
ifrootElem.tag=='xml':
forchildinrootElem:
msg[child.tag]=smart_str(child.text)
returnmsg
defgetReplyXml(msg,replyContent):
extTpl="<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[%s]]></MsgType><Content><![CDATA[%s]]></Content></xml>";
extTpl=extTpl%(msg['FromUserName'],msg['ToUserName'],str(int(time.time())),'text',replyContent)
returnextTpl
J. 如何用Python實現微信自動簽到功能
題主的簽到模式是什麼樣子的?
一般來說分三種:
* 給公眾號發送特定文字
* 普通的網頁點擊
* 授權的網頁點擊
我這里給出前兩種的解決方案。
普通的網頁點擊:
1. 建議通過瀏覽器或者Wireshark分析消息的交互。
2. 之後通過requests模擬。
由於沒有具體的網址,我沒有辦法給出具體的代碼。
給公眾號發送特定的問題:
1. 建議使用Python的微信API(pip install itchat)
2. 由於沒有提供Python版本,我這里給出兼容的解決方案
#coding=utf8
import threading
import itchat
SIGN_IN_MP_DICT = {
u'學校微信公眾號': u'學校簽到口令',
u'公司微信公眾號': u'公司簽到口令', }
def get_day(timeGap):
return int(time.strftime('%y%m%d', time.localtime(time.time() + timeGap)))
NEXT_SIGN_DATE = get_day(60*60*24)
def sign_in_thread():
''' 簽到線程
如果尚未到需要簽到的日期,則繼續循環
如果到了需要簽到的日期,則完成兩個公眾號的簽到,並更新日期
'''
while 1:
if get_day < NEXT_SIGN_DATE:
time.sleep(30)
else:
for k, v in SIGN_IN_MP_DICT.items():
itchat.send(msg=v,
toUserName=itchat.search_mps(name=k)[0]['UserName'])
NEXT_SIGN_DATE = get_day(60*60*24)
itchat.auto_login(True)
# 測試是否存在特定公眾號
for mpName in SIGN_IN_MP_DICT.keys():
mpList = itchat.search_mps(name=mpName)
if len(mpList) != 1:
print(u'沒有檢測到公眾號「%s」,請檢查名稱')
break
else:
signInThread = threading.Thread(target=sign_in_thread)
signInThread.setDaemon(True)
signInThread.start()
itchat.run()