https://www.cnblogs.com/yangfengwu/p/11062034.html
IPホワイトリストを設定します。サーバーのIPアドレスを入力します
可能ですか?このピットには何人が入りますか...公式、、、ああ
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1472017492_58YV5
彼は、あなたを意味します
ランダムに書くのではなく、httpを使ってあなたのコンテンツにアクセスします。あなたのコンテンツに書かれているトークンはあなたのウェブページに書かれているものと同じで、それから戻ってきます。この場合はOKです。 。
したがって、サーバー上にいくつかのプログラムを作成する必要があります
Pythonの公式リファレンスプログラム
データ記事ではPythonを使用しているので、最初にpythonで実装してから、phpで実装しましょう。
https://www.cnblogs.com/yangfengwu/category/1410242.html
私は以前にたくさんの知識を準備しました、そして今私はそれを少し使っています...チュートリアル全体は本当にあまり良くありません、、、それはあまりにも多くを含みます、私はチュートリアルをする前に要約するのに多くの時間を費やしました。 。
次に、基本の章、アップグレードの章、データの章、セキュリティの章、そして最後にWeChatアプレットの章があります。
誰かがいつも私に不平を言います、なぜ最初に全部をインストールする人がいないのですか、私はいつも言います、あなたはセクションごとにビデオチュートリアルを見ることができます、そして各セクションで使用されるすべてのものはビデオのすべてのセクションにそれを置きますチュートリアル。
私のチュートリアルはあまりにも多くを含みます、そして私はこの方法でそれをするのが最良の方法です。
ちなみにもう一つあります。自分の学習能力は完全に確信していますが、長期間の自習(2〜3年)を経て、現在の自習能力(学習知識の考え方)は形成された...なぜこんなに早く何かを学ぶのか考えたことがありませんでした。長い間自習した後、驚くべき自己学習能力を身につけることができると思っていました。それから時々記事を読んで、なぜ自分が物事をとても速く学びます。良い...見つけられるべきルールがあることがわかりました、しかし私は長い間気付かずにこの種の学習思考を形成しました...
これは私が以前書いた日記です
https://www.cnblogs.com/yangfengwu/p/11062408.html
最初に学んだことをお話ししましょう。知識ポイントを学ぶたびに、この知識ポイントを自分自身に説明させようとします。自分自身に理解できない場合は、この知識ポイントを引き続き見ていきます。そして、それは私が自分自身にそれを与えるまでループし続けます。私は自分自身に言いました、私はこの知識のポイントを本当に完全に理解しました...私は大学の2年生からこのように自分自身を学びました..私は孤独で苦しんでいます、そして苦痛ですが、私は固執します。なぜなら...なぜ私がそれに固執できるのか、誰もが私に同意しないとき、多くの人が私を嫌うとき、そして多くの人が私を嘲笑し始めるとき...もっと私は持続する.....それを忘れて、それはすべて古いものです
皆さん、ファインマンの学習方法を世界最高の学習方法である百度にダウンロードしてください。100%同意します。
https://jingyan.baidu.com/article/4ae03de3cf103c3eff9e6bb6.html
さて、続けましょう
データ記事を開いてPythonソフトウェアを開発し、新しいプロジェクトを作成して、公式の例をコピーしましょう
実際、これはPythonで実装されたWebサーバーであり、getコマンドを受け取った場合は、WeChat getコマンドを解析します(つまり、[送信]をクリックしたときにWeChatから送信されたgetメッセージで、getアドレスはアドレスです。上記に記入しました)情報、そして情報を返します...終了しました
関係者によると、新しいmain.pyを作成して、Webサーバーが
ソフトウェアにWebモジュールをインストールさせましょう...データ記事https://www.bilibili.com/video/av55668802を参照でき ます。
これがあり ますhttps://www.cnblogs.com/yangfengwu/p/10177261.html
インストールに失敗しました
pycharmインターフェースで、alt + F12を押してコマンドラインウィンドウを呼び出します
詳細については、http://webpy.org/docs/0.3/tutorialを参照してください 。
これは大丈夫であることがわかります、このプログラムは利用可能です
その後、書き続けます
import sys sys.path.append(sys.path [0] + '/ venv / Lib / site-packages') import web from handle import Handle urls =( '/ wx'、 'Handle'、 ) if __name__ == ' __main __ ':app = web.application(urls、globals()) app.run()
バージョンの問題でエラーが報告されました
3.6バージョンには別の場所があります
括弧を追加する必要があります
しかし、まだ問題があります...このモジュールはインポートできません
....最初に解決策を見つけないでください、私は直接来ます
import sys sys.path.append(sys.path [0] + '/ venv / Lib / site-packages') import web import hashlib urls =( '/ wx'、 'Handle'、 ) class Handle(object): def GET(self): try: data = web.input() if len(data)== 0: return "hello、this is handle view" Signature = data.signature timestamp = data.timestamp nonce = data.nonce echostr = data .echostr token = "xxxx" #public platform \ Basic configurationの公式ウェブサイトの情報に従って、 リスト= [トークン、タイムスタンプ、ナンス] リストに入力してください。sort() sha1 = hashlib.sha1() map(sha1.update、list) hashcode = sha1.hexdigest() print( "handle / GET func:hashcode、signature:"、hashcode、signature) if hashcode == Signature: return echostr else: return "" ただし、例外を引数として: return Argument if __name__ == ' __main __ ':app = web.application(urls、globals()) app.run()
もう一つ
次に、プロジェクトをクラウドに配置します。アップロードする前に圧縮することをお勧めします。そうしないと、処理が遅くなります。
前のをオフにすることを忘れないでください
エラーを報告しました
ソフトウェアを使用して開いたり変更したりすることをお勧めします。そうしないと、他のメモ帳ファイルのエンコードとインデントが原因で、コードに問題がないように見える可能性があります。実際、内部コーディングに問題があります。
オリジナルを入れて
next(seq)を生成します
に
try:StopIterationを除く
next(seq)
を生成します:
return
インデントに注意してください
それでも問題が解決しない場合は、自分のコンピューターでローカルにテストを変更してから、クラウドに配置してください
その後
まだ問題があります
2つの計算値は同じではありません............
ハンドル/ GET関数:ハッシュコード、署名:da39a3ee5e6b4b0d3255bfef95601890afd80709
494b4ed79eb454e574421526b8a053799075299f 223.166.222.112:49585
--- [21 / Jun / 2019 07:54:58] "HTTP / 1.1 GET / wx" --200 OK
ハッシュコード= da39a3ee5e6b4b0d3255bfef95601890afd80709
署名= 494b4ed79eb454e574421526b8a053799075299f
...理由を探します
わかりましたが、コードを変更する必要があります
コードを変更しました
import sys sys.path.append(sys.path [0] + '/ venv / Lib / site-packages') import web import hashlib urls =( '/ wx'、 'Handle'、 ) class Handle(object): def GET(self): try: wechat_data = web.input() signature = wechat_data ['signature'] timestamp = wechat_data ['timestamp'] nonce = wechat_data ['nonce'] echostr = wechat_data ['echostr'] token = 'mnifdv ' check_list = [トークン、タイムスタンプ、ナンス] check_list.sort() s1 = hashlib.sha1() s1.update(''.join(check_list).encode()) hashcode = s1.hexdigest() print( "handle / GET func:hashcode、signature:{0} {1}"。format(hashcode、signature)) if hashcode == Signature: return echostr else: return ""( 例外を除く)引数: return引数 "" " class Handle(object): def GET(self): try: data = web.input() if len(data)== 0: return" hello、this is handle view " signature = data。署名 タイムスタンプ= data.timestamp nonce = data.nonce echostr = data.echostr token = "mnifdv"#请按照公众平台官法律\基本配置中信息S写 リスト= [トークン、タイムスタンプ、ナンス] list.sort() sha1 = hashlib.sha1() map(sha1.update、list ) hashcode = sha1.hexdigest() print( "signature =%s \ r \ n"、signature) print( "timestamp =%s \ r \ n"、timestamp) print( "nonce =%s \ r \ n" 、nonce) print( "echostr =%s \ r \ n"、echostr) print( "hashcode =%s \ r \ n"、hashcode) if hashcode == sign :return echostr else: return "" 引数としての例外を除く : __ name__ == ' __ main__ 'の場合は 引数 "" "を返します :app = web.application(urls、globals()) app.run()
実際、私はBaiduのWeChatトークンでPythonを直接検証しています。プログラムを読んでいるので、本質的にはWeChatが最初にハッシュを使用するということです。
トークン、タイムスタンプ、ナンスはハッシュを使用して署名を計算します。 また、彼のアルゴリズムを使用してハッシュコードを計算し、2つを比較します。同じ場合は、次の ように計算されるため、echostrを返します...正しくない場合は、間違いなくそれはプログラムがデータを取得する方法、または計算データに影響を与える計算のいくつかの小さな詳細です... 他の人はそれを研究し、同様の問題に遭遇したに違いないので、Baiduに 元のmain.pyを置き換えるように指示してください
https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.3e3b1deb80xzYz&id=569295486025 わかりました。このセクションは最初に自分で要約し、次のセクションではphpを使用してhttps://を実装します。 www.cnblogs.com/ yangfengwu / p / 11066036.html