【重要】API(Push通知機能)の仕様変更に関するご案内
平素よりlearningBOXをご利用いただき、誠にありがとうございます。 learningBOXでは、Ver2.19のリリースより、APIの仕様を変更いたします。 今回のお知らせは、API連携をご利用のお客様向けの内容です。 APIの変更点について 変更前 変更後 実装方法によっては、通信が失敗する可能性があります ハードコーディングの場合、無効な通知と判定される可能性があります。 PUSH通知の有効性をチェックする方法 その1:送信内容を取得する。 その2:送信内容からパラメータ「hash」を取り除いて一時保存します。 その3:送信内容のパラメータの順番を変えずに後ろに「secret」を追加してください。 その4:送信内容のパラメータ値を「|」で連結した後、sha256でハッシュ値を取得します。 その5:送信内容から取得したhashと一致しているかをチェックしてください。 PUSH通知有効性チェックのサンプルコード /** * PUSH通知有効性チェック * 通知内容例: * ------------------------------------------------ * { * 'param1': 'aaa', * 'param2': 'bbb', * 'param3': 'ccc', * 'hash': 'ae12de' * } * ------------------------------------------------ * ※hash以外のパラメータは並び順変更、または増減する可能性があります。 */ 正常に動作する例 $payload = file_get_contents('php://input'); // 通知内容を取得 $payload = json_decode($payload, true); // 通知内容を配列化 $hash = $payload['hash']; // 検証用のハッシュ値を取得 unset($payload['hash']); // 検証用のハッシュ値を送信内容から取り除く $payload = $payload + ['secret' = 'tatsuno123']; // 通知内容の後ろに通知先のシークレットキーを追加 if($hash === hash('sha256', implode('|', $payload))) { // 送信内容認証成功 } else { // 送信内容認証失敗 } 不具合の出る例 $payload = file_get_contents('php://input'); // 通知内容を取得 $payload = json_decode($payload, true); // 通知内容を配列化 $hash = $payload['hash']; // 検証用のハッシュ値を取得 $param1 = $payload['param1']; // 検証用のパラメータ1を取得 $param2 = $payload['param2']; // 検証用のパラメータ2を取得 $param3 = $payload['param3']; // 検証用のパラメータ3を取得 $secret = 'tatsuno123'; // 通知先のシークレットキー if($hash === hash('sha256', $param1 . '|' . $param2 . '|' . $param3 . '|' . $secret)) { // 送信内容認証成功 // 通知内容に変更があった場合、認証通らない可能性があります。 } else { // 送信内容認証失敗 } ご利用のお客様にはご迷惑をお掛けいたしますが、ご理解ご協力のほどよろしくお願いいたします。