マイクロPythonのパブリック・チャネル(基本構成およびキャリブレーション)の開発ません

序文

最近、以前のpythonで行われていない企業のマイクロチャネル公共数、の開発は、マイクロチャネルのパブリック番号を開発し、独自の学習と開発プロセスを記録し、お互いを励まします!

公開番号タイプ

  • サブスクリプションの数

  • 通常のサブスクリプションの数

  • 認定サブスクリプション数

  • サービス番号

  • 通常のサービス番号

  • 認定サービス番号

サービスモード

  • いいえ公共メッセージングセッションなかっ:パッシブ応答を含みます

  • 公開番号埋め込まれたWebページ

いいえ公共のメッセージタイプありません

  • グループメッセージング:いいえユーザーは、公開してメッセージを送信したいです。

  • パッシブ応答メッセージ:クライアントがメッセージ、数公共の返信を送信します。

  • サービスメッセージ:ユーザーがパブリックアクティブ番号にメッセージを送信すると、公衆がメッセージを送信するために無制限の48時間とすることができます。

  • テンプレートのメッセージ:特定のテンプレートコンテンツを使用して、ユーザーにアクティブな送信メッセージ。

いいえ、パブリックWebインターフェイスありません

  • インタフェース1:

  • ユーザが基本的な情報、マイクロチャネルによって提供されるインタフェースを取得することを許可されているページ。

  • インタフェース2:

  • マイクロJS-SDK、JSコードとネイティブマイクロチャネルキットの使用。

マイクロチャネル公共番号の開発

マイクロチャンネル公衆番号を登録するには

  • 登録URLます。https://mp.weixin.qq.com/cgi-bin/readtemplateトン=登録/ step1_tmpl&LANG = zh_CNに?

  • 動作することができ、登録URLを入力する手順に従ってください。

  • 登録が成功するには、マイクロチャネルの公共プラットフォーム管理ページに入ります後

  • ホームにログインした後

  • 公共の設定番号

  • 頭部、二次元コード、名前および上に含みます。

  • マイクロ信号を提供することができます。

  • 注意:

1.公众号类型一旦被选择就无法更改;

ドッキングマイクロ手紙公衆プラットフォーム

  • サーバ構成に記入

  • URL:URLまたはドメイン名をIPポートに直接添加することができる。80でなければならないHTTPポート、HTTPSポート443でなければなりません。

  • トークン:サーバ公開マイクロチャネル番号サーバを識別するためのシグネチャを生成するステップと

  • EncodingAESKey:メッセージの暗号化キーのセット。

  • 検証サーバのアドレス

  • 開発者は独自のサーバー、フィルURLの提出を設定する必要があり、マイクロチャネルサーバは、次の4つのパラメータ、カスタムのリターンechostrパラメータを運んで、サーバーの開発者に要求を取得送信します。

  • 検証プロセス:

トークン、タイムスタンプ、ノンス辞書ソート三つのパラメータ
3つのパラメータストリングSHA1暗号化に一緒に文字列を
文字列の署名は、マイクロチャネルからの要求の暗号化された識別子の後に得られた開発者と比較することができます

  • ジャンゴ、フラスコ、フレームのようなweb.pyのためのクラシックチェックコード;
import hashlib
# 在视图函数中
def handle(request):
    try:
        # 先获取request
        # data = web.input()
        # if len(data) == 0:
            # return "hello, this is handle view"
        signature = request.get("signature")  # 先获取加密签名
        timestamp = data.timestamp  # 获取时间戳
        nonce = request.get("nonece")  # 获取随机数
        echostr = request.get("echostr") # 获取随机字符串
        token = "xxxx" #自己设置的token
        # 使用字典序排序(按照字母或数字的大小顺序进行排序)
        list = [token, timestamp, nonce]
        list.sort()

        # 进行sha1加密
        temp = ''.join(list)
        sha1 = hashlib.sha1(temp.encode('utf-8))
        # map(sha1.update, list)
        hashcode = sha1.hexdigest()
        
        # 将加密后的字符串和signatrue对比,如果相同返回echostr,表示验证成功
        if hashcode == signature:
            return echostr
        else:
            return ""
    except Exception as e:
        return e
  • また、サードパーティ製のパッケージを介して達成することができるwechatpy
from wechatpy.utils import check_signature
from flask import Flask

app = Flask(__name__)

def get_all_args(req_dict:Dict):
    echostr = req_dict.get("echostr")  # 获取随机字符串
    signature = req_dict.get("signature")  # 先获取加密签名
    timestamp = req_dict.get("timestamp")  # 获取时间戳
    nonce = req_dict.get("nonce")  # 获取随机数
    return echostr,signature,timestamp,nonce

@app.route('/wechat_verify/',methods=['GET'])
def wechat_verify():
    '''
    用来处理微信服务器对本后台的验证,GET方法。
    :return:
    '''
    # 获取参数
    rq_dict = request.args
    if len(rq_dict) == 0:
        return ""
    tuple_args = get_all_args(rq_dict)
    token = current_app.config.get('TOKEN')
    try:
        check_signature(token, tuple_args[1], tuple_args[2], tuple_args[3])
    except InvalidSignatureException as e:
        logger.error(e,exc_info=True)
        return ''
    else:
        return tuple_args[0]
  • ビジネス・ロジック・インターフェース

  • サービス1:通常の応答メッセージを受信

開発者のURLを記入する場合は、公共のアカウントへの一般ユーザーのマイクロチャネルメッセージ、マイクロ文字POST XMLデータ・サーバ・メッセージ・パケット、そして私たちの公共の番号が提供自動返信機能マイクロ文字を上書きします。

  • 通信に使用されるマイクロチャネルは、Pythonモジュールxmltodict処理XMLデータを使用して、XMLメッセージのデータフォーマットである; 2つの方法があります。
xmltodict.parse():可以将xml数据转为python中的dict字典数据;
xmltodict.unparse():可以将字典转换为xml字符串
  1. テキストメッセージ
# 一般也有固定的格式

<xml>
<ToUserName><![CDATA[公众号]]></ToUserName> # 开发者微信号
<FromUserName><![CDATA[粉丝号]]></FromUserName>  # 发送方微信号
<CreateTime>1460537339</CreateTime>  # 消息的创建时间
<MsgType><![CDATA[text]]></MsgType>  # 文本的格式
<Content><![CDATA[欢迎开启公众号开发者模式]]></Content>  # 内容
<MsgId>6272960105994287618</MsgId> # 消息本身的id
</xml> 
  1. 返信テキスト
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName> # 接收方账号 
<FromUserName><![CDATA[fromUser]]></FromUserName> # 开发者账号
<CreateTime>12345678</CreateTime> # 创建时间
<MsgType><![CDATA[text]]></MsgType> # 文本类型
<Content><![CDATA[你好]]></Content> # 文本内容
</xml>
  • 画像のメッセージ
<MsgType><![CDATA[image]]></MsgType>  # 图片的类型为image
<PicUrl><![CDATA[this is a url]]></PicUrl> # 图片链接
<MediaId><![CDATA[media_id]]></MediaId>  # 图片消息id
  • ビデオメッセージ
<MsgType><![CDATA[video]]></MsgType> # 视频类型为video,小视频为shortvideo
  • 音声メッセージ
<MsgType><![CDATA[voice]]></MsgType>  # 语音格式
<MediaId><![CDATA[media_id]]></MediaId>  # 消息id
<Format><![CDATA[Format]]></Format> # 语音格式,如amr

ビューの原則

  • 一般的なメッセージは、ビュー、判定処理においてビュー、ビューの数の減少に配置され処理されてもよいです。

  • 背中時間で5秒以内にない場合は、あなたは深刻な過ちを避けるために、成功または空の文字列を返すことができます。

埋め込まれたWebページを実装します

3つのステップに分け:

  1. 最初のステップ:ユーザーの同意、アクセスコード、コードは、ユーザーの許可を指し、次に立ち上げたマイクロ文字があります。
  2. ステップ2:認証コードページ交換access_tokenは、ケース通信カードマイクロ手紙で。
  3. 第三段階:(必須スコープsnsapi_userinfoとして)ユーザ情報を引っ張ります。
  • ページのコールバック認可されたドメインを設定します

ご注意ください

  • URLではなく、ドメイン名で塗りつぶし、そうHTTPを追加する必要はありません://など。

  • あなたは、IPとポートを埋めることができます。

関連ドキュメント

  • インターフェイスの資格情報access_tokenは入手マイクロチャネル公共番号:URL:https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

  • HTTPS :? //Api.weixin.qq.com/cgi-bin/getcallbackip access_tokenは= access_tokenは:マイクロチャネルのIPアドレスを取得

  • カスタムメニューインタフェースます。https://api.weixin.qq.com/cgi-bin/menu/create access_tokenは= access_tokenは?

  • マイクロチャネル開発ドキュメントします。https://mp.weixin.qq.com/wiki/home/index.html

概要:このブログは、次の正式な開発を開始し、いくつかの準備作業とマイクロチャネル公共番号の開発の全体的な理解を行うために、全体が必要です。

序文

最近、以前のpythonで行われていない企業のマイクロチャネル公共数、の開発は、マイクロチャネルのパブリック番号を開発し、独自の学習と開発プロセスを記録し、お互いを励まします!

公開番号タイプ

  • サブスクリプションの数

  • 通常のサブスクリプションの数

  • 認定サブスクリプション数

  • サービス番号

  • 通常のサービス番号

  • 認定サービス番号

サービスモード

  • いいえ公共メッセージングセッションなかっ:パッシブ応答を含みます

  • 公開番号埋め込まれたWebページ

いいえ公共のメッセージタイプありません

  • グループメッセージング:いいえユーザーは、公開してメッセージを送信したいです。

  • パッシブ応答メッセージ:クライアントがメッセージ、数公共の返信を送信します。

  • サービスメッセージ:ユーザーがパブリックアクティブ番号にメッセージを送信すると、公衆がメッセージを送信するために無制限の48時間とすることができます。

  • テンプレートのメッセージ:特定のテンプレートコンテンツを使用して、ユーザーにアクティブな送信メッセージ。

いいえ、パブリックWebインターフェイスありません

  • インタフェース1:

  • ユーザが基本的な情報、マイクロチャネルによって提供されるインタフェースを取得することを許可されているページ。

  • インタフェース2:

  • マイクロJS-SDK、JSコードとネイティブマイクロチャネルキットの使用。

マイクロチャネル公共番号の開発

マイクロチャンネル公衆番号を登録するには

  • 登録URLます。https://mp.weixin.qq.com/cgi-bin/readtemplateトン=登録/ step1_tmpl&LANG = zh_CNに?

  • 動作することができ、登録URLを入力する手順に従ってください。

  • 登録が成功するには、マイクロチャネルの公共プラットフォーム管理ページに入ります後

  • ホームにログインした後

  • 公共の設定番号

  • 頭部、二次元コード、名前および上に含みます。

  • マイクロ信号を提供することができます。

  • 注意:

1.公众号类型一旦被选择就无法更改;

ドッキングマイクロ手紙公衆プラットフォーム

  • サーバ構成に記入

  • URL:URLまたはドメイン名をIPポートに直接添加することができる。80でなければならないHTTPポート、HTTPSポート443でなければなりません。

  • トークン:サーバ公開マイクロチャネル番号サーバを識別するためのシグネチャを生成するステップと

  • EncodingAESKey:メッセージの暗号化キーのセット。

  • 検証サーバのアドレス

  • 開発者は独自のサーバー、フィルURLの提出を設定する必要があり、マイクロチャネルサーバは、次の4つのパラメータ、カスタムのリターンechostrパラメータを運んで、サーバーの開発者に要求を取得送信します。

  • 検証プロセス:

トークン、タイムスタンプ、ノンス辞書ソート三つのパラメータ
3つのパラメータストリングSHA1暗号化に一緒に文字列を
文字列の署名は、マイクロチャネルからの要求の暗号化された識別子の後に得られた開発者と比較することができます

  • ジャンゴ、フラスコ、フレームのようなweb.pyのためのクラシックチェックコード;
import hashlib
# 在视图函数中
def handle(request):
    try:
        # 先获取request
        # data = web.input()
        # if len(data) == 0:
            # return "hello, this is handle view"
        signature = request.get("signature")  # 先获取加密签名
        timestamp = data.timestamp  # 获取时间戳
        nonce = request.get("nonece")  # 获取随机数
        echostr = request.get("echostr") # 获取随机字符串
        token = "xxxx" #自己设置的token
        # 使用字典序排序(按照字母或数字的大小顺序进行排序)
        list = [token, timestamp, nonce]
        list.sort()

        # 进行sha1加密
        temp = ''.join(list)
        sha1 = hashlib.sha1(temp.encode('utf-8))
        # map(sha1.update, list)
        hashcode = sha1.hexdigest()
        
        # 将加密后的字符串和signatrue对比,如果相同返回echostr,表示验证成功
        if hashcode == signature:
            return echostr
        else:
            return ""
    except Exception as e:
        return e
  • また、サードパーティ製のパッケージを介して達成することができるwechatpy
from wechatpy.utils import check_signature
from flask import Flask

app = Flask(__name__)

def get_all_args(req_dict:Dict):
    echostr = req_dict.get("echostr")  # 获取随机字符串
    signature = req_dict.get("signature")  # 先获取加密签名
    timestamp = req_dict.get("timestamp")  # 获取时间戳
    nonce = req_dict.get("nonce")  # 获取随机数
    return echostr,signature,timestamp,nonce

@app.route('/wechat_verify/',methods=['GET'])
def wechat_verify():
    '''
    用来处理微信服务器对本后台的验证,GET方法。
    :return:
    '''
    # 获取参数
    rq_dict = request.args
    if len(rq_dict) == 0:
        return ""
    tuple_args = get_all_args(rq_dict)
    token = current_app.config.get('TOKEN')
    try:
        check_signature(token, tuple_args[1], tuple_args[2], tuple_args[3])
    except InvalidSignatureException as e:
        logger.error(e,exc_info=True)
        return ''
    else:
        return tuple_args[0]
  • ビジネス・ロジック・インターフェース

  • サービス1:通常の応答メッセージを受信

開発者のURLを記入する場合は、公共のアカウントへの一般ユーザーのマイクロチャネルメッセージ、マイクロ文字POST XMLデータ・サーバ・メッセージ・パケット、そして私たちの公共の番号が提供自動返信機能マイクロ文字を上書きします。

  • 通信に使用されるマイクロチャネルは、Pythonモジュールxmltodict処理XMLデータを使用して、XMLメッセージのデータフォーマットである; 2つの方法があります。
xmltodict.parse():可以将xml数据转为python中的dict字典数据;
xmltodict.unparse():可以将字典转换为xml字符串
  1. テキストメッセージ
# 一般也有固定的格式

<xml>
<ToUserName><![CDATA[公众号]]></ToUserName> # 开发者微信号
<FromUserName><![CDATA[粉丝号]]></FromUserName>  # 发送方微信号
<CreateTime>1460537339</CreateTime>  # 消息的创建时间
<MsgType><![CDATA[text]]></MsgType>  # 文本的格式
<Content><![CDATA[欢迎开启公众号开发者模式]]></Content>  # 内容
<MsgId>6272960105994287618</MsgId> # 消息本身的id
</xml> 
  1. 返信テキスト
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName> # 接收方账号 
<FromUserName><![CDATA[fromUser]]></FromUserName> # 开发者账号
<CreateTime>12345678</CreateTime> # 创建时间
<MsgType><![CDATA[text]]></MsgType> # 文本类型
<Content><![CDATA[你好]]></Content> # 文本内容
</xml>
  • 画像のメッセージ
<MsgType><![CDATA[image]]></MsgType>  # 图片的类型为image
<PicUrl><![CDATA[this is a url]]></PicUrl> # 图片链接
<MediaId><![CDATA[media_id]]></MediaId>  # 图片消息id
  • ビデオメッセージ
<MsgType><![CDATA[video]]></MsgType> # 视频类型为video,小视频为shortvideo
  • 音声メッセージ
<MsgType><![CDATA[voice]]></MsgType>  # 语音格式
<MediaId><![CDATA[media_id]]></MediaId>  # 消息id
<Format><![CDATA[Format]]></Format> # 语音格式,如amr

ビューの原則

  • 一般的なメッセージは、ビュー、判定処理においてビュー、ビューの数の減少に配置され処理されてもよいです。

  • 背中時間で5秒以内にない場合は、あなたは深刻な過ちを避けるために、成功または空の文字列を返すことができます。

埋め込まれたWebページを実装します

3つのステップに分け:

  1. 最初のステップ:ユーザーの同意、アクセスコード、コードは、ユーザーの許可を指し、次に立ち上げたマイクロ文字があります。
  2. ステップ2:認証コードページ交換access_tokenは、ケース通信カードマイクロ手紙で。
  3. 第三段階:(必須スコープsnsapi_userinfoとして)ユーザ情報を引っ張ります。
  • ページのコールバック認可されたドメインを設定します

ご注意ください

  • URLではなく、ドメイン名で塗りつぶし、そうHTTPを追加する必要はありません://など。

  • あなたは、IPとポートを埋めることができます。

関連ドキュメント

  • インターフェイスの資格情報access_tokenは入手マイクロチャネル公共番号:URL:https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

  • HTTPS :? //Api.weixin.qq.com/cgi-bin/getcallbackip access_tokenは= access_tokenは:マイクロチャネルのIPアドレスを取得

  • カスタムメニューインタフェースます。https://api.weixin.qq.com/cgi-bin/menu/create access_tokenは= access_tokenは?

  • マイクロチャネル開発ドキュメントします。https://mp.weixin.qq.com/wiki/home/index.html

概要:このブログは、次の正式な開発を開始し、いくつかの準備作業とマイクロチャネル公共番号の開発の全体的な理解を行うために、全体が必要です。

おすすめ

転載: www.cnblogs.com/abdm-989/p/11991407.html