"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:credit');
/**
* クレジットカード決済サービス
* @class
*/
class CreditService extends service_1.Service {
/**
* 取引登録
* @memberOf services/credit
* @function entryTran
* @param {IEntryTranArgs} args 取引登録in
* @param {string} args.shopId
* @param {string} args.shopPass
* @param {string} args.orderId
* @param {util.JobCd} args.jobCd
* @param {string} args.amount
* @returns {Promise<IEntryTranResult>} 取引登録out
*/
entryTran(args) {
return __awaiter(this, void 0, void 0, function* () {
debug('requesting...', args);
const result = yield this.request({
expectedStatusCodes: [http_status_1.OK],
uri: '/payment/EntryTran.idPass',
method: 'POST',
form: {
ShopID: args.shopId,
ShopPass: args.shopPass,
OrderID: args.orderId,
JobCd: args.jobCd,
Amount: args.amount
}
});
return {
accessId: result.AccessID,
accessPass: result.AccessPass
};
});
}
/**
* 決済実行
* @memberOf services/credit
* @function execTran
* @param {IExecTranArgs} args 決済実行in
* @param {string} args.accessId 取引ID
* @param {string} args.accessPass 取引パスワード
* @param {string} args.orderId オーダーID
* @param {util.Method} args.method 支払方法
* @param {number} args.payTimes 支払回数
* @param {string} args.cardNo カード番号
* @param {string} args.expire 有効期限
* @param {string} args.securityCode セキュリティーコード
* @param {string} args.token カード情報トークン
* @param {string} args.pin 暗証番号
* @param {string} args.siteId サイトID
* @param {string} args.sitePass サイトパスワード
* @param {string} args.memberId 会員ID
* @param {util.SeqMode} args.seqMode カード登録連番モード
* @param {number} args.cardSeq カード登録連番
* @param {string} args.cardPass カードパスワード
* @param {string} args.clientField1 加盟店自由項目1
* @param {string} args.clientField2 加盟店自由項目2
* @param {string} args.clientField3 加盟店自由項目3
* @returns {Promise<IExecTranResult>} 決済実行out
*/
execTran(args) {
return __awaiter(this, void 0, void 0, function* () {
debug('requesting...', args);
const result = yield this.request({
expectedStatusCodes: [http_status_1.OK],
uri: '/payment/ExecTran.idPass',
method: 'POST',
form: {
AccessID: args.accessId,
AccessPass: args.accessPass,
OrderID: args.orderId,
Method: args.method,
PayTimes: args.payTimes,
CardNo: args.cardNo,
Expire: args.expire,
SecurityCode: args.securityCode,
Token: args.token,
PIN: args.pin,
SiteID: args.siteId,
SitePass: args.sitePass,
MemberID: args.memberId,
SeqMode: args.seqMode,
CardSeq: args.cardSeq,
CardPass: args.cardPass,
ClientField1: args.clientField1,
ClientField2: args.clientField2,
ClientField3: args.clientField3
}
});
return {
acs: result.ACS,
orderId: result.OrderID,
forward: result.Forward,
method: result.Method,
payTimes: result.PayTimes,
approve: result.Approve,
tranId: result.TranID,
tranDate: result.TranDate,
checkString: result.CheckString,
clientField1: result.ClientField1,
clientField2: result.ClientField2,
clientField3: result.ClientField3
};
});
}
/**
* 決済変更
* @memberOf services/credit
* @function alterTran
* @param {IAlterTranArgs} args 決済変更in
* @param {string} args.shopId
* @param {string} args.shopPass
* @param {string} args.accessId
* @param {string} args.accessPass
* @param {util.JobCd} args.jobCd
* @param {number} args.amount
* @param {util.Method} args.method
* @returns {Promise<IAlterTranResult>} 決済変更out
*/
alterTran(args) {
return __awaiter(this, void 0, void 0, function* () {
debug('requesting...', args);
const result = yield this.request({
expectedStatusCodes: [http_status_1.OK],
uri: '/payment/AlterTran.idPass',
method: 'POST',
form: {
ShopID: args.shopId,
ShopPass: args.shopPass,
AccessID: args.accessId,
AccessPass: args.accessPass,
JobCd: args.jobCd,
Amount: args.amount,
Method: args.method
}
});
return {
accessId: result.AccessID,
accessPass: result.AccessPass,
forward: result.Forward,
approve: result.Approve,
tranId: result.TranID,
tranDate: result.TranDate
};
});
}
/**
* 取引状態参照
* @memberOf services/credit
* @function searchTrade
* @param {ISearchTradeArgs} args 取引状態参照in
* @param {string} args.shopId
* @param {string} args.shopPass
* @param {string} args.orderID
* @returns {Promise<ISearchTradeResult>} 取引状態参照out
*/
searchTrade(args) {
return __awaiter(this, void 0, void 0, function* () {
debug('requesting...', args);
const result = yield this.request({
expectedStatusCodes: [http_status_1.OK],
uri: '/payment/SearchTrade.idPass',
method: 'POST',
form: {
ShopID: args.shopId,
ShopPass: args.shopPass,
OrderID: args.orderId
}
});
return {
orderId: result.OrderID,
status: result.Status,
processDate: result.ProcessDate,
jobCd: result.JobCd,
accessId: result.AccessID,
accessPass: result.AccessPass,
itemCode: result.ItemCode,
amount: result.Amount,
tax: result.Tax,
siteId: result.SiteID,
memberId: result.MemberID,
cardNo: result.CardNo,
expire: result.Expire,
method: result.Method,
payTimes: result.PayTimes,
forward: result.Forward,
tranId: result.TranID,
approve: result.Approve,
clientField1: result.ClientField1,
clientField2: result.ClientField2,
clientField3: result.ClientField3,
errCode: result.ErrCode,
errInfo: result.ErrInfo
};
});
}
/**
* 金額変更
* @memberof services/credit
* @function changeTran
* @param {IChangeTranArgs} args 決済変更in
* @param {string} args.shopId ショップID
* @param {string} args.shopPass ショップパスワード
* @param {string} args.accessId 取引ID
* @param {string} args.accessPass 取引パスワード
* @param {util.JobCd} args.jobCd 処理区分
* @param {number} args.amount 利用金額
* @param {string} args.tax 税送料
* @returns {Promise<IChangeTranResult>} 金額変更out
*/
changeTran(args) {
return __awaiter(this, void 0, void 0, function* () {
debug('requesting...', args);
const result = yield this.request({
expectedStatusCodes: [http_status_1.OK],
uri: '/payment/ChangeTran.idPass',
method: 'POST',
form: {
ShopID: args.shopId,
ShopPass: args.shopPass,
AccessID: args.accessId,
AccessPass: args.accessPass,
JobCd: args.jobCd,
Amount: args.amount,
Tax: args.tax
}
});
return {
accessId: result.AccessID,
accessPass: result.AccessPass,
forward: result.Forward,
approve: result.Approve,
tranId: result.TranID,
tranDate: result.TranDate
};
});
}
}
exports.CreditService = CreditService;