UNPKG

@chevre/domain

Version:

Chevre Domain Library for Node.js

113 lines (112 loc) 7.52 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 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) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.processAuthorizeCreditCard = processAuthorizeCreditCard; const GMO = require("@motionpicture/gmo-service"); const factory = require("../../../../factory"); const processAuthorizeCreditCardResult2recipe_1 = require("./processAuthorizeCreditCardResult2recipe"); function processAuthorizeCreditCard(params) { // tslint:disable-next-line:cyclomatic-complexity max-func-body-length return (repos) => __awaiter(this, void 0, void 0, function* () { var _a, _b, _c, _d, _e, _f; let entryTranArgs; let entryTranResult; let execTranArgs; let execTranResult; const { shopId, shopPass, orderId } = params; const creditCard = params.object.creditCard; const { cardSeq, memberId } = creditCard; const { cardNo, cardPass, expire } = creditCard; const { token } = creditCard; const retUrl = creditCard === null || creditCard === void 0 ? void 0 : creditCard.retUrl; // 3DS拡張(2024-01-02~) if (params.processPublishPaymentUrl === true && typeof retUrl === 'string' && retUrl.length > 0) { let returnUrlObject; try { returnUrlObject = new URL(retUrl); } catch (error) { throw new factory.errors.Argument('object.creditCard.retUrl', 'retUrl unparsable'); } const returnUrlShouldBeIncluded = `${returnUrlObject.origin}${returnUrlObject.pathname}`; if (!params.returnUrls3ds.includes(returnUrlShouldBeIncluded)) { throw new factory.errors.Argument('object.creditCard.retUrl', 'invalid returnUrl'); } entryTranArgs = { shopId, shopPass, orderId, jobCd: GMO.utils.util.JobCd.Auth, amount: (typeof params.object.amount === 'number') ? params.object.amount : params.object.amount.value, // siteId: params.availableChannel.credentials?.siteId, // sitePass: params.availableChannel.credentials?.sitePass, tdFlag: GMO.utils.util.TdFlag.Version2, // tdTenantName: '', tds2Type: GMO.utils.util.Tds2Type.Error }; entryTranResult = yield repos.creditCardService.entryTran(entryTranArgs); execTranArgs = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ accessId: entryTranResult.accessId, accessPass: entryTranResult.accessPass, orderId, method: params.object.method, siteId: (_a = params.availableChannel.credentials) === null || _a === void 0 ? void 0 : _a.siteId, sitePass: (_b = params.availableChannel.credentials) === null || _b === void 0 ? void 0 : _b.sitePass, seqMode: GMO.utils.util.SeqMode.Physics, retUrl, callbackType: (params.callbackType3ds === 'GET') ? GMO.utils.util.CallbackType.Get : GMO.utils.util.CallbackType.Post }, (typeof cardNo === 'string') ? { cardNo } : undefined), (typeof cardPass === 'string') ? { cardPass } : undefined), (typeof expire === 'string') ? { expire } : undefined), (typeof token === 'string') ? { token } : undefined), (typeof memberId === 'string') ? { memberId } : undefined), (typeof cardSeq === 'number') ? { cardSeq } : undefined); execTranResult = yield repos.creditCardService.execTran3ds(execTranArgs); } else { entryTranArgs = { shopId, shopPass, orderId, jobCd: GMO.utils.util.JobCd.Auth, amount: (typeof params.object.amount === 'number') ? params.object.amount : params.object.amount.value, siteId: (_c = params.availableChannel.credentials) === null || _c === void 0 ? void 0 : _c.siteId, sitePass: (_d = params.availableChannel.credentials) === null || _d === void 0 ? void 0 : _d.sitePass }; let action; let recipe = (0, processAuthorizeCreditCardResult2recipe_1.processAuthorizeCreditCardResult2recipe)({ project: { id: params.project.id }, result: { entryTranArgs } }); const actionAttributes = { project: { id: params.project.id, typeOf: factory.organizationType.Project }, typeOf: factory.actionType.AuthorizeAction, agent: { id: params.project.id, typeOf: factory.organizationType.Project }, object: { paymentMethodId: orderId, typeOf: 'Invoice' }, sameAs: { id: params.payTransaction.id, typeOf: factory.assetTransactionType.Pay } }; // add action(2024-06-12~) action = yield repos.action.start(actionAttributes, { recipe }); try { entryTranResult = yield repos.creditCardService.entryTran(entryTranArgs); execTranArgs = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ accessId: entryTranResult.accessId, accessPass: entryTranResult.accessPass, orderId, method: params.object.method, siteId: (_e = params.availableChannel.credentials) === null || _e === void 0 ? void 0 : _e.siteId, sitePass: (_f = params.availableChannel.credentials) === null || _f === void 0 ? void 0 : _f.sitePass, seqMode: GMO.utils.util.SeqMode.Physics }, (typeof cardNo === 'string') ? { cardNo } : undefined), (typeof cardPass === 'string') ? { cardPass } : undefined), (typeof expire === 'string') ? { expire } : undefined), (typeof token === 'string') ? { token } : undefined), (typeof memberId === 'string') ? { memberId } : undefined), (typeof cardSeq === 'number') ? { cardSeq } : undefined); execTranResult = yield repos.creditCardService.execTran(execTranArgs); } catch (error) { try { yield repos.action.giveUp({ typeOf: actionAttributes.typeOf, id: action.id, error }); } catch (__) { // 失敗したら仕方ない } throw error; } recipe = (0, processAuthorizeCreditCardResult2recipe_1.processAuthorizeCreditCardResult2recipe)({ project: { id: params.project.id }, result: { entryTranArgs, entryTranResult, execTranArgs, execTranResult: execTranResult } }); const actionResult = {}; yield repos.action.completeWithVoid({ typeOf: actionAttributes.typeOf, id: action.id, result: actionResult, recipe }); } return { entryTranArgs, entryTranResult, execTranArgs, execTranResult }; }); }