GMO サイン: タイムスタンプ付与依頼
GMO Sign: Request for Timestamp
この工程は GMO サイン にファイルを送付し、タイムスタンプ付与を依頼します。
Configs for this Auto Step
- conf_OAuth2
- C1: シークレットキー *
- cusId
- C2: 顧客ID *#{EL}
- accessUrl
- C3: アクセス先URL(例 api.gmosign.com) *#{EL}
- registFile
- C5: タイムスタンプを付与する文書ファイル(ドキュメント)が保存されているファイル型データ項目 *
- confirmationId
- C6: タイムスタンプの予約ID を保存する文字型データ項目 *
Script (click to open)
//ファイルサイズ制限50MB
//https://helpcenter.gmosign.com/hc/ja/articles/900005461666
const SIZE_LIMIT = 52428800; //File size border of Box
/*
JSON例
・アクセストークン生成 AccessToken_Generate_Post
{
"secret_key": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"cus_id": "XXXXXXXXXX"
}
・タイムスタンプ付与 Timestamp_Register_Post
{
"secret_key": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"cus_id": "XXXXXXXXXX",
"access_token": "(取得したトークン)",
"document": "(Base64変換したファイル)"
}
*/
main();
function main() {
//// == 工程コンフィグの参照 / Config Retrieving ==
//シークレットキーはHTTP認証設定のトークン直接指定に入れてもらう
const key = configs.getObject("conf_OAuth2").getToken() + "";
const cusId = configs.get("cusId") + "";
const accessUrl = configs.get("accessUrl") + "";
const dataId_accessToken = configs.get("accessToken");
const dataId_confirmationId = configs.get("confirmationId");
//// == ワークフローデータの参照 / Data Retrieving ==
const files = engine.findData(configs.getObject("registFile"));
//// == 演算 / Calculating ==
//アクセストークン取得
let accessToken = getAccessToken(key, cusId, accessUrl);
//タイムスタンプ付与依頼
let confirmationId = registFileForTimestamp(key, cusId, accessUrl, accessToken, files);
//// == ワークフローデータへの代入 / Data Updating ==
engine.setDataByNumber( dataId_confirmationId, confirmationId );
/* アクセスログがあれば
if ( dataId_log !== "" ) {
engine.setDataByNumber( dataId_log, accessLog );
}
*/
}
/**
* アクセストークン取得
* @param {String} key シークレットキー
* @param {String} cusId 顧客ID
* @param {String} accessUrl 接続先URL
* @returns {String} アクセストークン
*/
function getAccessToken(key, cusId, accessUrl) {
//JSON準備
let requestObj = {};
requestObj.secret_key = key;
requestObj.cus_id = cusId;
//HTTPリクエスト送付
const url = "https://" + accessUrl + "/agree-api/v0/api/accesstoken/generate";
const response = httpClient.begin()
.body( JSON.stringify(requestObj), "application/json" )
.post(url);
const status = response.getStatusCode();
const responseStr = response.getResponseAsString();
if (status !== 200) {
engine.log(responseStr);
throw `Failed to get access token. status: ${status}`;
}
engine.log("responseStr:" + responseStr);//検証用
const json = JSON.parse(responseStr);
return json['result']['access_token'];
}
/**
* タイムスタンプ付与
* @param {String} key シークレットキー
* @param {String} cusId 顧客ID
* @param {String} accessUrl 接続先URL
* @param {String} accessToken アクセストークン
* @param {object} files ファイル
* @returns {String} 予約ID
*/
function registFileForTimestamp(key, cusId, accessUrl, accessToken, files) {
//JSON準備
let requestObj = {};
requestObj.secret_key = key;
requestObj.cus_id = cusId;
requestObj.access_token = accessToken;
//1ファイルのみかチェック
if (( !files ) || ( files.length != 1 )) {
throw `PDF File Num invalid.`;
}
const file = files.get(0);
//ファイルサイズチェック
if ( file.getLength() > SIZE_LIMIT ) {
throw `PDF File size over.`;
}
//ファイルBase64変換
let base64Text = "";
fileRepository.readFile(file, SIZE_LIMIT, function(bytes) {
base64Text += base64.encodeToString(bytes);
});
engine.log("requestObj:" + JSON.stringify(requestObj));//検証用、ファイルデータをいれる前をログ出力(ファイルデータが入ると長くなりすぎるので)
requestObj.document = base64Text;
//HTTPリクエスト送付
const url = "https://" + accessUrl + "/agree-api/v0/api/ts/register";
const response = httpClient.begin()
.body( JSON.stringify(requestObj), "application/json" )
.post(url);
const status = response.getStatusCode();
const responseStr = response.getResponseAsString();
if (status !== 200) {
engine.log(responseStr);
throw `Failed to regist file. status: ${status}`;
}
engine.log("responseStr:" + responseStr);//検証用
const json = JSON.parse(responseStr);
return json['result']['confirmation_id'];
}
Download
- gmo-sign-timestamp-regist.xml
- 2024-07-04 (C) Questetra, Inc. (MIT License)
自由改変可能な JavaScript (ECMAScript) コードです。いかなる保証もありません。
(アドオン自動工程のインストールは Professional editionでのみ可能です)
(アドオン自動工程のインストールは Professional editionでのみ可能です)
Notes
- 「GMO サイン」はGMOグローバルサイン・ホールディングス株式会社のサービスです。
- GMO サインのタイムスタンプ付与にはオプション契約が必要です。詳細は提供元に確認してください。
- GMO サインでタイムスタンプ付与させる場合には、「GMO サイン: タイムスタンプ付与依頼」・「GMO サイン: タイムスタンプ付与済ファイルURL取得」を組み合わせて使う必要があります。
- 「シークレットキー」・「顧客ID」・「アクセス先URL」はGMOグローバルサイン・ホールディングス株式会社より指定された値を指定してください。「シークレットキー」は「HTTP認証設定」の「トークン直接指定」で指定してください。
Capture

