修复一些错误-待测试

This commit is contained in:
yml2213
2026-05-13 21:22:09 +08:00
parent a95e48b708
commit d335b430e6
4 changed files with 57 additions and 30 deletions
@@ -52,32 +52,6 @@
"kuaishouConsumeShopId": "4269276762",
"kuaishouConsumeShopName": "稚嫩游戏交易店",
"notes": "从 khhao 订单 2612400002308936 导入"
},
{
"id": "套装-浪漫天命",
"enabled": false,
"priority": 100,
"provider": "khhao",
"platform": "kuaishou",
"shopId": "4269276762",
"khhaoShopId": "10",
"internalSkuCode": "套装-浪漫天命",
"internalSkuName": "测试1",
"externalSkuCode": "830",
"externalItemId": "830",
"externalSkuName": "测试1",
"resolvedSkuName": "测试1",
"cloudSourceKey": "default",
"cloudSkuId": 28,
"cloudSkuName": "套装-浪漫天命",
"vnKey": "1",
"autoBuyEnabled": true,
"minAssetReserve": 0,
"autoReturnNumberAfterDispatch": true,
"autoConsumeAfterDispatch": true,
"kuaishouConsumeShopId": "4269276762",
"kuaishouConsumeShopName": "稚嫩游戏交易店",
"notes": "从 khhao 订单 2612300173165561 导入"
}
]
}
@@ -142,15 +142,30 @@ export async function queryOpen91Order(payload = {}, { requestId = '' } = {}) {
})
}
return buildOpen91SuccessResponse({
const outTradeNo = buildOpen91OutTradeNo(order)
const encryptedCards = buildOpen91Cards(cardItems, config)
const responseData = {
orderNo: normalized.orderNo,
outTradeNo: buildOpen91OutTradeNo(order),
outTradeNo,
orderStatus: 20,
failCode: 0,
failReason: '',
orderCost: buildOpen91OrderCost(0),
cards: buildOpen91Cards(cardItems, config),
cards: encryptedCards,
}
logWebhook('[open-91/query]', '91卡券订单查询返回 cards 已生成', {
requestId,
orderNo: normalized.orderNo,
orderId: order.id,
outTradeNo,
cardsEncoding: config.cardsEncoding,
cardsPlain: cardItems,
cardsEncrypted: encryptedCards,
responseData,
})
return buildOpen91SuccessResponse(responseData)
}
function resolveOpen91OrderFailReason(order) {
+32 -1
View File
@@ -246,11 +246,42 @@ export function buildOpen91CardItem({ claimUrl = '', expireTime = '' } = {}) {
return {
cardNo: normalizedClaimUrl,
cardPwd: '',
expireTime: normalizeOpen91String(expireTime),
expireTime: formatOpen91ExpireTime(expireTime),
jumpLink: normalizedClaimUrl,
}
}
/** @param {unknown} value */
export function formatOpen91ExpireTime(value = '') {
const normalized = normalizeOpen91String(value)
if (!normalized) {
return ''
}
if (/^\d{10}$/.test(normalized) || /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/.test(normalized)) {
return normalized
}
const date = value instanceof Date ? value : new Date(normalized)
if (Number.isNaN(date.getTime())) {
return normalized
}
const parts = new Intl.DateTimeFormat('zh-CN', {
timeZone: 'Asia/Shanghai',
year: 'numeric',
month: '2-digit',
day: '2-digit',
hour: '2-digit',
minute: '2-digit',
second: '2-digit',
hourCycle: 'h23',
}).formatToParts(date)
const byType = Object.fromEntries(parts.map((part) => [part.type, part.value]))
return `${byType.year}-${byType.month}-${byType.day} ${byType.hour}:${byType.minute}:${byType.second}`
}
export function resolveOpen91QueryState({ tasks = [], readyTaskIds = [] } = {}) {
const normalizedTasks = Array.isArray(tasks) ? tasks : []
const readyTaskIdSet = new Set((Array.isArray(readyTaskIds) ? readyTaskIds : []).map((item) => Number(item)))
@@ -5,6 +5,7 @@ import {
buildOpen91CardItem,
buildOpen91SignSource,
encryptOpen91Cards,
formatOpen91ExpireTime,
resolveOpen91QueryState,
signOpen91Payload,
verifyOpen91Signature,
@@ -123,3 +124,9 @@ test('buildOpen91CardItem mirrors claim link into jumpLink and leaves password e
},
)
})
test('formatOpen91ExpireTime keeps 91-compatible values and normalizes dates to Beijing time', () => {
assert.equal(formatOpen91ExpireTime('2026-05-05 12:00:00'), '2026-05-05 12:00:00')
assert.equal(formatOpen91ExpireTime('1778674551'), '1778674551')
assert.equal(formatOpen91ExpireTime(new Date('2026-05-14T12:15:51.842Z')), '2026-05-14 20:15:51')
})