审查生成的支付规范化函数

来自JSON
Node 24 高级 6分钟 找出4处问题

在这段生成的支付数据规范化函数处理API输入前,对它进行审查。

接收一个JSON对象,其中id是十进制字符串,amountCents是非负安全整数,note是可选字符串;返回只包含这三个字段的JSON,保留数值0,区分语法错误与无效数据,并且绝不把不可信键应用到对象原型。

JavaScript
function normalizePayment(body) {
  try {
    const input = JSON.parse(body);
    const payment = Object.assign({}, input);

    payment.id = BigInt(Number(payment.id));
    payment.amountCents = payment.amountCents || 100;
    payment.note = payment.note || '';

    delete payment.password;
    return JSON.stringify(payment, null, 2);
  } catch {
    return JSON.stringify({});
  }
}

const body = JSON.stringify({
  id: '9007199254740993',
  amountCents: 0,
  note: '',
  token: 'internal-secret',
});
console.log(normalizePayment(body));

生成代码仅作示例,不代表任何特定模型

在试验场中打开
报告错误