"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const createDebug = require("debug");
const http_status_1 = require("http-status");
const service_1 = require("../service");
const debug = createDebug('gmo-service:service:card');
/**
* 会員クレジットカードサービス
* @class
*/
class CardService extends service_1.Service {
/**
* 会員登録
* @memberof services/member
* @function saveMember
* @param {ISaveMemberArgs} args 会員登録in
* @param {string} args.siteId サイトID
* @param {string} args.sitePass サイトパスワード
* @param {string} args.memberId 会員ID
* @param {string | undefined} args.memberName 会員名
* @returns {Promise<ISaveMemberResult>} 会員登録out
*/
saveMember(args) {
return __awaiter(this, void 0, void 0, function* () {
debug('requesting...', args);
const result = yield this.request({
expectedStatusCodes: [http_status_1.OK],
uri: '/payment/SaveMember.idPass',
method: 'POST',
form: {
SiteID: args.siteId,
SitePass: args.sitePass,
MemberID: args.memberId,
MemberName: args.memberName
}
});
return {
memberId: result.MemberID
};
});
}
/**
* 会員更新
* @memberof services/member
* @function updateMember
* @param {IUpdateMemberArgs} args 会員更新in
* @param {string} args.siteId サイトID
* @param {string} args.sitePass サイトパスワード
* @param {string} args.memberId 会員ID
* @param {string | undefined} args.memberName 会員名
* @returns {Promise<IUpdateMemberResult>} 会員更新out
*/
updateMember(args) {
return __awaiter(this, void 0, void 0, function* () {
debug('requesting...', args);
const result = yield this.request({
expectedStatusCodes: [http_status_1.OK],
uri: '/payment/UpdateMember.idPass',
method: 'POST',
form: {
SiteID: args.siteId,
SitePass: args.sitePass,
MemberID: args.memberId,
MemberName: args.memberName
}
});
return {
memberId: result.MemberID
};
});
}
/**
* 会員削除
* @memberof services/member
* @function deleteMember
* @param {ISaveMemberArgs} args 会員削除in
* @param {string} args.siteId サイトID
* @param {string} args.sitePass サイトパスワード
* @param {string} args.memberId 会員ID
* @returns {Promise<ISaveMemberResult>} 会員削除out
*/
deleteMember(args) {
return __awaiter(this, void 0, void 0, function* () {
debug('requesting...', args);
const result = yield this.request({
expectedStatusCodes: [http_status_1.OK],
uri: '/payment/DeleteMember.idPass',
method: 'POST',
form: {
SiteID: args.siteId,
SitePass: args.sitePass,
MemberID: args.memberId
}
});
return {
memberId: result.MemberID
};
});
}
/**
* 会員参照
* 指定されたサイトIDと会員IDの会員が存在しない場合、E01390002エラーが返却されるので注意
* @memberof services/member
* @function searchMember
* @param {ISearchMemberArgs} args 会員参照in
* @param {string} args.siteId サイトID
* @param {string} args.sitePass サイトパスワード
* @param {string} args.memberId 会員ID
* @returns {Promise<ISearchMemberResult>} 会員参照out
*/
searchMember(args) {
return __awaiter(this, void 0, void 0, function* () {
debug('requesting...', args);
const result = yield this.request({
expectedStatusCodes: [http_status_1.OK],
uri: '/payment/SearchMember.idPass',
method: 'POST',
form: {
SiteID: args.siteId,
SitePass: args.sitePass,
MemberID: args.memberId
}
});
return {
memberId: result.MemberID,
memberName: result.MemberName,
deleteFlag: result.DeleteFlag
};
});
}
/**
* カード登録・更新
* @memberof services/card
* @function saveCard
* @param {ISaveCardArgs} args カード登録・更新in
* @param {string} args.siteId サイトID
* @param {string} args.sitePass サイトパスワード
* @param {string} args.memberId 会員ID
* @param {util.SeqMode} args.seqMode カード登録連番モード(0:論理モード(デフォルト)1:物理モード)
* @param {number} args.cardSeq カード登録連番(登録時は、入力不可です。更新時は、更新する値を設定します。)
* @param {string} args.defaultFlag 洗替・継続課金フラグ(0:継続課金対象としない(デフォルト)1:継続課金対象とする)
* @param {string} args.cardName カード会社略称
* @param {string} args.cardNo カード番号
* @param {string} args.cardPass カードパスワード
* @param {string} args.expire 有効期限
* @param {string} args.holderName 名義人
* @param {string} args.token トークン
* @returns {Promise<ISaveCardResult>} カード登録・更新out
*/
saveCard(args) {
return __awaiter(this, void 0, void 0, function* () {
debug('requesting...', args);
const result = yield this.request({
expectedStatusCodes: [http_status_1.OK],
uri: '/payment/SaveCard.idPass',
method: 'POST',
form: {
SiteID: args.siteId,
SitePass: args.sitePass,
MemberID: args.memberId,
SeqMode: args.seqMode,
CardSeq: args.cardSeq,
DefaultFlag: args.defaultFlag,
CardName: args.cardName,
CardNo: args.cardNo,
CardPass: args.cardPass,
Expire: args.expire,
HolderName: args.holderName,
Token: args.token
}
});
return {
cardSeq: result.CardSeq,
cardNo: result.CardNo,
forward: result.Forward
// brand: result.Brand,
// domesticFlag: result.DomesticFlag,
// issuerCode: result.IssuerCode,
// debitPrepaidFlag: result.DebitPrepaidFlag,
// debitPrepaidIssuerName: result.DebitPrepaidIssuerName,
// forwardFinal: result.ForwardFinal
};
});
}
/**
* カード削除
* @memberof services/card
* @function deleteCard
* @param {IDeleteCardArgs} args カード削除in
* @param {string} args.siteId サイトID
* @param {string} args.sitePass サイトパスワード
* @param {string} args.memberId 会員ID
* @param {util.SeqMode} args.seqMode カード登録連番モード(0:論理モード(デフォルト)1:物理モード)
* @param {string} args.cardSeq カード登録連番
* @returns {Promise<IDeleteCardResult>} カード削除out
*/
deleteCard(args) {
return __awaiter(this, void 0, void 0, function* () {
debug('requesting...', args);
const result = yield this.request({
expectedStatusCodes: [http_status_1.OK],
uri: '/payment/DeleteCard.idPass',
method: 'POST',
form: {
SiteID: args.siteId,
SitePass: args.sitePass,
MemberID: args.memberId,
SeqMode: args.seqMode,
CardSeq: args.cardSeq
}
});
return {
cardSeq: result.CardSeq
};
});
}
/**
* カード参照
* 会員は存在してカードが存在しない場合、E01240002エラーが返却されるので注意
* @memberof services/card
* @function searchCard
* @param {ISearchCardArgs} args カード参照in
* @param {string} args.siteId サイトID
* @param {string} args.sitePass サイトパスワード
* @param {string} args.memberId 会員ID
* @param {util.SeqMode} args.seqMode カード登録連番モード(0:論理モード1:物理モード)
* @param {string} args.cardSeq カード登録連番
* @returns {Promise<ISearchCardResult[]>} カード参照out
*/
searchCard(args) {
return __awaiter(this, void 0, void 0, function* () {
debug('requesting...', args);
const result = yield this.request({
expectedStatusCodes: [http_status_1.OK],
uri: '/payment/SearchCard.idPass',
method: 'POST',
form: {
SiteID: args.siteId,
SitePass: args.sitePass,
MemberID: args.memberId,
SeqMode: args.seqMode,
CardSeq: args.cardSeq
}
});
const cardSeqArry = result.CardSeq.split('|');
const defaultFlagArry = result.DefaultFlag.split('|');
const cardNameArry = result.CardName.split('|');
const cardNoArry = result.CardNo.split('|');
const expireArry = result.Expire.split('|');
const holderNameArry = result.HolderName.split('|');
const deleteFlagArry = result.DeleteFlag.split('|');
return cardSeqArry.map((cardSeq, index) => {
return {
cardSeq: cardSeq,
defaultFlag: defaultFlagArry[index],
cardName: cardNameArry[index],
cardNo: cardNoArry[index],
expire: expireArry[index],
holderName: holderNameArry[index],
deleteFlag: deleteFlagArry[index]
};
});
});
}
}
exports.CardService = CardService;