50 lines
1.6 KiB
TypeScript
50 lines
1.6 KiB
TypeScript
import { runtimeConfig } from '../../config/runtime.js'
|
|
import { createHttpError } from '../../utils/http.js'
|
|
import type { RuntimeConfig } from '../../types/runtime-config.js'
|
|
|
|
export const OPEN_91_PROVIDER = '91kaquan'
|
|
export const OPEN_91_PLATFORM = 'kuaishou'
|
|
export const OPEN_91_SUCCESS_MESSAGE = '接口调用成功'
|
|
export const OPEN_91_DEFAULT_FAIL_CODE = 1204
|
|
export const OPEN_91_COST_EXCEED_FAIL_CODE = 1220
|
|
|
|
type Open91RuntimeConfig = RuntimeConfig['platforms']['ninetyone']
|
|
|
|
export function getOpen91Config(overrides: Partial<Open91RuntimeConfig> = {}) {
|
|
const config = {
|
|
...(runtimeConfig.platforms?.ninetyone || {}),
|
|
...overrides,
|
|
}
|
|
|
|
return {
|
|
userId: String(config.userId || '').trim(),
|
|
secret: String(config.secret || '').trim(),
|
|
version: String(config.version || '1.0').trim() || '1.0',
|
|
shopId: String(config.shopId || OPEN_91_PROVIDER).trim() || OPEN_91_PROVIDER,
|
|
shopName: String(config.shopName || '91卡券').trim() || '91卡券',
|
|
timestampToleranceSeconds: Number(config.timestampToleranceSeconds || 600) || 600,
|
|
cardsEncoding:
|
|
String(config.cardsEncoding || 'aes-256-ecb-base64').trim() || 'aes-256-ecb-base64',
|
|
}
|
|
}
|
|
|
|
export function assertOpen91Config() {
|
|
const config = getOpen91Config()
|
|
|
|
if (!config.secret) {
|
|
throw createHttpError('91卡券 secret 未配置', {
|
|
statusCode: 500,
|
|
errorCode: 'open91_missing_secret',
|
|
})
|
|
}
|
|
|
|
if (config.secret.length !== 32) {
|
|
throw createHttpError('91卡券 secret 长度必须为 32 个字符', {
|
|
statusCode: 500,
|
|
errorCode: 'open91_invalid_secret_length',
|
|
})
|
|
}
|
|
|
|
return config
|
|
}
|