UNPKG

@chevre/domain

Version:

Chevre Domain Library for Node.js

56 lines (55 loc) 3.03 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.handleAuthorizeError = handleAuthorizeError; const createDebug = require("debug"); const http_status_1 = require("http-status"); const factory = require("../../../../factory"); const debug = createDebug('chevre-domain:service:payment'); function handleAuthorizeError(error) { debug('handling creditCard authorizeError:', error); let handledError = error; if (error.name === 'GMOServiceBadRequestError') { if (Array.isArray(error.errors) && error.errors.length > 0) { const gmoErrors = error.errors; // 流量制限オーバーエラーの場合 const serviceUnavailableError = gmoErrors.find((gmoError) => { var _a; return (_a = gmoError.info) === null || _a === void 0 ? void 0 : _a.match(/^E92000001|E92000002$/); }); // オーダーID重複エラーの場合 const duplicateError = gmoErrors.find((gmoError) => { var _a; return (_a = gmoError.info) === null || _a === void 0 ? void 0 : _a.match(/^E01040010$/); }); if (serviceUnavailableError !== undefined) { handledError = new factory.errors.RateLimitExceeded(serviceUnavailableError.userMessage); } else if (duplicateError !== undefined) { handledError = new factory.errors.AlreadyInUse('payment', ['orderId'], duplicateError.userMessage); } else { const userMessages = gmoErrors.map((gmoError) => gmoError.userMessage) .join(','); handledError = new factory.errors.Argument('payment', userMessages); } } else { // その他の場合、なんらかのクライアントエラー handledError = new factory.errors.Argument('payment', 'unexpected bad request'); } } else if (error.name === 'RequestError') { // タイムアウト設定によって中止されたリクエストの場合 // const uri: string | undefined = error.requestOptions?.uri; handledError = new factory.errors.GatewayTimeout(`Gateway Timeout. name:${error.name} type:${error.type} message:${error.message}`); } else if (error.name === 'AbortError') { // タイムアウト設定によって中止されたリクエストの場合 // AbortErrorハンドリング(2024-03-27~) // { // "type": "aborted", // "message": "The user aborted a request.", // "name": "AbortError" // } handledError = new factory.errors.GatewayTimeout(`Gateway Timeout. name:${error.name} type:${error.type} message:${error.message}`); } // 決済代行側が4xxを返却した場合 if (typeof error.code === 'number' && error.code < http_status_1.INTERNAL_SERVER_ERROR) { handledError = new factory.errors.Argument('payment', `bad request code:${error.code} message:${error.message}`); } return handledError; }