検索
ホームページWeChat アプレットWeChatの開発WeChat開発で開発者になる方法
WeChat開発で開発者になる方法Feb 28, 2017 am 09:32 AM
WeChatの開発

1. 3 種類の WeChat 公開アカウント

ウェブサイトにアクセスします: https://mp.weixin.qq.com WeChat に登録する際には、3 種類の WeChat 公開アカウント (サブスクリプション) を登録する必要があります。アカウント、サービス アカウント、エンタープライズ アカウント) の違いは次のとおりです:

WeChat開発で開発者になる方法

最も一般的に使用されるパブリック アカウントは、サブスクリプション アカウントであり、エンタープライズ アカウントは通常、同じ会社の従業員によって通信とコラボレーションに使用されます。アカウント アカウントは公開されておらず、外部からアクセスできません。また、会社の従業員のみがアクセスできます。サブスクリプション アカウントとサービス アカウントは公開されており、誰でもフォローできます。サブスクリプション アカウントは通常、フォロワーにグラフィック情報を定期的にプッシュするために使用され、サービス アカウントには WeChat 支払い機能があるため、通常は商業目的で使用されます。例えば、マイクロモール、マイクロオークションなど。

2. WeChat開発者機能をオンにする

WeChat公式アカウントを申請した後、WeChatプラットフォームで開発する必要がある場合は、まずWeChat開発者機能をオンにする必要があります。 WeChat 開発者機能を有効にするには、確認コードを記述する必要があり、アクセス可能な URL が必要です。まず、WeChat パブリック プラットフォームにログインします: https://mp.weixin.qq.com/

[開発者センター] をクリックし、[同意する] にチェックを入れ、[開発者になる] をクリックします:

WeChat開発で開発者になる方法

次のページ:

WeChat開発で開発者になる方法

「構成項目」をクリックします。ここには、入力するための 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 = { &#39;0&#39;, &#39;1&#39;, &#39;2&#39;, &#39;3&#39;, &#39;4&#39;, &#39;5&#39;, &#39;6&#39;, &#39;7&#39;, &#39;8&#39;, &#39;9&#39;, &#39;A&#39;, &#39;B&#39;, &#39;C&#39;, &#39;D&#39;, &#39;E&#39;, &#39;F&#39; };
		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 を開発できるようになります。 WeChat 決済で使用される AppID と AppSecret を取得しました。

注:

WeChat 開発ドキュメントのアドレスは次のとおりです: http://mp.weixin.qq.com/wiki/home/index.html

次のように WeChat 開発ドキュメントを開きます:

WeChat開発で開発者になる方法

その他の記事についてマルチ WeChat 開発と開発者になる方法に関連する場合は、PHP 中国語 Web サイトに注目してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHP微信开发:如何实现消息加密解密PHP微信开发:如何实现消息加密解密May 13, 2023 am 11:40 AM

PHP是一种开源的脚本语言,广泛应用于Web开发和服务器端编程,尤其在微信开发中得到了广泛的应用。如今,越来越多的企业和开发者开始使用PHP进行微信开发,因为它成为了一款真正的易学易用的开发语言。在微信开发中,消息的加密和解密是一个非常重要的问题,因为它们涉及到数据的安全性。对于没有加密和解密方式的消息,黑客可以轻松获取到其中的数据,对用户造成威胁

PHP微信开发:如何实现客服聊天窗口管理PHP微信开发:如何实现客服聊天窗口管理May 13, 2023 pm 05:51 PM

微信是目前全球用户规模最大的社交平台之一,随着移动互联网的普及,越来越多的企业开始意识到微信营销的重要性。在进行微信营销时,客服服务是至关重要的一环。为了更好地管理客服聊天窗口,我们可以借助PHP语言进行微信开发。一、PHP微信开发简介PHP是一种开源的服务器端脚本语言,广泛运用于Web开发领域。结合微信公众平台提供的开发接口,我们可以使用PHP语言进行微信

PHP微信开发:如何实现用户标签管理PHP微信开发:如何实现用户标签管理May 13, 2023 pm 04:31 PM

在微信公众号开发中,用户标签管理是一个非常重要的功能,可以让开发者更好地了解和管理自己的用户。本篇文章将介绍如何使用PHP实现微信用户标签管理功能。一、获取微信用户openid在使用微信用户标签管理功能之前,我们首先需要获取用户的openid。在微信公众号开发中,通过用户授权的方式获取openid是比较常见的做法。在用户授权完成后,我们可以通过以下代码获取用

用PHP开发微信群发工具用PHP开发微信群发工具May 13, 2023 pm 05:00 PM

随着微信的普及,越来越多的企业开始将其作为营销工具。而微信群发功能,则是企业进行微信营销的重要手段之一。但是,如果只依靠手动发送,对于营销人员来说是一件极为费时费力的工作。所以,开发一款微信群发工具就显得尤为重要。本文将介绍如何使用PHP开发微信群发工具。一、准备工作开发微信群发工具,我们需要掌握以下几个技术点:PHP基础知识微信公众平台开发开发工具:Sub

如何使用PHP进行微信开发?如何使用PHP进行微信开发?May 21, 2023 am 08:37 AM

随着互联网和移动智能设备的发展,微信成为了社交和营销领域不可或缺的一部分。在这个越来越数字化的时代,如何使用PHP进行微信开发已经成为了很多开发者的关注点。本文主要介绍如何使用PHP进行微信开发的相关知识点,以及其中的一些技巧和注意事项。一、开发环境准备在进行微信开发之前,首先需要准备好相应的开发环境。具体来说,需要安装PHP的运行环境,以及微信公众平台提

ThinkPHP6微信开发指南:快速搭建微信公众号应用ThinkPHP6微信开发指南:快速搭建微信公众号应用Aug 26, 2023 pm 11:55 PM

ThinkPHP6微信开发指南:快速搭建微信公众号应用引言:微信公众号作为一种重要的社交媒体平台,为个人和企业在市场推广、信息传播等方面提供了很大的机会。在这篇文章中,我们将介绍如何使用ThinkPHP6快速搭建一个微信公众号应用,并且提供一些常用的代码示例。环境准备在开始开发之前,我们首先需要准备好以下环境:PHP7以上版本ThinkPHP6框架微信公众号

PHP微信开发:如何实现群发消息发送记录PHP微信开发:如何实现群发消息发送记录May 13, 2023 pm 04:31 PM

随着微信成为了人们生活中越来越重要的一个通讯工具,其敏捷的消息传递功能迅速受到广大企业和个人的青睐。对于企业而言,将微信发展为一个营销平台已经成为趋势,而微信开发的重要性也逐渐凸显。在其中,群发功能更是被广泛使用,那么,作为PHP程序员,如何实现群发消息发送记录呢?下面将为大家简单介绍一下。1.了解微信公众号相关开发知识在了解如何实现群发消息发送记录之前,我

PHP微信开发:如何实现语音识别PHP微信开发:如何实现语音识别May 13, 2023 pm 09:31 PM

随着移动互联网的普及,微信作为一款社交软件,越来越多的人开始使用,并且微信开放平台也给开发者带来了众多的机会。近年来,随着人工智能技术的发展,语音识别技术逐渐成为了移动端开发的热门技术之一。在微信开发中,如何实现语音识别成为很多开发者关注的问题。本文将介绍如何利用PHP开发微信应用实现语音识别功能。一、语音识别原理在介绍如何实现语音识别之前,我们先了解一下语

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

mPDF

mPDF

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

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター