Source: utils/util.js

"use strict";
/**
 * GMO ユーティリティー
 * @namespace utils/util
 */
Object.defineProperty(exports, "__esModule", { value: true });
const crypto = require("crypto");
/**
 * 決済方法
 * @memberof utils/util
 * @enum PayType
 */
var PayType;
(function (PayType) {
    /**
     * 現金(実際GMOではありえないが)
     */
    PayType["Cash"] = "Z";
    /**
     * カード
     */
    PayType["Credit"] = "0";
    /**
     * モバイルSuica
     */
    PayType["Suica"] = "1";
    /**
     * 楽天Edy
     */
    PayType["Edy"] = "2";
    /**
     * コンビニ
     */
    PayType["Cvs"] = "3";
    // 4:Pay-easy
    // 5:PayPal
    // 6:iD
    // 7:WebMoney
    // 8:au かんたん
    // 9:docomo
    // B:ソフトバンクまとめて支払い(B)
    // C:じぶん銀行
    // E:JCB プリカ
    // G:NET CASH・nanaco ギフト
    // I:楽天ID
    // J:多通貨クレジットカード
    // K:LINE Pay 決済
    // L:ネット銀聯決済
    // N:銀行振込(バーチャル口座)
    // O:リクルートかんたん支払い決済
})(PayType = exports.PayType || (exports.PayType = {}));
/**
 * 支払い方法
 * @memberof utils/util
 * @enum Method
 */
var Method;
(function (Method) {
    /**
     * 一括
     */
    Method["Lump"] = "1";
    /**
     * 分割
     */
    Method["Installment"] = "2";
    /**
     * ボーナス一括
     */
    Method["BonusLump"] = "3";
    /**
     * リボ
     */
    Method["Revolving"] = "4";
    /**
     * ボーナス分割
     */
    Method["BonusInstallment"] = "5";
})(Method = exports.Method || (exports.Method = {}));
/**
 * 現状態
 * @memberof utils/util
 * @enum Status
 */
var Status;
(function (Status) {
    /**
     * 未決済
     */
    Status["Unprocessed"] = "UNPROCESSED";
    /**
     * 未決済(3D 登録済)
     */
    Status["Authenticated"] = "AUTHENTICATED";
    /**
     * 有効性チェック
     */
    Status["Check"] = "CHECK";
    /**
     * 即時売上
     */
    Status["Capture"] = "CAPTURE";
    /**
     * 仮売上
     */
    Status["Auth"] = "AUTH";
    /**
     * 実売上
     */
    Status["Sales"] = "SALES";
    /**
     * 取消
     */
    Status["Void"] = "VOID";
    /**
     * 返品
     */
    Status["Return"] = "RETURN";
    /**
     * 月跨り返品
     */
    Status["Returnx"] = "RETURNX";
    /**
     * 簡易オーソリ
     */
    Status["Sauth"] = "SAUTH";
    /**
     * 要求成功
     */
    Status["Reqsuccess"] = "REQSUCCESS";
    /**
     * 決済完了
     */
    Status["Paysuccess"] = "PAYSUCCESS";
    /**
     * 決済失敗
     */
    Status["Payfail"] = "PAYFAIL";
    /**
     * 期限切れ
     */
    Status["Expired"] = "EXPIRED";
    /**
     * 支払い停止
     */
    Status["Cancel"] = "CANCEL";
})(Status = exports.Status || (exports.Status = {}));
/**
 * 処理区分
 * @memberof utils/util
 * @enum JobCd
 */
var JobCd;
(function (JobCd) {
    /**
     * 有効性チェック
     */
    JobCd["Check"] = "CHECK";
    /**
     * 即時売上
     */
    JobCd["Capture"] = "CAPTURE";
    /**
     * 仮売上
     */
    JobCd["Auth"] = "AUTH";
    /**
     * 実売上
     */
    JobCd["Sales"] = "SALES";
    /**
     * 取消
     */
    JobCd["Void"] = "VOID";
    /**
     * 返品
     */
    JobCd["Return"] = "RETURN";
    /**
     * 月跨り返品
     */
    JobCd["Returnx"] = "RETURNX";
    /**
     * 簡易オーソリ
     */
    JobCd["Sauth"] = "SAUTH";
})(JobCd = exports.JobCd || (exports.JobCd = {}));
/**
 * カード登録連番モード
 * @memberof utils/util
 * @enum SeqMode
 */
var SeqMode;
(function (SeqMode) {
    /**
     * 論理モード
     */
    SeqMode["Logic"] = "0";
    /**
     * カード登録連番物理モード
     */
    SeqMode["Physics"] = "1";
})(SeqMode = exports.SeqMode || (exports.SeqMode = {}));
/**
 * 洗替・継続課金対象
 * @memberof utils/util
 * @enum DefaultFlag
 */
var DefaultFlag;
(function (DefaultFlag) {
    /**
     * 対象としない
     */
    DefaultFlag["BillingObject"] = "0";
    /**
     * 対象とする
     */
    DefaultFlag["NotSubjectToCharge"] = "1";
})(DefaultFlag = exports.DefaultFlag || (exports.DefaultFlag = {}));
/**
 * ショップ情報確認文字列を作成する
 * @memberof utils/util
 * @function createShopPassString
 * @param {ICreateShopPassStringArgs} args
 * @param {string} args.shopId
 * @param {string} args.shopPass
 * @param {string} args.orderId
 * @param {string} args.amount
 * @param {string} args.dateTime
 * @returns {string}
 */
function createShopPassString(args) {
    // 「ショップ ID + オーダーID + 利用金額+税送料+ショップパスワード + 日時情報」を MD5 でハッシュした文字列。
    const md5hash = crypto.createHash('md5');
    md5hash.update(`${args.shopId}${args.orderId}${args.amount.toString()}${args.shopPass}${args.dateTime}`, 'utf8');
    return md5hash.digest('hex');
}
exports.createShopPassString = createShopPassString;