@chevre/domain 23.1.0-alpha.8 → 23.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/example/src/chevre/{eventOffer/adminEventOffers.ts → acceptedPaymentMethodOffer/adminAcceptedPaymentMethodOffers.ts} +12 -11
- package/example/src/chevre/actions/checkAcceptPayActions.ts +60 -0
- package/example/src/chevre/assetTransaction/checkPayTransactionsTicketToken.ts +67 -0
- package/example/src/chevre/assetTransaction/processReserve.ts +7 -3
- package/example/src/chevre/authorizeEventServiceOffer.ts +6 -5
- package/example/src/chevre/eventSeries/migrateEventSeriesUnacceptedPaymentMethod.ts +93 -0
- package/example/src/chevre/importEventsFromCOA.ts +5 -5
- package/example/src/chevre/member/migrateMemberIdentifier.ts +20 -15
- package/example/src/chevre/pendingReservation/findEventSeatOffersBySection.ts +46 -0
- package/example/src/chevre/place/checkSectionCount.ts +27 -0
- package/example/src/chevre/place/findSectionsByRoom.ts +50 -0
- package/example/src/chevre/project/unsetProjectSettings.ts +73 -0
- package/example/src/chevre/reIndex.ts +1 -2
- package/example/src/chevre/roles/{addAdminSellerEventIfNotExists.ts → addAdminSellerEventOfferIfNotExists.ts} +1 -1
- package/example/src/chevre/stockHolder/findSeatsBySection.ts +59 -0
- package/example/src/chevre/stockHolder/searchSeats.ts +2 -2
- package/lib/chevre/repo/acceptedPaymentMethod.d.ts +41 -0
- package/lib/chevre/repo/acceptedPaymentMethod.js +180 -0
- package/lib/chevre/repo/authorization.d.ts +3 -2
- package/lib/chevre/repo/authorization.js +13 -5
- package/lib/chevre/repo/event.d.ts +1 -35
- package/lib/chevre/repo/event.js +2 -102
- package/lib/chevre/repo/eventOffer.js +3 -3
- package/lib/chevre/repo/mongoose/schemas/acceptedPaymentMethod.d.ts +10 -0
- package/lib/chevre/repo/mongoose/schemas/acceptedPaymentMethod.js +97 -0
- package/lib/chevre/repo/mongoose/schemas/eventOffer.js +48 -35
- package/lib/chevre/repo/mongoose/schemas/member.js +10 -0
- package/lib/chevre/repo/note.js +4 -2
- package/lib/chevre/repo/pendingReservation.js +28 -71
- package/lib/chevre/repo/place/seat.d.ts +24 -0
- package/lib/chevre/repo/place/seat.js +103 -21
- package/lib/chevre/repo/place/section.d.ts +20 -0
- package/lib/chevre/repo/place/section.js +47 -0
- package/lib/chevre/repo/ticket.d.ts +7 -1
- package/lib/chevre/repo/ticket.js +14 -1
- package/lib/chevre/repository.d.ts +5 -0
- package/lib/chevre/repository.js +15 -2
- package/lib/chevre/service/assetTransaction/pay/factory.d.ts +1 -1
- package/lib/chevre/service/assetTransaction/pay/factory.js +8 -3
- package/lib/chevre/service/assetTransaction/pay/validateAcceptedPaymentMethodIfNeeded.d.ts +16 -0
- package/lib/chevre/service/assetTransaction/pay/validateAcceptedPaymentMethodIfNeeded.js +94 -0
- package/lib/chevre/service/assetTransaction/pay.d.ts +6 -1
- package/lib/chevre/service/assetTransaction/pay.js +6 -1
- package/lib/chevre/service/assetTransaction/reserve/start.d.ts +4 -0
- package/lib/chevre/service/assetTransaction/reserve/start.js +4 -1
- package/lib/chevre/service/assetTransaction/reserve/validateStartRequest/fixExtendedEventOffer.d.ts +2 -2
- package/lib/chevre/service/assetTransaction/reserve/validateStartRequest/fixExtendedEventOffer.js +8 -8
- package/lib/chevre/service/assetTransaction/reserve/validateStartRequest/validateIssuedOfferIfExists.d.ts +7 -2
- package/lib/chevre/service/assetTransaction/reserve/validateStartRequest/validateIssuedOfferIfExists.js +32 -32
- package/lib/chevre/service/assetTransaction/reserve/validateStartRequest/validateMemberTierIfExists.d.ts +1 -1
- package/lib/chevre/service/assetTransaction/reserve/validateStartRequest/validateMemberTierIfExists.js +10 -54
- package/lib/chevre/service/assetTransaction/reserve/validateStartRequest/verifyTicketTokenAsNeeded.d.ts +23 -0
- package/lib/chevre/service/assetTransaction/reserve/validateStartRequest/verifyTicketTokenAsNeeded.js +62 -0
- package/lib/chevre/service/assetTransaction/reserve/validateStartRequest.d.ts +34 -1
- package/lib/chevre/service/assetTransaction/reserve/validateStartRequest.js +21 -9
- package/lib/chevre/service/offer/event/authorize/factory.d.ts +0 -4
- package/lib/chevre/service/offer/event/authorize/factory.js +2 -5
- package/lib/chevre/service/offer/event/authorize/processStartReserve4chevre/requestedProgramMembershipUsed2permit.js +1 -1
- package/lib/chevre/service/offer/event/authorize/processStartReserve4chevre.d.ts +1 -0
- package/lib/chevre/service/offer/event/authorize/processStartReserve4chevre.js +2 -7
- package/lib/chevre/service/offer/event/authorize.d.ts +1 -0
- package/lib/chevre/service/offer/event/authorize.js +7 -7
- package/lib/chevre/service/offer/event/issueEventOfferTicket.d.ts +48 -0
- package/lib/chevre/service/offer/event/issueEventOfferTicket.js +123 -0
- package/lib/chevre/service/offer/event.d.ts +2 -1
- package/lib/chevre/service/offer/event.js +3 -1
- package/lib/chevre/service/offer.d.ts +31 -1
- package/lib/chevre/service/offer.js +104 -34
- package/lib/chevre/service/payment/any/authorize/fixTransactionNumber.d.ts +9 -0
- package/lib/chevre/service/payment/any/authorize/fixTransactionNumber.js +22 -11
- package/lib/chevre/service/payment/any/authorize/handlePrePublishedPaymentMethodIdOnAuthorizing.d.ts +19 -2
- package/lib/chevre/service/payment/any/authorize/handlePrePublishedPaymentMethodIdOnAuthorizing.js +87 -9
- package/lib/chevre/service/payment/any/factory.d.ts +20 -3
- package/lib/chevre/service/payment/any/factory.js +26 -6
- package/lib/chevre/service/payment/any/publishPaymentUrl/fixTransactionNumberOnPublishPaymentUrl.d.ts +4 -0
- package/lib/chevre/service/payment/any/publishPaymentUrl/fixTransactionNumberOnPublishPaymentUrl.js +15 -11
- package/lib/chevre/service/payment/any/verifyTicketTokenAsNeeded.d.ts +6 -3
- package/lib/chevre/service/payment/any/verifyTicketTokenAsNeeded.js +8 -22
- package/lib/chevre/service/payment/any.d.ts +5 -1
- package/lib/chevre/service/payment/any.js +22 -13
- package/lib/chevre/service/payment/factory.js +0 -5
- package/lib/chevre/service/payment/movieTicket/authorize.js +0 -5
- package/lib/chevre/service/task/authorizePayment.js +2 -0
- package/lib/chevre/service/task/publishPaymentUrl.js +4 -0
- package/lib/chevre/service/transaction/placeOrder/confirm/publishCode.js +1 -1
- package/lib/chevre/service/transaction/placeOrder/confirm/validation/factory.d.ts +9 -0
- package/lib/chevre/service/transaction/placeOrder/confirm/validation/factory.js +2 -0
- package/lib/chevre/service/transaction/placeOrder/confirm/validation/validateInvoiceReferencesOrder.d.ts +8 -0
- package/lib/chevre/service/transaction/placeOrder/confirm/validation/validateInvoiceReferencesOrder.js +45 -0
- package/lib/chevre/service/transaction/placeOrder/confirm/validation/validatePrice.d.ts +3 -0
- package/lib/chevre/service/transaction/placeOrder/confirm/validation/validatePrice.js +38 -0
- package/lib/chevre/service/transaction/placeOrder/confirm/validation.d.ts +2 -8
- package/lib/chevre/service/transaction/placeOrder/confirm/validation.js +5 -35
- package/package.json +3 -3
- package/example/src/chevre/checkReplaceActions.ts +0 -65
- package/example/src/chevre/upsertManyEventsByAdditionalProperty.ts +0 -193
- package/lib/chevre/service/code.d.ts +0 -8
- package/lib/chevre/service/code.js +0 -7
|
@@ -12,6 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.product = exports.moneyTransfer = exports.eventServiceByCOA = exports.event = void 0;
|
|
13
13
|
exports.addOffers2Seat = addOffers2Seat;
|
|
14
14
|
exports.searchEventSeatOffersWithPaging = searchEventSeatOffersWithPaging;
|
|
15
|
+
exports.findEventSeatOffersBySection = findEventSeatOffersBySection;
|
|
15
16
|
const moment = require("moment");
|
|
16
17
|
const factory = require("../factory");
|
|
17
18
|
const EventOfferService = require("./offer/event");
|
|
@@ -56,32 +57,48 @@ function addOffers2Seat(params) {
|
|
|
56
57
|
/**
|
|
57
58
|
* イベントに対する座席オファーを検索する
|
|
58
59
|
*/
|
|
59
|
-
// tslint:disable-next-line:max-func-body-length
|
|
60
60
|
function searchEventSeatOffersWithPaging(params) {
|
|
61
|
-
// tslint:disable-next-line:max-func-body-length
|
|
62
61
|
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
63
62
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
64
|
-
|
|
63
|
+
const { useDefaultSection } = params.options;
|
|
65
64
|
let offers = [];
|
|
66
65
|
// optimize(2024-07-18~)
|
|
67
|
-
const event = yield repos.event.projectEventFieldsById({ id: params.event.id }, ['project', 'startDate', 'offers.itemOffered']);
|
|
66
|
+
const event = yield repos.event.projectEventFieldsById({ id: params.event.id }, ['project', 'startDate', 'offers.itemOffered', 'organizer']);
|
|
68
67
|
// 座席指定利用可能かどうか
|
|
69
68
|
const eventOffers = event.offers;
|
|
70
69
|
const reservedSeatsAvailable = ((_b = (_a = eventOffers === null || eventOffers === void 0 ? void 0 : eventOffers.itemOffered.serviceOutput) === null || _a === void 0 ? void 0 : _a.reservedTicket) === null || _b === void 0 ? void 0 : _b.ticketedSeat) !== undefined;
|
|
71
70
|
if (reservedSeatsAvailable) {
|
|
72
71
|
const roomBranchCode = String((_d = (_c = eventOffers.itemOffered) === null || _c === void 0 ? void 0 : _c.availableChannel) === null || _d === void 0 ? void 0 : _d.serviceLocation.branchCode);
|
|
73
72
|
const movieTheaterBranchCode = String((_f = (_e = eventOffers.itemOffered) === null || _e === void 0 ? void 0 : _e.availableChannel) === null || _f === void 0 ? void 0 : _f.serviceLocation.containedInPlace.branchCode);
|
|
73
|
+
let defaultSectionCode;
|
|
74
|
+
if (useDefaultSection) {
|
|
75
|
+
const defaultSection = (yield repos.section.findSectionsByRoom({
|
|
76
|
+
limit: 1,
|
|
77
|
+
page: 1,
|
|
78
|
+
projectId: event.project.id,
|
|
79
|
+
sellerId: event.organizer.id,
|
|
80
|
+
movieTheaterCode: movieTheaterBranchCode,
|
|
81
|
+
roomCode: roomBranchCode
|
|
82
|
+
})).shift();
|
|
83
|
+
if (defaultSection === undefined) {
|
|
84
|
+
return [];
|
|
85
|
+
}
|
|
86
|
+
defaultSectionCode = defaultSection.branchCode;
|
|
87
|
+
// console.log('searchEventSeatOffersWithPaging:defaultSectionCode:', defaultSectionCode);
|
|
88
|
+
}
|
|
74
89
|
const seats = yield repos.seat.projectSeatsByScreeningRoom(Object.assign(Object.assign({}, params), { project: { id: { $eq: event.project.id } }, screeningRoom: {
|
|
75
90
|
branchCode: { $eq: roomBranchCode },
|
|
76
91
|
containedInPlace: {
|
|
77
92
|
branchCode: { $eq: movieTheaterBranchCode }
|
|
78
93
|
}
|
|
79
94
|
}, containedInPlace: {
|
|
80
|
-
branchCode: {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
:
|
|
84
|
-
|
|
95
|
+
branchCode: Object.assign({}, (typeof defaultSectionCode === 'string')
|
|
96
|
+
? { $eq: defaultSectionCode }
|
|
97
|
+
: {
|
|
98
|
+
$eq: (typeof ((_h = (_g = params.containedInPlace) === null || _g === void 0 ? void 0 : _g.branchCode) === null || _h === void 0 ? void 0 : _h.$eq) === 'string')
|
|
99
|
+
? (_k = (_j = params.containedInPlace) === null || _j === void 0 ? void 0 : _j.branchCode) === null || _k === void 0 ? void 0 : _k.$eq
|
|
100
|
+
: undefined
|
|
101
|
+
})
|
|
85
102
|
}, $projection: Object.assign({}, params.$projection) }));
|
|
86
103
|
if (seats.length > 0) {
|
|
87
104
|
const availabilities = yield repos.stockHolder.searchHolders({
|
|
@@ -98,31 +115,6 @@ function searchEventSeatOffersWithPaging(params) {
|
|
|
98
115
|
};
|
|
99
116
|
})
|
|
100
117
|
});
|
|
101
|
-
// ルームに含まれる座席区分のみ加算料金を検索(2024-08-05~)
|
|
102
|
-
// const uniqueSeatingTypes = await repos.seat.aggregateSeatingTypes({
|
|
103
|
-
// project: { id: { $eq: event.project.id } },
|
|
104
|
-
// containedInPlace: {
|
|
105
|
-
// containedInPlace: {
|
|
106
|
-
// branchCode: { $eq: roomBranchCode },
|
|
107
|
-
// containedInPlace: { branchCode: { $eq: movieTheaterBranchCode } }
|
|
108
|
-
// }
|
|
109
|
-
// }
|
|
110
|
-
// });
|
|
111
|
-
// 座席タイプ価格仕様を検索
|
|
112
|
-
// let priceSpecs: ICategoryCodeChargeSpecification[] = [];
|
|
113
|
-
// if (!excludePriceSpecification) {
|
|
114
|
-
// if (Array.isArray(uniqueSeatingTypes) && uniqueSeatingTypes.length > 0) {
|
|
115
|
-
// priceSpecs =
|
|
116
|
-
// await repos.priceSpecification.search<factory.priceSpecificationType.CategoryCodeChargeSpecification>({
|
|
117
|
-
// project: { id: { $eq: event.project.id } },
|
|
118
|
-
// typeOf: factory.priceSpecificationType.CategoryCodeChargeSpecification,
|
|
119
|
-
// appliesToCategoryCode: {
|
|
120
|
-
// inCodeSet: { identifier: { $eq: factory.categoryCode.CategorySetIdentifier.SeatingType } },
|
|
121
|
-
// codeValue: { $in: uniqueSeatingTypes } // ルームに含まれる座席区分のみ加算料金を検索(2024-08-05~)
|
|
122
|
-
// }
|
|
123
|
-
// });
|
|
124
|
-
// }
|
|
125
|
-
// }
|
|
126
118
|
offers = seats.map((seat, index) => {
|
|
127
119
|
return addOffers2Seat({
|
|
128
120
|
seat,
|
|
@@ -137,3 +129,81 @@ function searchEventSeatOffersWithPaging(params) {
|
|
|
137
129
|
return offers;
|
|
138
130
|
});
|
|
139
131
|
}
|
|
132
|
+
/**
|
|
133
|
+
* セクション指定でイベントに対する座席オファーを検索する
|
|
134
|
+
*/
|
|
135
|
+
function findEventSeatOffersBySection(params) {
|
|
136
|
+
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
137
|
+
var _a, _b, _c, _d, _e, _f;
|
|
138
|
+
const { limit, page, projectId, sellerId, eventId, sectionCode } = params;
|
|
139
|
+
let offers = [];
|
|
140
|
+
const event = (yield repos.event.projectEventFields({
|
|
141
|
+
limit: 1,
|
|
142
|
+
page: 1,
|
|
143
|
+
project: { id: { $eq: projectId } },
|
|
144
|
+
organizer: { id: { $eq: sellerId } },
|
|
145
|
+
id: { $eq: eventId },
|
|
146
|
+
typeOf: factory.eventType.ScreeningEvent
|
|
147
|
+
}, ['startDate', 'offers.itemOffered'])).shift();
|
|
148
|
+
if (event === undefined) {
|
|
149
|
+
throw new factory.errors.NotFound(factory.eventType.ScreeningEvent);
|
|
150
|
+
}
|
|
151
|
+
// 座席指定利用可能かどうか
|
|
152
|
+
const eventOffers = event.offers;
|
|
153
|
+
const reservedSeatsAvailable = ((_b = (_a = eventOffers === null || eventOffers === void 0 ? void 0 : eventOffers.itemOffered.serviceOutput) === null || _a === void 0 ? void 0 : _a.reservedTicket) === null || _b === void 0 ? void 0 : _b.ticketedSeat) !== undefined;
|
|
154
|
+
if (reservedSeatsAvailable) {
|
|
155
|
+
const roomBranchCode = String((_d = (_c = eventOffers.itemOffered) === null || _c === void 0 ? void 0 : _c.availableChannel) === null || _d === void 0 ? void 0 : _d.serviceLocation.branchCode);
|
|
156
|
+
const movieTheaterBranchCode = String((_f = (_e = eventOffers.itemOffered) === null || _e === void 0 ? void 0 : _e.availableChannel) === null || _f === void 0 ? void 0 : _f.serviceLocation.containedInPlace.branchCode);
|
|
157
|
+
const seats = yield repos.seat.projectSeatsByScreeningRoom({
|
|
158
|
+
limit,
|
|
159
|
+
page,
|
|
160
|
+
project: { id: { $eq: projectId } },
|
|
161
|
+
screeningRoom: {
|
|
162
|
+
branchCode: { $eq: roomBranchCode },
|
|
163
|
+
containedInPlace: {
|
|
164
|
+
branchCode: { $eq: movieTheaterBranchCode }
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
containedInPlace: {
|
|
168
|
+
branchCode: { $eq: sectionCode } // セクション指定
|
|
169
|
+
},
|
|
170
|
+
$projection: {
|
|
171
|
+
'containedInPlace.branchCode': 0,
|
|
172
|
+
'containedInPlace.containedInPlace': 0,
|
|
173
|
+
'containedInPlace.typeOf': 0,
|
|
174
|
+
'containedInPlace.name': 0,
|
|
175
|
+
typeOf: 0,
|
|
176
|
+
additionalProperty: 0,
|
|
177
|
+
seatingType: 0,
|
|
178
|
+
name: 0
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
if (seats.length > 0) {
|
|
182
|
+
const availabilities = yield repos.stockHolder.searchHolders({
|
|
183
|
+
project: { id: projectId },
|
|
184
|
+
eventId,
|
|
185
|
+
startDate: moment(event.startDate)
|
|
186
|
+
.toDate(),
|
|
187
|
+
hasTicketedSeat: true,
|
|
188
|
+
offers: seats.map((s) => {
|
|
189
|
+
return {
|
|
190
|
+
seatNumber: s.branchCode,
|
|
191
|
+
seatSection: sectionCode
|
|
192
|
+
};
|
|
193
|
+
})
|
|
194
|
+
});
|
|
195
|
+
offers = seats.map((seat, index) => {
|
|
196
|
+
return {
|
|
197
|
+
availability: (typeof availabilities[index] === 'string')
|
|
198
|
+
? factory.itemAvailability.OutOfStock // ホルダーが存在すればOutOfStock
|
|
199
|
+
: factory.itemAvailability.InStock,
|
|
200
|
+
itemOffered: {
|
|
201
|
+
branchCode: seat.branchCode
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
return offers;
|
|
208
|
+
});
|
|
209
|
+
}
|
|
@@ -5,6 +5,7 @@ import type { TicketRepo } from '../../../../repo/ticket';
|
|
|
5
5
|
import type { ITransactionInProgress, TransactionRepo } from '../../../../repo/transaction';
|
|
6
6
|
import type { TransactionNumberRepo } from '../../../../repo/transactionNumber';
|
|
7
7
|
import * as PayTransactionService from '../../../assetTransaction/pay';
|
|
8
|
+
import { IInvoiceByTicketToken } from '../factory';
|
|
8
9
|
interface IFixTransactionNumberRepos {
|
|
9
10
|
action: ActionRepo;
|
|
10
11
|
authorization: AuthorizationRepo;
|
|
@@ -27,6 +28,14 @@ declare function fixTransactionNumber(params: {
|
|
|
27
28
|
transactionNumber: string;
|
|
28
29
|
pendingPaymentAgencyTransaction?: PayTransactionService.IPaymentAgencyTransaction;
|
|
29
30
|
creditCard?: factory.action.authorize.paymentMethod.any.ICreditCard;
|
|
31
|
+
/**
|
|
32
|
+
* 承認時に指定のチケット、あるいは、決済採用時に指定のチケット
|
|
33
|
+
*/
|
|
34
|
+
invoiceByTicketToken?: IInvoiceByTicketToken;
|
|
35
|
+
/**
|
|
36
|
+
* 承認時に指定のチケット、あるいは、決済採用時に指定のチケット
|
|
37
|
+
*/
|
|
38
|
+
ticketToken?: string;
|
|
30
39
|
permitOrInvoice?: never;
|
|
31
40
|
id?: never;
|
|
32
41
|
} | {
|
|
@@ -18,13 +18,16 @@ const handlePrePublishedPaymentMethodIdOnAuthorizing_1 = require("./handlePrePub
|
|
|
18
18
|
*/
|
|
19
19
|
function fixTransactionNumber(params) {
|
|
20
20
|
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
21
|
+
var _a, _b, _c, _d, _e, _f;
|
|
21
22
|
const { paymentServiceType, transaction, object } = params;
|
|
22
23
|
// 取引番号生成
|
|
23
24
|
let transactionNumber;
|
|
24
25
|
let pendingPaymentAgencyTransaction;
|
|
25
26
|
let creditCard = object.creditCard;
|
|
27
|
+
let invoiceByTicketToken;
|
|
28
|
+
let ticketToken;
|
|
26
29
|
// ticketTokenを解釈(2024-08-13~)
|
|
27
|
-
const {
|
|
30
|
+
const { verifyPaymentMethodTicketResult } = yield (0, verifyTicketTokenAsNeeded_1.verifyTicketTokenAsNeeded)({
|
|
28
31
|
project: { id: transaction.project.id },
|
|
29
32
|
object: object,
|
|
30
33
|
paymentServiceType,
|
|
@@ -34,18 +37,21 @@ function fixTransactionNumber(params) {
|
|
|
34
37
|
* ticketTokenによって指定された決済方法ID
|
|
35
38
|
*/
|
|
36
39
|
let paymentMethodIdByTicketToken;
|
|
37
|
-
if ((
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
if (((_a = verifyPaymentMethodTicketResult === null || verifyPaymentMethodTicketResult === void 0 ? void 0 : verifyPaymentMethodTicketResult.invoiceByTicketToken) === null || _a === void 0 ? void 0 : _a.typeOf) === factory.permit.PermitType.Permit) {
|
|
41
|
+
throw new factory.errors.Argument('ticketToken', `typeOfGood.typeOf ${(_b = verifyPaymentMethodTicketResult === null || verifyPaymentMethodTicketResult === void 0 ? void 0 : verifyPaymentMethodTicketResult.invoiceByTicketToken) === null || _b === void 0 ? void 0 : _b.typeOf} discontinued`);
|
|
42
|
+
// paymentMethodIdByTicketToken = permitOrInvoice?.identifier;
|
|
43
|
+
// if (typeof paymentMethodIdByTicketToken === 'string') {
|
|
44
|
+
// transactionNumber = paymentMethodIdByTicketToken; // メンバーシップ指定の場合、取引番号に適用(2024-08-13~)
|
|
45
|
+
// }
|
|
42
46
|
}
|
|
43
|
-
else if ((
|
|
47
|
+
else if (((_c = verifyPaymentMethodTicketResult === null || verifyPaymentMethodTicketResult === void 0 ? void 0 : verifyPaymentMethodTicketResult.invoiceByTicketToken) === null || _c === void 0 ? void 0 : _c.typeOf) === 'Invoice') {
|
|
44
48
|
// support paymentServiceType.MovieTicket(2024-11-23~)
|
|
45
|
-
if (typeof (
|
|
46
|
-
paymentMethodIdByTicketToken =
|
|
49
|
+
if (typeof ((_d = verifyPaymentMethodTicketResult.invoiceByTicketToken) === null || _d === void 0 ? void 0 : _d.paymentMethodId) === 'string') {
|
|
50
|
+
paymentMethodIdByTicketToken = (_e = verifyPaymentMethodTicketResult.invoiceByTicketToken) === null || _e === void 0 ? void 0 : _e.paymentMethodId;
|
|
47
51
|
if (typeof paymentMethodIdByTicketToken === 'string') {
|
|
48
52
|
transactionNumber = paymentMethodIdByTicketToken;
|
|
53
|
+
invoiceByTicketToken = verifyPaymentMethodTicketResult.invoiceByTicketToken;
|
|
54
|
+
ticketToken = verifyPaymentMethodTicketResult.ticketToken;
|
|
49
55
|
}
|
|
50
56
|
}
|
|
51
57
|
}
|
|
@@ -63,14 +69,18 @@ function fixTransactionNumber(params) {
|
|
|
63
69
|
transaction
|
|
64
70
|
})(repos);
|
|
65
71
|
if (existingCompletedAuthorizeAction !== undefined) {
|
|
72
|
+
// 既に承認済であれば何もしない
|
|
66
73
|
return { id: existingCompletedAuthorizeAction.id };
|
|
67
74
|
}
|
|
68
75
|
else if (authorizeParams !== undefined) {
|
|
69
76
|
// creditCardを決済URL発行時の情報で上書き(2024-01-08~)
|
|
70
|
-
// creditCard = authorizeParams.paymentMethodByTransaction.paymentMethod?.creditCard;
|
|
71
77
|
creditCard = authorizeParams.creditCard;
|
|
72
78
|
transactionNumber = object.paymentMethodId;
|
|
73
79
|
pendingPaymentAgencyTransaction = authorizeParams.pendingPaymentAgencyTransaction;
|
|
80
|
+
if (typeof ((_f = authorizeParams.acceptAction2ticketResult) === null || _f === void 0 ? void 0 : _f.ticketToken) === 'string') {
|
|
81
|
+
invoiceByTicketToken = authorizeParams.acceptAction2ticketResult.invoiceByTicketToken;
|
|
82
|
+
ticketToken = authorizeParams.acceptAction2ticketResult.ticketToken;
|
|
83
|
+
}
|
|
74
84
|
}
|
|
75
85
|
else {
|
|
76
86
|
throw new factory.errors.NotImplemented('pendingPaymentAgencyTransaction required on paymentMethodId specified');
|
|
@@ -81,7 +91,8 @@ function fixTransactionNumber(params) {
|
|
|
81
91
|
const publishTransactionNumberResult = yield repos.transactionNumber.publishByTimestamp({ startDate: new Date() });
|
|
82
92
|
transactionNumber = publishTransactionNumberResult.transactionNumber;
|
|
83
93
|
}
|
|
84
|
-
return Object.assign(Object.assign({ transactionNumber
|
|
94
|
+
return Object.assign(Object.assign(Object.assign({ transactionNumber,
|
|
95
|
+
ticketToken }, (pendingPaymentAgencyTransaction !== undefined) ? { pendingPaymentAgencyTransaction } : undefined), (creditCard !== undefined) ? { creditCard } : undefined), (invoiceByTicketToken !== undefined) ? { invoiceByTicketToken } : undefined
|
|
85
96
|
// ...(permitOrInvoice !== undefined) ? { permitOrInvoice } : undefined
|
|
86
97
|
);
|
|
87
98
|
});
|
package/lib/chevre/service/payment/any/authorize/handlePrePublishedPaymentMethodIdOnAuthorizing.d.ts
CHANGED
|
@@ -1,23 +1,40 @@
|
|
|
1
1
|
import * as factory from '../../../../factory';
|
|
2
2
|
import type { ActionRepo } from '../../../../repo/action';
|
|
3
|
+
import type { AuthorizationRepo } from '../../../../repo/authorization';
|
|
4
|
+
import type { TicketRepo } from '../../../../repo/ticket';
|
|
3
5
|
import type { ITransactionInProgress, TransactionRepo } from '../../../../repo/transaction';
|
|
4
6
|
import * as PayTransactionService from '../../../assetTransaction/pay';
|
|
7
|
+
import type { IInvoiceByTicketToken } from '../factory';
|
|
5
8
|
type IObjectWithoutDetail = factory.action.authorize.paymentMethod.any.IObjectWithoutDetail;
|
|
9
|
+
interface IAcceptAction2ticketResult {
|
|
10
|
+
invoiceByTicketToken: IInvoiceByTicketToken;
|
|
11
|
+
ticketToken: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* 決済承認前の決済採用アクションを参照する
|
|
15
|
+
*/
|
|
6
16
|
declare function handlePrePublishedPaymentMethodIdOnAuthorizing(params: {
|
|
7
|
-
object: Pick<IObjectWithoutDetail, 'amount' | 'issuedThrough' | 'paymentMethod'>;
|
|
17
|
+
object: Pick<IObjectWithoutDetail, 'amount' | 'issuedThrough' | 'paymentMethod' | 'referencesOrder'>;
|
|
8
18
|
prePublishedPaymentMethodId: string;
|
|
9
19
|
transaction: Pick<ITransactionInProgress<factory.transactionType.PlaceOrder>, 'agent' | 'expires' | 'id' | 'typeOf' | 'project' | 'seller'>;
|
|
10
20
|
}): (repos: {
|
|
11
21
|
action: ActionRepo;
|
|
22
|
+
authorization: AuthorizationRepo;
|
|
23
|
+
ticket: TicketRepo;
|
|
12
24
|
transaction: TransactionRepo;
|
|
13
25
|
}) => Promise<{
|
|
14
26
|
authorizeParams?: {
|
|
15
27
|
creditCard: factory.action.authorize.paymentMethod.any.ICreditCard;
|
|
16
28
|
paymentMethodByTransaction: factory.transaction.placeOrder.IPaymentMethodByPaymentUrl;
|
|
17
29
|
pendingPaymentAgencyTransaction: PayTransactionService.IPaymentAgencyTransaction;
|
|
30
|
+
acceptAction2ticketResult?: IAcceptAction2ticketResult;
|
|
18
31
|
};
|
|
19
|
-
existingCompletedAuthorizeAction?:
|
|
32
|
+
existingCompletedAuthorizeAction?: never;
|
|
33
|
+
} | {
|
|
34
|
+
existingCompletedAuthorizeAction: {
|
|
20
35
|
id: string;
|
|
21
36
|
};
|
|
37
|
+
authorizeParams?: never;
|
|
38
|
+
acceptAction2ticketResult?: never;
|
|
22
39
|
}>;
|
|
23
40
|
export { handlePrePublishedPaymentMethodIdOnAuthorizing };
|
package/lib/chevre/service/payment/any/authorize/handlePrePublishedPaymentMethodIdOnAuthorizing.js
CHANGED
|
@@ -47,17 +47,73 @@ function recipe2paymentAgencyTransaction(actionRecipe) {
|
|
|
47
47
|
}
|
|
48
48
|
return { entryTranArgs, entryTranResult, execTranArgs, execTranResult };
|
|
49
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* 決済採用アクションから決済方法チケットを参照する
|
|
52
|
+
*/
|
|
53
|
+
function acceptAction2ticket(params) {
|
|
54
|
+
// tslint:disable-next-line:cyclomatic-complexity
|
|
55
|
+
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
56
|
+
var _a, _b;
|
|
57
|
+
const { acceptPayAction, project } = params;
|
|
58
|
+
const ticketToken = (_b = (_a = acceptPayAction.instrument) === null || _a === void 0 ? void 0 : _a.find((ticketAsInstrument) => ticketAsInstrument.typeOf === 'Ticket')) === null || _b === void 0 ? void 0 : _b.ticketToken;
|
|
59
|
+
let acceptAction2ticketResult;
|
|
60
|
+
if (typeof ticketToken === 'string' && ticketToken !== '') {
|
|
61
|
+
const ticket = (yield repos.ticket.findTickets({
|
|
62
|
+
limit: 1,
|
|
63
|
+
page: 1,
|
|
64
|
+
project: { id: { $eq: project.id } },
|
|
65
|
+
ticketToken: { $eq: ticketToken }
|
|
66
|
+
}, ['ticketToken'])).shift();
|
|
67
|
+
if (ticket === undefined) {
|
|
68
|
+
throw new factory.errors.NotFound('Ticket');
|
|
69
|
+
}
|
|
70
|
+
// 承認を参照
|
|
71
|
+
const validAuthorization = yield repos.authorization.findValidOneByCode({
|
|
72
|
+
project: { id: params.project.id },
|
|
73
|
+
code: ticket.ticketToken
|
|
74
|
+
});
|
|
75
|
+
const authorizedObject = validAuthorization.object;
|
|
76
|
+
if (authorizedObject.typeOf === 'OwnershipInfo') {
|
|
77
|
+
const { typeOfGood } = authorizedObject;
|
|
78
|
+
if (typeOfGood.typeOf === factory.service.paymentService.PaymentServiceType.CreditCard
|
|
79
|
+
|| typeOfGood.typeOf === factory.service.paymentService.PaymentServiceType.MovieTicket
|
|
80
|
+
|| typeOfGood.typeOf === factory.service.paymentService.PaymentServiceType.FaceToFace) {
|
|
81
|
+
if (acceptPayAction.object.transactionNumber !== typeOfGood.serviceOutput.paymentMethodId) {
|
|
82
|
+
// 念のため決済方法IDの一致検証
|
|
83
|
+
throw new factory.errors.Internal('acceptPayAction.object.transactionNumber must be the same as typeOfGood.serviceOutput.paymentMethodId');
|
|
84
|
+
}
|
|
85
|
+
acceptAction2ticketResult = {
|
|
86
|
+
invoiceByTicketToken: typeOfGood.serviceOutput,
|
|
87
|
+
ticketToken
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
throw new factory.errors.Argument('ticketToken', `invalid typeOfGood.typeOf ${typeOfGood.typeOf}`);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
throw new factory.errors.Argument('ticketToken', 'must be OwnershipInfo');
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return { acceptAction2ticketResult };
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* 決済承認前の決済採用アクションを参照する
|
|
103
|
+
*/
|
|
104
|
+
// tslint:disable-next-line:max-func-body-length
|
|
50
105
|
function handlePrePublishedPaymentMethodIdOnAuthorizing(params) {
|
|
51
106
|
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
52
107
|
let creditCard;
|
|
53
108
|
let pendingPaymentAgencyTransaction;
|
|
54
109
|
let existingCompletedAuthorizeAction;
|
|
110
|
+
let acceptPayAction;
|
|
55
111
|
// transaction.objectへのアクセス回避(2024-05-30~)
|
|
56
112
|
// const paymentMethodByTransaction = transaction.object.paymentMethods;
|
|
57
113
|
const paymentMethodByTransaction = yield repos.transaction.findInProgressPaymentMethodId({ id: params.transaction.id });
|
|
58
114
|
if (params.prePublishedPaymentMethodId === (paymentMethodByTransaction === null || paymentMethodByTransaction === void 0 ? void 0 : paymentMethodByTransaction.paymentMethodId)) {
|
|
59
115
|
// check existence of acceptAction when authorizing payment(2024-06-01~)
|
|
60
|
-
|
|
116
|
+
acceptPayAction = (yield repos.action.search({
|
|
61
117
|
limit: 1,
|
|
62
118
|
page: 1,
|
|
63
119
|
project: { id: { $eq: params.transaction.project.id } },
|
|
@@ -68,7 +124,7 @@ function handlePrePublishedPaymentMethodIdOnAuthorizing(params) {
|
|
|
68
124
|
transactionNumber: { $eq: params.prePublishedPaymentMethodId },
|
|
69
125
|
typeOf: { $eq: factory.assetTransactionType.Pay }
|
|
70
126
|
}
|
|
71
|
-
}, ['object', 'result'])).shift();
|
|
127
|
+
}, ['object', 'result', 'instrument'])).shift();
|
|
72
128
|
if (acceptPayAction === undefined) {
|
|
73
129
|
throw new factory.errors.NotFound(factory.actionType.AcceptAction);
|
|
74
130
|
}
|
|
@@ -113,10 +169,17 @@ function handlePrePublishedPaymentMethodIdOnAuthorizing(params) {
|
|
|
113
169
|
});
|
|
114
170
|
existingCompletedAuthorizeAction = existingCompletedAuthorizeActions.shift();
|
|
115
171
|
if (existingCompletedAuthorizeAction !== undefined) {
|
|
116
|
-
return {
|
|
172
|
+
return {
|
|
173
|
+
existingCompletedAuthorizeAction: { id: existingCompletedAuthorizeAction.id }
|
|
174
|
+
};
|
|
117
175
|
}
|
|
176
|
+
// 採用アクションのinstrumentから、決済方法チケットを参照する(2025-11-23~)
|
|
177
|
+
const { acceptAction2ticketResult } = yield acceptAction2ticket({
|
|
178
|
+
project: { id: params.transaction.project.id },
|
|
179
|
+
acceptPayAction
|
|
180
|
+
})(repos);
|
|
118
181
|
return {
|
|
119
|
-
authorizeParams: { creditCard, pendingPaymentAgencyTransaction, paymentMethodByTransaction }
|
|
182
|
+
authorizeParams: { creditCard, pendingPaymentAgencyTransaction, paymentMethodByTransaction, acceptAction2ticketResult }
|
|
120
183
|
};
|
|
121
184
|
}
|
|
122
185
|
else {
|
|
@@ -126,16 +189,13 @@ function handlePrePublishedPaymentMethodIdOnAuthorizing(params) {
|
|
|
126
189
|
});
|
|
127
190
|
}
|
|
128
191
|
/**
|
|
129
|
-
*
|
|
192
|
+
* 決済採用と決済承認の整合性を検証する
|
|
130
193
|
*/
|
|
131
194
|
function validatePaymentMethodByTransaction(params) {
|
|
132
|
-
var _a, _b;
|
|
195
|
+
var _a, _b, _c, _d;
|
|
133
196
|
const paymentServiceIdByObject = params.object.issuedThrough.id;
|
|
134
197
|
const amountByObject = params.object.amount;
|
|
135
198
|
const paymentMethodTypeByObject = params.object.paymentMethod;
|
|
136
|
-
// const paymentServiceIdByTransaction = params.paymentMethodByTransaction.issuedThrough.id;
|
|
137
|
-
// const amountByTransaction = params.paymentMethodByTransaction.paymentMethod?.amount;
|
|
138
|
-
// const paymentMethodTypeByTransaction = params.paymentMethodByTransaction.paymentMethod?.identifier;
|
|
139
199
|
const paymentServiceIdByTransaction = params.acceptObject.object.id;
|
|
140
200
|
const amountByTransaction = (_a = params.acceptObject.object.paymentMethod) === null || _a === void 0 ? void 0 : _a.amount;
|
|
141
201
|
const paymentMethodTypeByTransaction = (_b = params.acceptObject.object.paymentMethod) === null || _b === void 0 ? void 0 : _b.identifier;
|
|
@@ -151,4 +211,22 @@ function validatePaymentMethodByTransaction(params) {
|
|
|
151
211
|
if (paymentMethodTypeByObject !== paymentMethodTypeByTransaction) {
|
|
152
212
|
throw new factory.errors.Argument('object.paymentMethod', 'paymentMethod must match the target of the paymentUrl');
|
|
153
213
|
}
|
|
214
|
+
// 注文アイテム検証(2025-11-25)
|
|
215
|
+
let eventIdsMustBe = [];
|
|
216
|
+
let eventIdsByAuthorizeAction = [];
|
|
217
|
+
const orderedItemsByAcceptAction = (_c = params.acceptObject.object.serviceOutput) === null || _c === void 0 ? void 0 : _c.referencesOrder.orderedItem;
|
|
218
|
+
const orderedItemsByAuthorizeAction = (_d = params.object.referencesOrder) === null || _d === void 0 ? void 0 : _d.orderedItem;
|
|
219
|
+
if (Array.isArray(orderedItemsByAcceptAction)) {
|
|
220
|
+
eventIdsMustBe = orderedItemsByAcceptAction.map((orderedItem) => orderedItem.orderedItem.serviceOutput.reservationFor.id);
|
|
221
|
+
}
|
|
222
|
+
if (Array.isArray(orderedItemsByAuthorizeAction)) {
|
|
223
|
+
eventIdsByAuthorizeAction =
|
|
224
|
+
orderedItemsByAuthorizeAction.map((orderedItem) => orderedItem.orderedItem.serviceOutput.reservationFor.id);
|
|
225
|
+
}
|
|
226
|
+
debug('validatePaymentMethodByTransaction: eventIdsMustBe,eventIdsByAuthorizeAction:', JSON.stringify(eventIdsMustBe), JSON.stringify(eventIdsByAuthorizeAction));
|
|
227
|
+
const eventIdsMatched = eventIdsMustBe.length === eventIdsByAuthorizeAction.length
|
|
228
|
+
&& eventIdsMustBe.every((eventIdMustExist) => eventIdsByAuthorizeAction.includes(eventIdMustExist));
|
|
229
|
+
if (!eventIdsMatched) {
|
|
230
|
+
throw new factory.errors.Argument('id', `referencesOrder.orderedItem between authorze and accept not matched.`);
|
|
231
|
+
}
|
|
154
232
|
}
|
|
@@ -1,16 +1,25 @@
|
|
|
1
1
|
import * as factory from '../../../factory';
|
|
2
|
+
/**
|
|
3
|
+
* 決済方法チケットによって表現された請求情報
|
|
4
|
+
*/
|
|
5
|
+
export type IInvoiceByTicketToken = factory.authorization.IInvoiceAsPaymentMethodServiceOutput;
|
|
2
6
|
export type INotification = factory.notification.payAction.IPayAction4inform | factory.notification.refundAction.IRefundAction4inform;
|
|
3
7
|
export declare function creatPublishPaymentUrlParams(params: {
|
|
4
8
|
accountId?: string;
|
|
5
|
-
object: Pick<factory.action.authorize.paymentMethod.any.IObjectIncludingPaymentMethodDetails, 'amount' | 'creditCard' | 'issuedThrough' | 'method' | 'paymentMethod'>;
|
|
9
|
+
object: Pick<factory.action.authorize.paymentMethod.any.IObjectIncludingPaymentMethodDetails, 'amount' | 'creditCard' | 'issuedThrough' | 'method' | 'paymentMethod' | 'referencesOrder'>;
|
|
6
10
|
paymentServiceType: factory.service.paymentService.PaymentServiceType;
|
|
7
11
|
transaction: Pick<factory.transaction.ITransaction<factory.transactionType.PlaceOrder>, 'expires' | 'seller' | 'project'>;
|
|
8
12
|
transactionNumber: string;
|
|
9
13
|
location?: factory.action.trade.pay.ILocation;
|
|
10
14
|
identifier?: string;
|
|
15
|
+
/**
|
|
16
|
+
* 決済採用に使用される決済方法チケットトークン
|
|
17
|
+
*/
|
|
18
|
+
ticketToken?: string;
|
|
11
19
|
}): Pick<factory.assetTransaction.pay.IStartParamsWithoutDetail, 'agent' | 'location' | 'project' | 'recipient' | 'transactionNumber' | 'typeOf'> & {
|
|
12
20
|
object: factory.action.accept.pay.IPayObject;
|
|
13
21
|
identifier?: string;
|
|
22
|
+
instrument: factory.action.accept.pay.IInstrument[];
|
|
14
23
|
};
|
|
15
24
|
export declare function creatPayTransactionStartParams(params: {
|
|
16
25
|
accountId?: string;
|
|
@@ -26,14 +35,22 @@ export declare function creatPayTransactionStartParams(params: {
|
|
|
26
35
|
confirmationNumber: string;
|
|
27
36
|
orderNumber: string;
|
|
28
37
|
};
|
|
29
|
-
action: Pick<factory.action.authorize.
|
|
38
|
+
action: Pick<factory.action.authorize.paymentMethod.any.IAction, 'id' | 'typeOf'>;
|
|
39
|
+
/**
|
|
40
|
+
* 決済方法チケット
|
|
41
|
+
*/
|
|
42
|
+
ticketToken?: string;
|
|
30
43
|
}): factory.assetTransaction.pay.IStartParamsWithoutDetail & {
|
|
31
|
-
instrument: factory.action.trade.pay.
|
|
44
|
+
instrument: factory.action.trade.pay.IPlaceOrderRelatedInstrument[];
|
|
32
45
|
};
|
|
33
46
|
export declare function createMovieTicket(params: factory.action.trade.pay.IMovieTicket): factory.action.trade.pay.IMovieTicket;
|
|
34
47
|
export declare function createAuthorizeResult(params: {
|
|
35
48
|
object: factory.action.authorize.paymentMethod.any.IObjectIncludingPaymentMethodDetails;
|
|
36
49
|
payTransaction: Pick<factory.assetTransaction.pay.ITransaction, 'object'>;
|
|
50
|
+
/**
|
|
51
|
+
* 決済方法チケットの承認対象
|
|
52
|
+
*/
|
|
53
|
+
invoiceByTicketToken?: IInvoiceByTicketToken;
|
|
37
54
|
}): factory.action.authorize.paymentMethod.any.IResult;
|
|
38
55
|
/**
|
|
39
56
|
* 通知対象としてのアクションを最適化
|
|
@@ -22,9 +22,14 @@ function creatPublishPaymentUrlParams(params) {
|
|
|
22
22
|
const object = {
|
|
23
23
|
typeOf: params.paymentServiceType,
|
|
24
24
|
id: issuedThroughId,
|
|
25
|
-
paymentMethod
|
|
25
|
+
paymentMethod,
|
|
26
|
+
serviceOutput: {
|
|
27
|
+
typeOf: 'Invoice',
|
|
28
|
+
referencesOrder: params.object.referencesOrder
|
|
29
|
+
}
|
|
26
30
|
};
|
|
27
|
-
|
|
31
|
+
const ticketAsInstrument = (typeof params.ticketToken === 'string') ? { ticketToken: params.ticketToken, typeOf: 'Ticket' } : undefined;
|
|
32
|
+
return Object.assign(Object.assign(Object.assign({ project: { id: params.transaction.project.id, typeOf: factory.organizationType.Project }, typeOf: factory.assetTransactionType.Pay, transactionNumber: params.transactionNumber, agent: {
|
|
28
33
|
typeOf: params.transaction.seller.typeOf,
|
|
29
34
|
id: params.transaction.seller.id,
|
|
30
35
|
name: (typeof params.transaction.seller.name === 'string')
|
|
@@ -38,12 +43,13 @@ function creatPublishPaymentUrlParams(params) {
|
|
|
38
43
|
typeOf: params.transaction.seller.typeOf
|
|
39
44
|
}, object }, (typeof ((_d = params.location) === null || _d === void 0 ? void 0 : _d.typeOf) === 'string')
|
|
40
45
|
? { location: params.location }
|
|
41
|
-
: undefined), (typeof params.identifier === 'string')
|
|
46
|
+
: undefined), { instrument: (ticketAsInstrument !== undefined) ? [ticketAsInstrument] : [] }), (typeof params.identifier === 'string')
|
|
42
47
|
? { identifier: params.identifier }
|
|
43
48
|
: undefined);
|
|
44
49
|
}
|
|
45
50
|
function creatPayTransactionStartParams(params) {
|
|
46
51
|
var _a, _b, _c, _d;
|
|
52
|
+
const { ticketToken } = params;
|
|
47
53
|
let expires = moment(params.transaction.expires)
|
|
48
54
|
.add(1, 'month')
|
|
49
55
|
.toDate(); // 余裕を持って
|
|
@@ -61,9 +67,11 @@ function creatPayTransactionStartParams(params) {
|
|
|
61
67
|
? params.accountId
|
|
62
68
|
: (typeof params.object.accountId === 'string') ? params.object.accountId : undefined;
|
|
63
69
|
const movieTickets = (Array.isArray(params.object.movieTickets)) ? params.object.movieTickets.map(createMovieTicket) : undefined;
|
|
70
|
+
const ticketAsInstrument = (typeof ticketToken === 'string') ? { ticketToken, typeOf: 'Ticket' } : undefined;
|
|
64
71
|
const instrument = [
|
|
65
72
|
{ id: params.action.id, typeOf: params.action.typeOf },
|
|
66
|
-
{ orderNumber, typeOf: factory.order.OrderType.Order }
|
|
73
|
+
{ orderNumber, typeOf: factory.order.OrderType.Order },
|
|
74
|
+
...(ticketAsInstrument !== undefined) ? [ticketAsInstrument] : [] // add ticketAsInstrument(2025-11-25~)
|
|
67
75
|
];
|
|
68
76
|
return Object.assign({ project: { id: params.transaction.project.id, typeOf: factory.organizationType.Project }, typeOf: factory.assetTransactionType.Pay, transactionNumber: params.transactionNumber, agent: {
|
|
69
77
|
typeOf: params.transaction.seller.typeOf,
|
|
@@ -89,7 +97,11 @@ function creatPayTransactionStartParams(params) {
|
|
|
89
97
|
}, object: {
|
|
90
98
|
typeOf: params.paymentServiceType,
|
|
91
99
|
id: issuedThroughId,
|
|
92
|
-
paymentMethod: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ identifier: params.object.paymentMethod, amount: params.object.amount, additionalProperty: (Array.isArray(params.object.additionalProperty)) ? params.object.additionalProperty : [] }, (typeof params.object.method === 'string') ? { method: params.object.method } : undefined), (typeof params.object.name === 'string') ? { name: params.object.name } : undefined), (typeof accountId === 'string') ? { accountId } : undefined), (typeof params.object.description === 'string') ? { description: params.object.description } : undefined), (typeof params.object.fromLocation === 'string') ? { fromLocation: params.object.fromLocation } : undefined), (params.object.creditCard !== undefined) ? { creditCard: params.object.creditCard } : undefined), (Array.isArray(movieTickets)) ? { movieTickets } : undefined)
|
|
100
|
+
paymentMethod: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ identifier: params.object.paymentMethod, amount: params.object.amount, additionalProperty: (Array.isArray(params.object.additionalProperty)) ? params.object.additionalProperty : [] }, (typeof params.object.method === 'string') ? { method: params.object.method } : undefined), (typeof params.object.name === 'string') ? { name: params.object.name } : undefined), (typeof accountId === 'string') ? { accountId } : undefined), (typeof params.object.description === 'string') ? { description: params.object.description } : undefined), (typeof params.object.fromLocation === 'string') ? { fromLocation: params.object.fromLocation } : undefined), (params.object.creditCard !== undefined) ? { creditCard: params.object.creditCard } : undefined), (Array.isArray(movieTickets)) ? { movieTickets } : undefined),
|
|
101
|
+
serviceOutput: {
|
|
102
|
+
typeOf: 'Invoice',
|
|
103
|
+
referencesOrder: params.object.referencesOrder
|
|
104
|
+
}
|
|
93
105
|
}, expires: expires, purpose: {
|
|
94
106
|
typeOf: factory.order.OrderType.Order,
|
|
95
107
|
confirmationNumber,
|
|
@@ -156,6 +168,13 @@ function createAuthorizeResult(params) {
|
|
|
156
168
|
paymentStatus = factory.paymentStatusType.PaymentDue;
|
|
157
169
|
}
|
|
158
170
|
}
|
|
171
|
+
let invoiceOrderItems;
|
|
172
|
+
if (params.object.referencesOrder.typeOf === factory.order.OrderType.Order) {
|
|
173
|
+
if (Array.isArray(params.object.referencesOrder.orderedItem)) {
|
|
174
|
+
invoiceOrderItems = params.object.referencesOrder.orderedItem;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
const referencesOrder = Object.assign({ typeOf: factory.order.OrderType.Order }, (Array.isArray(invoiceOrderItems) && invoiceOrderItems.length > 0) ? { orderedItem: invoiceOrderItems } : undefined);
|
|
159
178
|
// Array対応(2023-09-02~)
|
|
160
179
|
const resultAsInvoice = {
|
|
161
180
|
accountId: (typeof ((_e = payTransactionObject.paymentMethod) === null || _e === void 0 ? void 0 : _e.accountId) === 'string')
|
|
@@ -174,7 +193,8 @@ function createAuthorizeResult(params) {
|
|
|
174
193
|
: params.object.paymentMethod,
|
|
175
194
|
totalPaymentDue: totalPaymentDue,
|
|
176
195
|
additionalProperty: (Array.isArray(params.object.additionalProperty)) ? params.object.additionalProperty : [],
|
|
177
|
-
typeOf: factory.action.authorize.paymentMethod.any.ResultType.Payment
|
|
196
|
+
typeOf: factory.action.authorize.paymentMethod.any.ResultType.Payment,
|
|
197
|
+
referencesOrder // add(2025-11-23~)
|
|
178
198
|
};
|
|
179
199
|
// tslint:disable-next-line:no-suspicious-comment
|
|
180
200
|
// TODO 保留 resultにメンバーシップを追加(2024-08-13~)
|
|
@@ -21,5 +21,9 @@ declare function fixTransactionNumberOnPublishPaymentUrl(params: {
|
|
|
21
21
|
paymentServiceType: factory.service.paymentService.PaymentServiceType;
|
|
22
22
|
}): IFixTransactionNumberOperation<{
|
|
23
23
|
transactionNumber: string;
|
|
24
|
+
/**
|
|
25
|
+
* 決済採用に使用される決済方法チケットトークン
|
|
26
|
+
*/
|
|
27
|
+
ticketToken?: string;
|
|
24
28
|
}>;
|
|
25
29
|
export { fixTransactionNumberOnPublishPaymentUrl };
|