1. 3 種類の WeChat 公開アカウント
ウェブサイトにアクセスします: https://mp.weixin.qq.com WeChat に登録する際には、3 種類の WeChat 公開アカウント (サブスクリプション) を登録する必要があります。アカウント、サービス アカウント、エンタープライズ アカウント) の違いは次のとおりです:
最も一般的に使用されるパブリック アカウントは、サブスクリプション アカウントであり、エンタープライズ アカウントは通常、同じ会社の従業員によって通信とコラボレーションに使用されます。アカウント アカウントは公開されておらず、外部からアクセスできません。また、会社の従業員のみがアクセスできます。サブスクリプション アカウントとサービス アカウントは公開されており、誰でもフォローできます。サブスクリプション アカウントは通常、フォロワーにグラフィック情報を定期的にプッシュするために使用され、サービス アカウントには WeChat 支払い機能があるため、通常は商業目的で使用されます。例えば、マイクロモール、マイクロオークションなど。
2. WeChat開発者機能をオンにする
WeChat公式アカウントを申請した後、WeChatプラットフォームで開発する必要がある場合は、まずWeChat開発者機能をオンにする必要があります。 WeChat 開発者機能を有効にするには、確認コードを記述する必要があり、アクセス可能な URL が必要です。まず、WeChat パブリック プラットフォームにログインします: https://mp.weixin.qq.com/
[開発者センター] をクリックし、[同意する] にチェックを入れ、[開発者になる] をクリックします:
次のページ:
「構成項目」をクリックします。ここには、入力するための URL とトークンが含まれています。URL は、開発者機能がオンになっている場合に、WeChat サーバーが URL のアドレスに get リクエストを送信することを意味します。 get リクエストのパラメーターは次のとおりです: :
1) タイムスタンプ: timestamp
2) 乱数: nonce
3) ランダムな文字列: echostr
4) 値で構成される文字列の SHA-1 アルゴリズム上記の 3 つのパラメータを辞書順に並べたもの 要約情報: 署名
私たちが実現したいことは、埋め込まれた URL の get リクエスト処理クラスでタイムスタンプ、ノンス、エコーストラ、署名の 4 つのパラメータを取得し、次を使用することです。タイムスタンプ、ノンス、トークンの辞書を作成する同じメソッド。文字列は SHA-1 アルゴリズムの概要情報の署名 2 を計算し、署名 2 と署名の値を比較して、それらが同じかどうかを確認します。 、echostr がそのまま返されます。WeChat サーバーが echostr を受信すると、開発者機能は正常に有効になります。ここでのトークンは上記で入力するトークンであることに注意してください
注: Alipay にアクセスしたことがある場合は、ここでの検証と Alipay の検証との間にはわずかな違いがあることがわかります。パラメータとパラメータ値で構成されるキーと値のペアのキーの辞書の順序に従って、文字列の構成は次のとおりです: key1=value1+ & + key2=value2、WeChat が検証に参加する文字列は次のとおりです: value1 + value2 + ... にはキーは含まれず、value のフィールド順序に従ってソートされます。
対応する Java コードは次のとおりです:
WeChat の get リクエストを処理するサーブレット:
/** * 微信请求处理的核心类 */ public class CoreServlet extends HttpServlet { private static final long serialVersionUID = 4440739483644821986L; /** * 请求校验(确认请求来自微信服务器) */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 微信服务端发来的加密签名 String signature = request.getParameter("signature"); // 时间戳 String timestamp = request.getParameter("timestamp"); // 随机数 String nonce = request.getParameter("nonce"); // 随机字符串 String echostr = request.getParameter("echostr"); PrintWriter out = response.getWriter(); // 请求校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败 if (SignUtil.checkSignature(signature, timestamp, nonce)) { out.print(echostr); } out.close(); }
リクエスト検証ツール クラス:
package com.sinaapp.wx.util; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Arrays; import com.sinaapp.wx.config.ParameterConfig; /** * 请求校验工具类 */ public class SignUtil { /** * 校验签名 * * @param signature 微信加密签名 * @param timestamp 时间 * @param nonce 随机字符串 * @return */ public static boolean checkSignature(String signature, String timestamp, String nonce) { String token = ParameterConfig.WX_TOKEN; String[] paramArr = new String[] { token, timestamp, nonce }; Arrays.sort(paramArr); // 对token、timestamp和nonce按字典排序 // 将排序后的结果拼接成字符串 StringBuilder sb = new StringBuilder(paramArr[0]); sb.append(paramArr[1]); sb.append(paramArr[2]); String cipherText = null; try { MessageDigest md = MessageDigest.getInstance("SHA-1"); byte[] digest = md.digest(sb.toString().getBytes()); // 对接后的字符串进行sha1加密 cipherText = byteToStr(digest); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } // 将加密后的字符串与微信服务器发来的签名signature进行对比 return cipherText != null ? cipherText.equals(signature.toUpperCase()) : false; } /** * 将字节数组转换为十六进制字符 * * @param byteArray * @return */ private static String byteToStr(byte[] byteArray) { String strDigest = ""; for (int i = 0; i < byteArray.length; i++) { strDigest += byteToHexStr(byteArray[i]); } return strDigest; } /** * 将单个字节转换为十六进制字符 * * @param mByte * @return */ private static String byteToHexStr(byte mByte) { char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; char[] tempArr = new char[2]; tempArr[0] = Digit[(mByte >>> 4) & 0X0F]; // 取一个字节的高4位,然后获得其对应的十六进制字符 tempArr[1] = Digit[mByte & 0X0F]; // 取一个字节的低4位,然后获得其对应的十六进制字符 return new String(tempArr); } }
コード内の String token の値 = ParameterConfig.WX_TOKEN上記と同じである必要があります。入力されたトークンは一貫しています。 web.xml でサーブレットを設定します:
<servlet> <servlet-name>coreServlet</servlet-name> <servlet-class>com.sinaapp.wx.servlet.CoreServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>coreServlet</servlet-name> <url-pattern>/coreServlet</url-pattern> </servlet-mapping>
次に、パブリック ネットワークからアクセスできる URL の下に配置し、上記の URL にサーブレットのアクセス アドレスを入力します。次に、「送信」ボタンをクリックします。すべてが成功すると、次のプロンプトメッセージが表示されます:
この時点で、WeChat の開発者機能が正常に有効になり、WeChat を開発できるようになります。 WeChat 決済で使用される AppID と AppSecret を取得しました。
注:
WeChat 開発ドキュメントのアドレスは次のとおりです: http://mp.weixin.qq.com/wiki/home/index.html
次のように WeChat 開発ドキュメントを開きます:
その他の記事についてマルチ WeChat 開発と開発者になる方法に関連する場合は、PHP 中国語 Web サイトに注目してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

Dreamweaver Mac版
ビジュアル Web 開発ツール

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ホットトピック









