記事ディレクトリ
序文
WeChat パブリック アカウントの開発では、WeChat によって送信されたトークン検証に応答するための独自のサーバー リソースが開発者に必要です。このサーバーにはドメイン名を介してのみアクセスでき、IP アドレスを使用してアクセスすることはできません。サーバーを購入し、ドメイン名を購入すると、比較的大きな費用がかかりますが、ローカル サービスを公開し、ドメイン名を使用してアクセスできれば、構成が簡素化されるだけでなく、費用も削減され、迅速な開発が可能になります。
幸いなことに、Cpolar がこれを処理します。 Cpolar を起動し、トンネル URL を WeChat 公式アカウント ドッキング サーバーの URL フィールドに貼り付けて完了です。
1. ローカルサーバーの設定
ローカル サービスを作成します。ここでは Java サービスを例として取り上げます。環境設定:
- JDK1.8
- メイブン
- スプリングブーツ
- トムキャット
WeChat 開発者ドキュメントのアクセス ガイドの要件に従って、WeChat によって送信された get リクエスト パラメーターを暗号化して比較します。
Springboot サービス コントローラーに WeChat 検証インターフェイスを記述し、要件に従って処理するために WeChat によって渡されるパラメーターを取得します。
/**
* 微信服务调用接口
*/
@Controller
@RequestMapping("/wechat")
public class WeChatTest {
private static String wxToken="flzabc123";
@GetMapping("")
public void weChatTestV(HttpServletRequest request, HttpServletResponse response) {
// 1、验证消息的确来自微信服务器
String signature = request.getParameter("signature");
String timestamp = request.getParameter("timestamp");
String nonce = request.getParameter("nonce");
String echostr = request.getParameter("echostr");
//将微信echostr返回给微信服务器
try(OutputStream os = response.getOutputStream()) {
String sha1 = getSHA1(wxToken, timestamp, nonce, "");
//和signature进行对比
if (sha1.equals(signature)){
// 返回echostr给微信
os.write(URLEncoder.encode(echostr, "UTF-8").getBytes());
os.flush();
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 用SHA1算法生成安全签名
*
* @param token 票据
* @param timestamp 时间戳
* @param nonce 随机字符串
* @param encrypt 密文
* @return 安全签名
* @throws Exception
*/
public static String getSHA1(String token, String timestamp, String nonce, String encrypt) throws Exception {
try {
String[] array = new String[]{
token, timestamp, nonce, encrypt};
StringBuffer sb = new StringBuffer();
// 字符串排序
Arrays.sort(array);
for (int i = 0; i < 4; i++) {
sb.append(array[i]);
}
String str = sb.toString();
// SHA1签名生成
MessageDigest md = MessageDigest.getInstance("SHA-1");
md.update(str.getBytes());
byte[] digest = md.digest();
StringBuffer hexstr = new StringBuffer();
String shaHex = "";
for (int i = 0; i < digest.length; i++) {
shaHex = Integer.toHexString(digest[i] & 0xFF);
if (shaHex.length() < 2) {
hexstr.append(0);
}
hexstr.append(shaHex);
}
return hexstr.toString();
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
}
インターフェイスを作成した後、サービスを開始し、springboot を開始します。ここでは 8080 ポートが公開されています。
2. イントラネットの浸透
ここでは、cpolar イントラネット ペネトレーションを使用して、ローカル サービスをパブリック ネットワークにマッピングします。パブリック ネットワーク IP やルーターの設定は必要ありません。操作は非常に簡単です。 [cpolar.cnが登録されました]
2.1 cpolar イントラネットペネトレーションをダウンロードしてインストールする
cpolar官网:https://www.cpolar.com/
cpolar 公式 Web サイトにアクセスし、アカウントを登録し、cpolar クライアントをダウンロードしてインストールします。詳細については、ドキュメント チュートリアルのダウンロードとインストールを参照してください。
2.2 トンネルの作成
cpolar が正常にインストールされたら、ブラウザのローカル 9200 ポートにアクセスし、Cpolar の Web UI インターフェイスにログインします:http://localhost:9200< a i= 2>。
左側のダッシュボードで [トンネル管理 - トンネルの作成] をクリックし、ローカル ポート 8080 の下の Web サービスをパブリック ネットワークにマッピングするトンネルを作成しましょう。
- トンネル名: カスタマイズ可能。既存のトンネルの名前と重複しないように注意してください。
- プロトコル: httpプロトコル
- ローカルアドレス: 80
- ドメイン名のタイプ: 無料でランダムなドメイン名を選択します
- 地域: 中国 VIP を選択
クリック创建
トンネルが正常に作成されると、ページは自動的にトンネル リストにジャンプします。正常に作成されたトンネル 1 トンネルが表示されます。ステータスはアクティブで、通常はオンラインであることを示します。クリックする必要はないことに注意してください。もう一度始めるために。
左側のダッシュボードのステータス - オンライン トンネル リストをクリックすると、作成したばかりのトンネルによって、対応するパブリック ネットワーク アドレス、http プロトコル、および https プロトコルが生成されたことがわかります (SSL 証明書を構成する面倒な手順を回避できます)。両方とも利用可能です。ローカル Web サービスにアクセスし、パブリック アドレスをコピーします。
3. パブリック ネットワーク アクセスをテストする
WeChat パブリック プラットフォームの公式アカウント ページを開き、以下の基本設定をクリックし、コピーしたパブリック アドレスを URL ボックスに入力します。
送信が成功すると、検証が成功したことを示します。
クリックしてサーバー構成を有効にします。操作が成功した場合は、アクティベーションが成功したことを意味します。
4. 固定ドメイン名
上記で設定したパブリック ネットワーク アドレスはランダム アドレスを使用し、24 時間以内にランダムに変更されるため、サービスをより安定して実行するには、固定のドメイン名アドレスを設定することをお勧めします。
cpolar パッケージを基本パッケージ以上にアップグレードする必要があることに注意してください。 [cpolar.cnが登録されました]
4.1 第 2 レベルのサブドメイン名の予約
Cpolar 公式 Web サイトwww.cpolar.com にアクセスし、cpolar 公式 Web サイトのバックエンドにログインし、左側の [予約] をクリックして、予約された第 2 レベルのサブドメイン名を見つけます:
- 地域: 中国 VIP を選択
- 第 2 レベルのドメイン名: カスタマイズ可能
- 説明: カスタマイズ可能なメモ
クリック保留
サブドメイン名が正常に予約されたことを示すプロンプトが表示され、予約された第 2 レベルのサブドメイン名をコピーします
4.2 第 2 レベルのサブドメイン名の構成
http://127.0.0.1:9200/ にアクセスし、cpolar Web UI 管理インターフェイスにログインし、画面上の [トンネル管理] をクリックします。左側のダッシュボード —— トンネル リストで、作成したばかりの http WeChat 開発トンネルを見つけて、 右側の [編集] をクリックします。
トンネル情報を変更し、正常に予約された第 2 レベルのサブドメイン名をトンネルに構成します。
- ドメイン名のタイプ: 第 2 レベルのサブドメイン名を選択します
- サブドメイン: 正常に予約された第 2 レベルのサブドメイン名を入力します。
クリック更新
更新後、オンライン トンネル リストを再度開くと、トンネルが固定の第 2 レベルのサブドメイン名になっていることがわかります。名前は公式 Web サイトで予約した wechat であり、ドメイン名をコピーします。
5. WeChat 開発には固定の第 2 レベルのサブドメイン名を使用する
WeChat パブリック プラットフォーム - パブリック アカウント ページを開き、[基本構成] をクリックして、URL の値を変更します。変更する前に、クリックしてサーバー構成を非アクティブ化し、置き換え後に [送信] をクリックする必要があります。
送信が成功した場合は、置換が成功したことを示します。
次に、クリックしてサーバー構成を開始します。操作が成功すると、成功を意味します。これで、WeChat 開発にローカル サーバーを使用できるようになります。
cpolar 極雲記事からの転載:WeChat パブリック アカウント開発: ローカル開発環境とのドッキング [イントラネット浸透]