thinkphp WeChat 開発: セーフ モードのメッセージの暗号化と復号化
thinkphp の公式 WeChat パッケージを使用すると、さまざまなモードを正常に使用できますが、セーフ モードは機能しません。分析とソリューションの結果が記録されます。 。
>
問題の分析:
WeChat サーバー メッセージの復号化は常に失敗します。WeChat パブリックをダウンロードします。プラットフォームによって公式に提供されたファイルを復号化し、WechatCrypt.class.php に問題がないことがわかりました。 file_put_contents 関数を使用して、分析用に復号化されたファイルを保存します。公式パッケージで復号化された XML は標準の XML 形式ではないため、simplexml_load_string 関数では処理できないことが判明しました。
1 | <span style= "color: #008000;" > </span> <span style= "color: #0000ff;" > public </span> <span style= "color: #0000ff;" > function </span> decrypt(<span style= "color: #800080;" > $encrypt </span><span style= "color: #000000;" >){ </span><span style= "color: #008000;" >
|
ログイン後にコピー
解決策:
出力 XML ファイルは次のようになります
1 | <span style= "color: #008080;" >1</span> <span style= "color: #0000ff;" ><</span><span style= "color: #800000;" >xml</span><span style= "color: #0000ff;" >></span><span style= "color: #008080;" >2</span> <span style= "color: #0000ff;" ><</span><span style= "color: #800000;" >ToUserName</span><span style= "color: #0000ff;" >></span><span style= "color: #0000ff;" ><![CDATA[</span><span style= "color: #808080;" >gh_249aeb986d99</span><span style= "color: #0000ff;" >]]></span><span style= "color: #0000ff;" ><</span><span style= "color: #800000;" >\/ToUserName</span><span style= "color: #0000ff;" >></span><span style= "color: #000000;" >\n</span><span style= "color: #008080;" >3</span> <span style= "color: #0000ff;" ><</span><span style= "color: #800000;" >FromUserName</span><span style= "color: #0000ff;" >></span><span style= "color: #0000ff;" ><![CDATA[</span><span style= "color: #808080;" >oopVmxHZaeQkDPsRcbpwXKkH-J2Q</span><span style= "color: #0000ff;" >]]></span><span style= "color: #0000ff;" ><</span><span style= "color: #800000;" >\/FromUserName</span><span style= "color: #0000ff;" >></span><span style= "color: #000000;" >\n</span><span style= "color: #008080;" >4</span> <span style= "color: #0000ff;" ><</span><span style= "color: #800000;" >CreateTime</span><span style= "color: #0000ff;" >></span>1448944621<span style= "color: #0000ff;" ><</span><span style= "color: #800000;" >\/CreateTime</span><span style= "color: #0000ff;" >></span><span style= "color: #000000;" >\n</span><span style= "color: #008080;" >5</span> <span style= "color: #0000ff;" ><</span><span style= "color: #800000;" >MsgType</span><span style= "color: #0000ff;" >></span><span style= "color: #0000ff;" ><![CDATA[</span><span style= "color: #808080;" >text</span><span style= "color: #0000ff;" >]]></span><span style= "color: #0000ff;" ><</span><span style= "color: #800000;" >\/MsgType</span><span style= "color: #0000ff;" >></span><span style= "color: #000000;" >\n</span><span style= "color: #008080;" >6</span> <span style= "color: #0000ff;" ><</span><span style= "color: #800000;" >Content</span><span style= "color: #0000ff;" >></span><span style= "color: #0000ff;" ><![CDATA[</span><span style= "color: #808080;" >\u7ecf\u7406</span><span style= "color: #0000ff;" >]]></span><span style= "color: #0000ff;" ><</span><span style= "color: #800000;" >\/Content</span><span style= "color: #0000ff;" >></span><span style= "color: #000000;" >\n</span><span style= "color: #008080;" >7</span> <span style= "color: #0000ff;" ><</span><span style= "color: #800000;" >MsgId</span><span style= "color: #0000ff;" >></span>6223169761311044588<span style= "color: #0000ff;" ><</span><span style= "color: #800000;" >\/MsgId</span><span style= "color: #0000ff;" >></span><span style= "color: #000000;" >\n</span><span style= "color: #008080;" >8</span> <span style= "color: #0000ff;" ><</span><span style= "color: #800000;" >\/xml</span><span style= "color: #0000ff;" >></span>
|
ログイン後にコピー
したがって、次のようにする必要があります処理済み simplexml_load_string が
を処理できるようにするには、出力プレーン テキスト コンテンツとセーフ ファイルの後に
1 | <span style= "color: #008080;" >1</span> <span style= "color: #000000;" >
|
ログイン後にコピー
を追加します。モードは通常使用されます。