GMO サイン: 封筒署名ステータス確認

GMO サイン: 封筒署名ステータス確認

GMO Sign: Retrieve Envelope Status

この工程は GMO サイン から署名依頼した封筒のステータス・文書の管理番号を取得します。

Auto Step icon
Configs for this Auto Step
conf_OAuth2
C1: シークレットキー *
cusId
C2: 顧客ID *#{EL}
accessUrl
C3: アクセス先URL(例 api.gmosign.com) *#{EL}
envelopeXid
C4: 封筒トランザクションID が保存されている文字型データ項目 *
envelopeStatus
C5: 封筒ステータス を保存する選択型データ項目 *
controlNumber
C6: 文書の管理番号を保存する文字型データ項目
Script (click to open)


/*
JSON例

・アクセストークン生成 AccessToken_Generate_Post
{
  "secret_key": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
  "cus_id": "XXXXXXXXXX"
}

・封筒用文書登録 Envelope_Status_Post
※アップできるのはPDFのみ
{
  "secret_key": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
  "cus_id": "XXXXXXXXXX",
  "access_token": "(取得したトークン)",
  "envelope_xid": "(取得したID)"
}

・封筒status一覧
1,ワークフロー承認待ち
2,署名待ち
3,署名完了
4,最終署名完了
5,削除済み
6,署名者が辞退
7,ワークフロー承認却下
*/


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_envelopeStatus = configs.get("envelopeStatus");
    const dataId_controlNumber = configs.get("controlNumber");

    //// == ワークフローデータの参照 / Data Retrieving ==
    const envelopeXid = engine.findData(configs.getObject("envelopeXid")) + "";


    //// == 演算 / Calculating ==

    //アクセストークン取得
    let accessToken = getAccessToken(key, cusId, accessUrl);

    //封筒状態取得
    let json = retrieveRequestStatus(key, cusId, accessUrl, accessToken, envelopeXid);

    //// == ワークフローデータへの代入 / Data Updating ==
    let selects = new java.util.ArrayList();
    let envelopeStatus = json['result']['envelope_status']
    selects.add(envelopeStatus + "");
    engine.setDataByNumber( dataId_envelopeStatus, selects );

    if ( dataId_controlNumber !== "" ) {
        //1つめの文書ファイルの管理番号のみ取得
        engine.setDataByNumber( dataId_controlNumber, json['result']['document_list'][0]['control_number'] );
    }


/* アクセスログがあれば
    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);
    if ( json['status'] !== "0") {
        throw `Failed to get acess token. status: ${json['status']}. message: ${json['message']}`;
    }
    return json['result']['access_token'];
}


/**
  * 封筒ステータス取得
  * @param {String} key  シークレットキー
  * @param {String} cusId  顧客ID
  * @param {String} accessUrl  接続先URL
  * @param {String} accessToken  アクセストークン
  * @param {object} envelopeXid  封筒トランザクションID
  * @returns {String} レスポンスJSON
  */
function retrieveRequestStatus(key, cusId, accessUrl, accessToken, envelopeXid) {

    //JSON準備
    let requestObj = {};
    requestObj.secret_key = key;
    requestObj.cus_id = cusId;
    requestObj.access_token = accessToken;
    requestObj.envelope_xid = envelopeXid;

    engine.log("requestObj:" + JSON.stringify(requestObj));//検証用


    //HTTPリクエスト送付
    const url = "https://" + accessUrl + "/agree-api/v0/api/envelope/status";
    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 retrieve. status: ${status}`;
    }

    engine.log("responseStr:" + responseStr);//検証用
    const json = JSON.parse(responseStr);
    if ( json['status'] !== "0") {
        throw `Failed to retrieve status. status: ${json['status']}. message: ${json['message']}`;
    }
    return json;
}

  
    

Download

warning 自由改変可能な JavaScript (ECMAScript) コードです。いかなる保証もありません。
(アドオン自動工程のインストールは Professional editionでのみ可能です)

Notes

  • GMO サイン」はGMOグローバルサイン・ホールディングス株式会社のサービスです。
  • GMO サインで電子署名させる場合には、「GMO Sign: 封筒用文書登録」・「GMO Sign: 封筒署名依頼」・「GMO Sign: 封筒署名ステータス確認」を組み合わせて使う必要があります。また「GMO サイン: 文書ファイルURL取得」を使うと署名済ファイル取得ができます。
  • 「シークレットキー」・「顧客ID」・「アクセス先URL」はGMOグローバルサイン・ホールディングス株式会社より指定された値を指定してください。「シークレットキー」は「HTTP認証設定」の「トークン直接指定」で指定してください。
  • 「封筒ステータス」は以下の設定で選択型データを準備して、指定してください。
選択肢ID表示ラベル
1ワークフロー承認待ち
2署名待ち
3署名完了
4最終署名完了
5削除済
6署名者が辞退
7ワークフロー承認却下

Capture

See Also

上部へスクロール

Questetra Supportをもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む