8-STM32モノのインターネット開発WIFI(ESP8266)+ GPRS(Air202)システムソリューションWeChatミニプログラム(WeChat配信ネットワークConfiguration_Developer Basic Configuration_1)

 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://baike.baidu.com/item/%E7%90%86%E6%9F%A5%E5%BE%B7%C2%B7%E8%B4%B9%E6%9B%BC/2149327?fromtitle =%E8%B4%B9%E6%9B%BC&fromid = 433887&fr =アラジン     の人生

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

おすすめ

転載: blog.csdn.net/qq_14941407/article/details/93680669