バックグラウンド情報
AccessToken の構成を完了すると、ミニプログラム サブスクリプション通知を送信できます。この API は、次の機能を実装する必要があります。
1. WeChat アプレットの accessToken を取得します。入力パラメーターは、このリクエストのトークンを更新するかどうかを設定します。トークンの可用性を確保してください。
2. 接続テスト。構成後、QA は接続テストを実施します。 wxAppId は渡されません(WeChat アプレットの AppId、API ドキュメントを参照)。正しく返してください(コードは 200 で、トークンは空です)。
パラメーター
パラメーター | パラメーター | 備考 |
アクセスされるリソースの URL です。 | 顧客側の WeChat トークンを取得するためのアドレスを入力します | API 開発者は API を提供し、上記の機能を実装する必要があります。 |
APP ID | 署名検証に使用されるパラメーター | API 開発者と APPID を合意し、ここに入力してください。 |
AccessKey | 署名検証に使用されるパラメーター | API 開発者と合意して AccessKey を入力してください。 |
SecretKey | 署名検証に使用されるパラメーター | API 開発者と合意し、SecretKey をここに入力してください。 |
1. API ドキュメント
使用上の注意 | WeChat ミニプログラムの AccessToken をクエリします | |||
URL | ${サードパーティが指定したアドレス}?appId=aaa&accessKey=xxx×tamp=yyy | |||
リクエストメソッド | POST | |||
リクエストタイプ | application/json | |||
戻り値のデータ型 | */* | |||
パラメーター | データ型 | データ型 | 必須 | 説明 |
1.wxAppId | string | body | はい | WeChat アプレット appId |
2.refresh | boolean | body | はい | トークンを更新する必要があるかどうか。デフォルト値: false |
状態 | 用語 | 注記 | ||
200 | OK | リクエストは成功しました。 | ||
401 | Unauthorized | リクエストは承認されていません。 | ||
403 | Forbidden | リクエストが拒否されたため、エラーメッセージが返されました。 | ||
404 | Not Found | リクエストされたリソースは存在しません。 | ||
戻り値のプロパティ名 | カテゴリ | 移行の説明 | ||
1.code | string | リクエストの状態コードです。 200 または OK は成功を示します。 | ||
2.message | string | エラーメッセージ。 | ||
3.accessToken | string | WeChat ミニプログラムの accessToken です。 | ||
4.expireTime | DateTime | URL の有効期限です。 HTTP リクエストヘッダー形式 | ||
4.requestId | string | リクエスト ID です。 | ||
例 | ||||
リクエストパラメーター | http://{トークンを取得するために使用される URL}?appId=aaa&accessKey=xxx×tamp=yyy | |||
戻り値 | {"code":"200","requestId":"string","message":"string","accessToken":"xxxx","expireTime":"2024-09-10 00:00:00"} | |||
II. 署名検証の説明
QA は、以下の方法に従って署名を生成します。必要に応じて、この方法に従って署名を確認してください。
QA は、リクエストの API パスに appId、accessKey、timestamp(timestamp パラメーター)を含め、ヘッダーに署名 Authorization を追加する必要があります。
共通パラメーター
項目 | 値の例 | 場所 |
appId | オープン プラットフォームのアプリケーション ID です。 | リクエスト URI のパラメーターセクション |
accessKey | オープン プラットフォーム上のアプリケーションの ak | リクエスト URI のパラメーターセクション |
timestamp | 現在のタイムスタンプ(ミリ秒) | リクエスト URI のパラメーターセクション |
Authorization | 生成された署名 | リクエストのヘッダー内 |
署名生成ルール:
リクエストパラメーターを使用して、正規化されたクエリ文字列を構築します。
リクエスト内のすべてのパラメーター(ドキュメントに記載されている「パブリック リクエストパラメーター」と、指定されたリクエスト API のカスタム パラメーターを含む)を、リクエストパラメーター名の辞書式順序でソートします。注: GET メソッドを使用してリクエストを送信する場合、これらのパラメーターはリクエスト URI のパラメーター部分です(つまり、"?" の後の "&" で接続された URI の部分です)
パラメーター名と値は、UTF-8 文字セットを使用して URL エンコードする必要があります。
サンプルコード
次の Java コードは、署名生成ロジックの例を示しています。
String appId="tttt";
String accessKey = "xxxx";
String accessSecret ="yyyy";
String timeStamp = "1708235644862";
SortedMap<String, String> map = new TreeMap<>();
map.put("appId", appId);
map.put("accessKey", accessKey);
map.put("accessSecret",accessSecret );
map.put("timestamp", timeStamp);
// get リクエストで他のクエリパラメータがある場合は、引き続き追加します
String aa = getCanonicalQueryString(map);
System.out.println(aa);
String authorization = org.apache.commons.codec.digest.DigestUtils.md5Hex(aa);
System.out.println(authorization);public static String getCanonicalQueryString(SortedMap<String, String> paramsMap) {
StringBuilder queryString = new StringBuilder();
boolean isFirstParameter = true;
for (Map.Entry<String, String> entry : paramsMap.entrySet()) {
String paramName = entry.getKey();
String value = entry.getValue();
if (!isFirstParameter) {
queryString.append("&");
} else {
isFirstParameter = false;
}
queryString.append(paramName).append("=").append(value);
}
return queryString.toString();
}ステートメントの例:
curl --location -g --request POST 'http://{トークンを取得するために構成された URL}?appId=aaa&accessKey=xxx×tamp=yyy' \
--header 'Authorization: demosign'3. 例外コード
例外コード | 説明 | |
ES05910010001 | アプリが存在しません。 | オープン プラットフォームで作成された APP が存在するかどうかを確認します。 |
ES05910010002 | リクエストの署名が無効なため、エラーコードが返されました。 | 署名が正しく生成されているかどうかを確認します。 |
ES05910010003 | タイムスタンプ検証に失敗しました。 | 生成されたタイムスタンプは 3 分以内に呼び出す必要があります。そうでない場合、検証は失敗します。 |
ES05910010004 | アプリケーションには現在の API 権限がありません。 | アプリケーションを使用するには、API をサブスクライブする必要があります。 |
ES05910010005 | appId、accessKey、および timestamp パラメーターが正しいかどうかを確認します。 | パブリック パラメーター appId、accessKey、および timestamp は、プラットフォームの仕様に従って渡す必要があります。 |