GMO Sign: Retrieve Envelope Status

GMO Sign: Retrieve Envelope Status

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

This item retrieves the status of the sign request to GMO Sign.

Auto Step icon
Configs for this Auto Step
conf_OAuth2
C1: Secret Key *
cusId
C2: Customer id *#{EL}
accessUrl
C3: Access url *#{EL}
envelopeXid
C4: Envelope transaction Id *
envelopeStatus
C5: Envelope status *
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)"
}

envelope 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");

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


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

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

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


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


/* アクセスログがあれば
    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} 封筒ステータス
  */
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['result']['envelope_status'];
}

  
    

Download

warning Freely modifiable JavaScript (ECMAScript) code. No warranty of any kind.
(Installing Addon Auto-Steps are available only on the Professional edition.)

Notes

  • GMO Sign is a service provided by GMO GlobalSign Holdings, Inc.
  • To use GMO Sign for electronic signatures, you need to use a combination of [GMO Sign: Register Envelope Document], [GMO Sign: Send Sign Request] and [GMO Sign: Retrieve Envelope Status].
  • For “Secret Key”, “Customer ID”, and “Access URL”, please specify the values ​​provided by GMO GlobalSign Holdings, Inc. For “Secret Key”, please specify “Token Fixed Value” in the HTTP Authorization Settings.

Capture

See Also

Scroll to Top

Discover more from Questetra Support

Subscribe now to keep reading and get access to the full archive.

Continue reading