@chevre/domain
Version:
Chevre Domain Library for Node.js
79 lines (78 loc) • 4.3 kB
JavaScript
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.voidTransaction = voidTransaction;
const factory = require("../../../factory");
const refundMovieTicket_1 = require("./refundMovieTicket");
function voidTransaction(params) {
return (repos, settings) => __awaiter(this, void 0, void 0, function* () {
var _a, _b, _c;
const transaction = params.object;
const paymentMethodType = (_a = transaction.object.paymentMethod) === null || _a === void 0 ? void 0 : _a.identifier;
if (typeof paymentMethodType !== 'string') {
throw new factory.errors.ArgumentNull('object.paymentMethod.identifier');
}
// const paymentMethodId = transaction.object.paymentMethod?.paymentMethodId;
const paymentMethodId = transaction.object.paymentMethodId;
if (typeof paymentMethodId !== 'string') {
throw new factory.errors.ArgumentNull('object.paymentMethodId');
}
// 決済開始時に着券していれば、取消
// 例えばtimeoutが原因でCompletedActionStatusでない場合、外部サービス側では着券済の可能性もあるので、そこを考慮する
const payAction = yield repos.action.findPayAction({
project: { id: transaction.project.id },
paymentMethodId,
actionStatus: {
$in: [
factory.actionStatusType.ActiveActionStatus,
factory.actionStatusType.CompletedActionStatus,
factory.actionStatusType.FailedActionStatus
]
}
});
if (payAction !== undefined) {
let refundAction;
const seller = transaction.recipient;
if (typeof (seller === null || seller === void 0 ? void 0 : seller.id) !== 'string') {
throw new factory.errors.NotFound('payTransaction.recipient');
}
if (payAction.purpose.typeOf !== factory.order.OrderType.Order) {
throw new factory.errors.Internal(`unexpected payAction.purpose.typeOf ${payAction.purpose.typeOf}`);
}
refundAction = {
project: transaction.project,
typeOf: factory.actionType.RefundAction,
object: [{
typeOf: transaction.object.typeOf,
id: (typeof transaction.object.id === 'string') ? transaction.object.id : '',
paymentMethod: {
paymentMethodId: paymentMethodId,
typeOf: paymentMethodType,
name: (typeof ((_b = transaction.object.paymentMethod) === null || _b === void 0 ? void 0 : _b.name) === 'string')
? transaction.object.paymentMethod.name
: paymentMethodType,
additionalProperty: []
}
}],
agent: {
id: seller.id,
name: (typeof seller.name === 'string') ? seller.name : String((_c = seller.name) === null || _c === void 0 ? void 0 : _c.ja),
typeOf: seller.typeOf
},
recipient: transaction.recipient,
purpose: payAction.purpose,
instrument: []
};
// callOnPayActionCompleted: false(2025-02-10~)
yield (0, refundMovieTicket_1.refundMovieTicket)(refundAction, { callOnPayActionCompleted: false })(repos, settings);
}
});
}
;