この一連のエッセイの冒頭では、主に WeChat パブリック アカウント用のポータル アプリケーションの開発について紹介します。最近、WeChat フレームワーク全体が拡張および補足され、最新の API カプセル化とエンタープライズ アカウントの開発が追加されました。フォローアップでは主に、C# を使用して WeChat エンタープライズを開発する方法を紹介します。この記事は、WeChat エンタープライズ アカウントの開発作業の開始点として機能し、WeChat エンタープライズ アカウントの構成と使用方法を紹介します。
エンタープライズアカウントは、パブリックアカウントとサブスクリプションアカウントに続くもう1つのWeChatタイプです。 Enterprise Account は、WeChat が企業顧客向けに提供するモバイル アプリケーション ポータルです。これは、企業が従業員、上流および下流のサプライ チェーン、企業 IT システム間の接続を確立するのに役立ちます。エンタープライズ アカウントを使用すると、企業またはサードパーティ パートナーは、企業が高品質のモバイル ライト アプリケーションを迅速かつコスト効率よく実装して、生産、管理、コラボレーション、および運用のモバイル化を実現できるように支援できます。
個人的に、Enterprise アカウントの最大のハイライトは、メッセージを無制限に送信できることであり、企業の従業員間のコミュニケーションがスムーズに行えることだと考えています。パブリックアカウントやサブスクリプションアカウントと比較して、WeChatエンタープライズアカウントはメッセージの送信においてより慎重であると言えます。ただし、WeChat エンタープライズ アカウントは内部アドレス帳を作成する必要があり、フォローする前にアドレス帳の WeChat ID、電子メール アドレス、電話番号が一致する必要があります。これは、他の外部者が自由にフォローできないことを意味します。さらに、セキュリティ上の理由から、監査プロセスである 2 段階認証を設定することもできます。
エンタープライズアカウントの認証は、パブリックアカウントの認証と同様に、関連する企業認証書類を提出する必要があり、認証手数料が毎年請求されます。それ以外の場合は、人員と機能にいくつかの制限がかかる場合があります。 WeChatは本当にお金を稼ぐ方法を見つけようとしていると感じます。既存の課金モデルにはサブスクリプションアカウント、公式アカウント、エンタープライズアカウント、オープンプラットフォームが含まれており、それらはすべて認証手数料がかかり、WeChatストアもデポジットを徴収する必要があります。 20万、全部お金ですよ。
もう言うことはありませんが、WeChat の登録アドレスは https://qy.weixin.qq.com です。1 つのメール アドレスで WeChat 公式アカウントと WeChat エンタープライズ アカウントを同時に登録することはできません。
企業が企業アカウントを開設して使用を開始するには 4 つの手順が必要です
1) 企業は公式 WeChat Web サイト ( http://qy.weixin.qq.com ) にアクセスしてアクティベーションを申請します。
2) アクティベーション後、企業はエンタープライズ アカウント管理バックエンドに移動し、メンバーをインポートし、QR コードを公開します。3) 企業はエンタープライズ アカウント API を呼び出して、開発用に企業独自のシステムと連携します。4) 従業員は支払いを行います。注意を払い、WeChat 情報を受信し、WeChat で企業と対話します 企業アカウントを登録します。WeChat を介してスキャンし、企業の QR コードをスキャンしてログインできます。スキャンするときは、入力を続ける前に WeChat で確認する必要があります。操作画面は以下の通りです(左が携帯電話のスクリーンショット、右がWebページのスクリーンショット)。ログイン後、対応するコンピューター管理インターフェイスが表示されます。 2. 開発コールバックモードを設定します WeChat 公式アカウントを開発している場合は、メッセージの転送と処理を実現するために WeChat サーバーと Web サイトサーバーの間に接続関係を確立する必要があることがわかります。コールバック モードでは、関連するパラメータを設定する必要があります。次に、独自の Web サイト サーバーに入り口を作成し、WeChat サーバー メッセージを処理します。
設定を入力した後、関連する URL、Token、EncodingAESKey およびその他のパラメーター (主に URL) を変更する必要があります。これは、公式アカウントの入口処理と同じであり、処理入口を公開する必要があります。ウェブサイトのサーバーに送信します。 トークンとAESKeyはプロンプトに従って動的に生成できます。AESKeyは23ビットのようです。これは通常、暗号化と復号化に使用されます。 3 つのパラメーター: URL、トークン、EncodingAESKey の説明。 1) URL は、エンタープライズ アカウントのプッシュ リクエストを受信するためにエンタープライズ アプリケーションによって使用されるアクセス プロトコルとアドレスであり、http または https プロトコルをサポートします。 2) トークンは企業が任意に入力し、署名の生成に使用できます。 3) EncodingAESKey はメッセージ本文の暗号化に使用され、AES キーの Base64 エンコードです。
URL、トークン、暗号化の検証処理の詳細については、後続の「メッセージ受信時の暗号化・復号化処理」を参照してください。
私の会社のエンタープライズアカウントを設定した後のインターフェイスは次のとおりです。
この URL で指定されているページ関数は、データを解析して WeChat サーバーに返す必要があるため、この処理関数の入り口をサーバーに事前にデプロイする必要があります。
上記の機能に加えて、使用する必要のある CorpID パラメータもあります。これは、バックグラウンドのメイン インターフェイスの [設定] で表示できます。
次に、Web サイトのバックエンドを使いやすくするために、以下に示すように、公式アカウントの構成と同じように Web.Config に配置します。
コールバック ページで使用する必要があるいくつかの構成項目を以前に紹介しましたが、このセクションでは引き続き、エンタープライズ アカウント情報のポストバックを実装する方法を紹介します。コールバックテストに合格できることを確認します。
コールバックテストのデータはGetメソッドを通じて送信されるため、処理ロジックのコードは以下のようになります。パブリックアカウントと似ていますが、実装部分が異なります。
/// <summary> /// 企业号回调信息接口。统一接收并处理信息的入口。 /// </summary> public class corpapi : IHttpHandler { /// <summary> /// 处理企业号的信息 /// </summary> /// <param name="context"></param> public void ProcessRequest(HttpContext context) { string postString = string.Empty; if (HttpContext.Current.Request.HttpMethod.ToUpper() == "POST") { using (Stream stream = HttpContext.Current.Request.InputStream) { Byte[] postBytes = new Byte[stream.Length]; stream.Read(postBytes, 0, (Int32)stream.Length); postString = Encoding.UTF8.GetString(postBytes); } if (!string.IsNullOrEmpty(postString)) { Execute(postString); } } else { Auth(); } } /// <summary> /// 成为开发者的第一步,验证并相应服务器的数据 /// </summary> private void Auth() { #region 获取关键参数 string token = ConfigurationManager.AppSettings["CorpToken"];//从配置文件获取Token if (string.IsNullOrEmpty(token)) { LogTextHelper.Error(string.Format("CorpToken 配置项没有配置!")); } string encodingAESKey = ConfigurationManager.AppSettings["EncodingAESKey"];//从配置文件获取EncodingAESKey if (string.IsNullOrEmpty(encodingAESKey)) { LogTextHelper.Error(string.Format("EncodingAESKey 配置项没有配置!")); } string corpId = ConfigurationManager.AppSettings["CorpId"];//从配置文件获取corpId if (string.IsNullOrEmpty(corpId)) { LogTextHelper.Error(string.Format("CorpId 配置项没有配置!")); } #endregion string echoString = HttpContext.Current.Request.QueryString["echoStr"]; string signature = HttpContext.Current.Request.QueryString["msg_signature"];//企业号的 msg_signature string timestamp = HttpContext.Current.Request.QueryString["timestamp"]; string nonce = HttpContext.Current.Request.QueryString["nonce"]; string decryptEchoString = ""; if (new CorpBasicApi().CheckSignature(token, signature, timestamp, nonce, corpId, encodingAESKey, echoString, ref decryptEchoString)) { if (!string.IsNullOrEmpty(decryptEchoString)) { HttpContext.Current.Response.Write(decryptEchoString); HttpContext.Current.Response.End(); } } }
具体的な処理コードは以下の通りです。 WeChat Enterprise Account の付録で提供されている SDK のみを使用しました。
/// <summary> /// 企业号基础操作API实现 /// </summary> public class CorpBasicApi : ICorpBasicApi { /// <summary> /// 验证企业号签名 /// </summary> /// <param name="token">企业号配置的Token</param> /// <param name="signature">签名内容</param> /// <param name="timestamp">时间戳</param> /// <param name="nonce">nonce参数</param> /// <param name="corpId">企业号ID标识</param> /// <param name="encodingAESKey">加密键</param> /// <param name="echostr">内容字符串</param> /// <param name="retEchostr">返回的字符串</param> /// <returns></returns> public bool CheckSignature(string token, string signature, string timestamp, string nonce, string corpId, string encodingAESKey, string echostr, ref string retEchostr) { WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(token, encodingAESKey, corpId); int result = wxcpt.VerifyURL(signature, timestamp, nonce, echostr, ref retEchostr); if (result != 0) { LogTextHelper.Error("ERR: VerifyURL fail, ret: " + result); return false; } return true; //ret==0表示验证成功,retEchostr参数表示明文,用户需要将retEchostr作为get请求的返回参数,返回给企业号。 // HttpUtils.SetResponse(retEchostr); }
WeChat ポータルとアプリケーションの C# 開発 - WeChat エンタープライズ アカウントの構成と使用について詳しくは、PHP 中国語 Web サイトの関連記事に注目してください。